已合并
【test】用 master 分支刷新 docs 目录内容 #420
meme创建于 23 天前
【test】用 master 分支刷新 docs 目录内容 #420
已合并
从已删除 :test合入到cann/cann-learning-hubtest
共 35 个文件变更+131-78
| @@ -21,7 +21,7 @@ | |||
| 21 | | 7 | 发起 PR | 向 `cann/cann-learning-hub` 的 `test` 分支发起 PR。 | | 21 | | 7 | 发起 PR | 向 `cann/cann-learning-hub` 的 `test` 分支发起 PR。 | |
| 22 | | 8 | 响应评审 & 迭代修改 | 根据评审意见在环境中修改并更新 PR。 | | 22 | | 8 | 响应评审 & 迭代修改 | 根据评审意见在环境中修改并更新 PR。 | |
| 23 | 23 | ||
| 24 | 详细规范请参见 [新课程上库与上线验收标准](./acceptance_criteria_for_new_course_submission_and_launch.md),本指南聚焦于 CANNLab 环境下的操作步骤。 | 24 | 详细规范请参见 [新课程上库与上线验收标准](./course_submission_criteria.md),本指南聚焦于 CANNLab 环境下的操作步骤。 |
| 25 | 25 | ||
| 26 | --- | 26 | --- |
| 27 | 27 | ||
| @@ -35,11 +35,12 @@ | |||
| 35 | 35 | ||
| 36 | 1. 在 [cann-learning-hub](https://gitcode.com/cann/cann-learning-hub) 仓库页面点击 **Fork**,将仓库 fork 到个人空间。 | 36 | 1. 在 [cann-learning-hub](https://gitcode.com/cann/cann-learning-hub) 仓库页面点击 **Fork**,将仓库 fork 到个人空间。 |
| 37 | 37 | ||
| 38 | <img src="./images/CANNLab_env_experience_guide/fork1.png" alt="fork1" width="700px"> | 38 | <img src="./images/CANNLab_course_development_guide/fork1.png" alt="fork1" width="700px"> |
| 39 | 39 | ||
| 40 | 2. 记下个人 fork 仓库地址,例如 `https://gitcode.com/<your_username>/cann-learning-hub.git`。 | 40 | 2. 记下个人 fork 仓库地址,例如 `https://gitcode.com/<your_username>/cann-learning-hub.git`。Fork 时选择要 Fork 的分支请选择全部。 |
| 41 | |||
| 42 | <img src="./images/CANNLab_course_development_guide/fork2.png" alt="fork2" width="700px"> | ||
| 41 | 43 | ||
| 42 | <img src="./images/CANNLab_env_experience_guide/fork2.png" alt="fork2" width="700px"> | ||
| 43 | --- | 44 | --- |
| 44 | 45 | ||
| 45 | ## 3. 创建并进入 CANNLab 云开发环境 | 46 | ## 3. 创建并进入 CANNLab 云开发环境 |
| @@ -48,26 +49,26 @@ | |||
| 48 | 49 | ||
| 49 | 打开 [cann-learning-hub](https://gitcode.com/cann/cann-learning-hub) 仓库页面,将鼠标移至 **CANNLab** 图标,在弹出选项中选择 **云开发**,使用华为云账号登录并进入开发者空间。 | 50 | 打开 [cann-learning-hub](https://gitcode.com/cann/cann-learning-hub) 仓库页面,将鼠标移至 **CANNLab** 图标,在弹出选项中选择 **云开发**,使用华为云账号登录并进入开发者空间。 |
| 50 | 51 | ||
| 51 | <img src="./images/CANNLab_env_experience_guide/CANNLab.png"> | 52 | <img src="./images/CANNLab_course_development_guide/CANNLab.png"> |
| 52 | 53 | ||
| 53 | <img src="./images/CANNLab_env_experience_guide/CANNLab2.png" alt="CANNLab2" width="250px"> | 54 | <img src="./images/CANNLab_course_development_guide/CANNLab2.png" alt="CANNLab2" width="250px"> |
| 54 | 55 | ||
| 55 | > CANNLab 提供两类环境:**云开发环境**(可申请 A2/A3)与 **950 尝鲜体验环境**(可申请 A5)。请根据课程目标硬件选择对应环境。本指南以云开发环境为例。 | 56 | > CANNLab 提供两类环境:**云开发环境**(可申请 A2/A3)与 **950 尝鲜体验环境**(可申请 A5)。请根据课程支持的目标硬件选择对应环境。本指南以云开发环境为例。 |
| 56 | 57 | ||
| 57 | ### 3.2 创建 NPU 环境 | 58 | ### 3.2 创建 NPU 环境 |
| 58 | 59 | ||
| 59 | 进入页面后点击 **创建** 按钮: | 60 | 进入页面后点击 **创建** 按钮: |
| 60 | 61 | ||
| 61 | <img src="./images/CANNLab_env_experience_guide/create.png"> | 62 | <img src="./images/CANNLab_course_development_guide/create.png"> |
| 62 | 63 | ||
| 63 | 按课程目标硬件选择规格配置(以 A2 为例): | 64 | 按课程目标硬件选择规格配置(以 A2 为例): |
| 64 | 65 | ||
| 65 | <img src="./images/CANNLab_env_experience_guide/create_npu.png" alt="create_npu" width="500px"> | 66 | <img src="./images/CANNLab_course_development_guide/select_npu_env.png" alt="select_npu_env" width="500px"> |
| 66 | 67 | ||
| 67 | 68 | ||
| 68 | 点击 **创建** 后,点击 **开机** 启动环境: | 69 | 点击 **创建** 后,点击 **开机** 启动环境: |
| 69 | 70 | ||
| 70 | <img src="./images/CANNLab_env_experience_guide/start.png"> | 71 | <img src="./images/CANNLab_course_development_guide/start.png"> |
| 71 | 72 | ||
| 72 | > 注意:如果开机时提示资源不足,说明当前时间段使用人数较多,可稍后再尝试。 | 73 | > 注意:如果开机时提示资源不足,说明当前时间段使用人数较多,可稍后再尝试。 |
| 73 | 74 | ||
| @@ -75,11 +76,11 @@ | |||
| 75 | 76 | ||
| 76 | 环境开机后,点击 **WebIDE** 进入环境(也支持 VS Code 连接): | 77 | 环境开机后,点击 **WebIDE** 进入环境(也支持 VS Code 连接): |
| 77 | 78 | ||
| 78 | <img src="./images/CANNLab_env_experience_guide/webIDE.png"> | 79 | <img src="./images/CANNLab_course_development_guide/webIDE.png"> |
| 79 | 80 | ||
| 80 | 进入后界面类似 VS Code,支持源代码管理、扩展安装、终端等操作: | 81 | 进入后界面类似 VS Code,支持源代码管理、扩展安装、终端等操作: |
| 81 | 82 | ||
| 82 | <img src="./images/CANNLab_env_experience_guide/windows.png"> | 83 | <img src="./images/CANNLab_course_development_guide/windows.png"> |
| 83 | 84 | ||
| 84 | --- | 85 | --- |
| 85 | 86 | ||
| @@ -89,7 +90,7 @@ | |||
| 89 | 90 | ||
| 90 | 在 WebIDE 中通过菜单 **Terminal → New Terminal** 打开集成终端。 | 91 | 在 WebIDE 中通过菜单 **Terminal → New Terminal** 打开集成终端。 |
| 91 | 92 | ||
| 92 | <img src="./images/CANNLab_env_experience_guide/terminal.png"> | 93 | <img src="./images/CANNLab_course_development_guide/terminal.png"> |
| 93 | 94 | ||
| 94 | ### 4.2 克隆个人 fork 仓库 | 95 | ### 4.2 克隆个人 fork 仓库 |
| 95 | 96 | ||
| @@ -117,11 +118,11 @@ git checkout test | |||
| 117 | 118 | ||
| 118 | 克隆完成后,在 WebIDE 中使用快捷键 `Ctrl+K Ctrl+O` 打开工程,在弹出窗口输入 `/mnt/workspace/gitCode/` 目录: | 119 | 克隆完成后,在 WebIDE 中使用快捷键 `Ctrl+K Ctrl+O` 打开工程,在弹出窗口输入 `/mnt/workspace/gitCode/` 目录: |
| 119 | 120 | ||
| 120 | <img src="./images/CANNLab_env_experience_guide/openfile.png"> | 121 | <img src="./images/CANNLab_course_development_guide/openfile.png"> |
| 121 | 122 | ||
| 122 | 选择当前窗口打开: | 123 | 选择当前窗口打开: |
| 123 | 124 | ||
| 124 | <img src="./images/CANNLab_env_experience_guide/newwin.png"> | 125 | <img src="./images/CANNLab_course_development_guide/newwin.png"> |
| 125 | 126 | ||
| 126 | 即可在左侧资源管理器中看到自己的 fork 仓库目录结构,直接在其中开发。 | 127 | 即可在左侧资源管理器中看到自己的 fork 仓库目录结构,直接在其中开发。 |
| 127 | 128 | ||
| @@ -194,7 +195,7 @@ tutorials/ | |||
| 194 | - **+Code**:新增 code cell,用于添加可执行代码。 | 195 | - **+Code**:新增 code cell,用于添加可执行代码。 |
| 195 | - **+Markdown**:新增 markdown cell,用于添加文字说明、图片、表格等。 | 196 | - **+Markdown**:新增 markdown cell,用于添加文字说明、图片、表格等。 |
| 196 | 197 | ||
| 197 | <img src="./images/CANNLab_env_experience_guide/code.png"> | 198 | <img src="./images/CANNLab_course_development_guide/code.png"> |
| 198 | 199 | ||
| 199 | --- | 200 | --- |
| 200 | 201 | ||
| @@ -229,11 +230,11 @@ git push origin test | |||
| 229 | 230 | ||
| 230 | 进入环境后,点击页签右侧的加号: | 231 | 进入环境后,点击页签右侧的加号: |
| 231 | 232 | ||
| 232 | <img src="./images/test_branch_course_experience_guide/new.png" width="600"> | 233 | <img src="./images/CANNLab_course_development_guide/new.png" width="600"> |
| 233 | 234 | ||
| 234 | 在弹出菜单中选择打开 Terminal 终端界面: | 235 | 在弹出菜单中选择打开 Terminal 终端界面: |
| 235 | 236 | ||
| 236 | <img src="./images/test_branch_course_experience_guide/new_terminal.png" width="800"> | 237 | <img src="./images/CANNLab_course_development_guide/new_terminal.png" width="800"> |
| 237 | 238 | ||
| 238 | 在终端中执行以下命令,克隆个人 fork 仓库并切换到 `test` 分支: | 239 | 在终端中执行以下命令,克隆个人 fork 仓库并切换到 `test` 分支: |
| 239 | 240 | ||
| @@ -247,7 +248,7 @@ git checkout test | |||
| 247 | 248 | ||
| 248 | 从左侧菜单栏点击进入 `cann-learning-hub` 仓库,即可在 Notebook 中查看并打开个人 fork 仓库 `test` 分支下的新增课程内容: | 249 | 从左侧菜单栏点击进入 `cann-learning-hub` 仓库,即可在 Notebook 中查看并打开个人 fork 仓库 `test` 分支下的新增课程内容: |
| 249 | 250 | ||
| 250 | <img src="./images/test_branch_course_experience_guide/cann-learning-hub_contents.png" width="400"> | 251 | <img src="./images/CANNLab_course_development_guide/cann-learning-hub_contents.png" width="400"> |
| 251 | 252 | ||
| 252 | #### 7.1.2 在 CANNLab 环境中打开 | 253 | #### 7.1.2 在 CANNLab 环境中打开 |
| 253 | 254 | ||
| @@ -289,9 +290,9 @@ EOF | |||
| 289 | 290 | ||
| 290 | 完成上述配置后,**关机并重新开机**,使内核与环境变量配置生效。开机后通过 WebIDE 重新进入环境,打开每个 `.ipynb` 文件,在右上角 **选择内核**,选择 **Python 3.11.4 (CANN)**: | 291 | 完成上述配置后,**关机并重新开机**,使内核与环境变量配置生效。开机后通过 WebIDE 重新进入环境,打开每个 `.ipynb` 文件,在右上角 **选择内核**,选择 **Python 3.11.4 (CANN)**: |
| 291 | 292 | ||
| 292 | <img src="./images/CANNLab_env_experience_guide/kernel1.png"> | 293 | <img src="./images/CANNLab_course_development_guide/kernel1.png"> |
| 293 | 294 | ||
| 294 | <img src="./images/CANNLab_env_experience_guide/kernel2.png"> | 295 | <img src="./images/CANNLab_course_development_guide/kernel2.png"> |
| 295 | 296 | ||
| 296 | 内核选择完成后,从第一个 code cell 开始依次点击运行按钮,确认: | 297 | 内核选择完成后,从第一个 code cell 开始依次点击运行按钮,确认: |
| 297 | 298 | ||
| @@ -301,9 +302,9 @@ EOF | |||
| 301 | 302 | ||
| 302 | 执行 code cell 及成功结果示意: | 303 | 执行 code cell 及成功结果示意: |
| 303 | 304 | ||
| 304 | <img src="./images/CANNLab_env_experience_guide/run_code_cell.png"> | 305 | <img src="./images/CANNLab_course_development_guide/run_code_cell.png"> |
| 305 | 306 | ||
| 306 | <img src="./images/CANNLab_env_experience_guide/run_code_cell_success.png"> | 307 | <img src="./images/CANNLab_course_development_guide/run_code_cell_success.png"> |
| 307 | 308 | ||
| 308 | ### 7.3 验证记录 | 309 | ### 7.3 验证记录 |
| 309 | 310 | ||
| @@ -349,7 +350,7 @@ EOF | |||
| 349 | 350 | ||
| 350 | ### 8.2 PR 准入自检 | 351 | ### 8.2 PR 准入自检 |
| 351 | 352 | ||
| 352 | 提交 PR 前请对照 [PR 准入 Checklist](./acceptance_criteria_for_new_course_submission_and_launch.md#6-pr-准入-checklist) 完成自检,重点关注: | 353 | 提交 PR 前请对照 [PR 准入 Checklist](./course_submission_criteria.md#6-pr-准入-checklist) 完成自检,重点关注: |
| 353 | 354 | ||
| 354 | - 课程目录位置、命名规范是否合规。 | 355 | - 课程目录位置、命名规范是否合规。 |
| 355 | - 主 README 是否包含硬件型号与在线体验环境说明。 | 356 | - 主 README 是否包含硬件型号与在线体验环境说明。 |
| @@ -419,5 +420,5 @@ git push origin test | |||
| 419 | | 文档 | 说明 | | 420 | | 文档 | 说明 | |
| 420 | | --- | --- | | 421 | | --- | --- | |
| 421 | | [贡献指南](../CONTRIBUTION.md) | 项目整体贡献流程与要求。 | | 422 | | [贡献指南](../CONTRIBUTION.md) | 项目整体贡献流程与要求。 | |
| 422 | | [新课程上库与上线验收标准](./acceptance_criteria_for_new_course_submission_and_launch.md) | 课程目录结构、Notebook 内容、运行验证等准入要求与 PR Checklist。 | | 423 | | [新课程上库与上线验收标准](./course_submission_criteria.md) | 课程目录结构、Notebook 内容、运行验证等准入要求与 PR Checklist。 | |
| 423 | | [CANNLab 环境体验指南](./CANNLab_env_experience_guide.md) | CANNLab 云开发环境的体验流程(面向学习者)。 | | 424 | | [CANNLab 环境体验指南](./CANNLab_env_experience_guide.md) | CANNLab 云开发环境的体验流程(面向学习者)。 | |
| @@ -27,18 +27,20 @@ CANNLab 提供两种即开即用的 NPU 体验环境。打开 [cann-learning-hub | |||
| 27 | 27 | ||
| 28 | <img src="./images/CANNLab_env_experience_guide/create.png"> | 28 | <img src="./images/CANNLab_env_experience_guide/create.png"> |
| 29 | 29 | ||
| 30 | 云开发环境支持创建 CPU 环境和 NPU 环境。这里以在 A2 环境上体验 Ascend C 系列课程为例,选择创建 NPU 环境,规格配置如下: | 30 | 云开发环境支持创建 CPU 环境和 NPU 环境。这里以在 A2 环境上体验 Ascend C 系列课程为例,创建 NPU 环境,规格配置如下: |
| 31 | 31 | ||
| 32 | - **开发环境名称**:自行命名。 | 32 | - **开发环境名称**:自行命名。 |
| 33 | - **处理器类型**:昇腾 NPU。 | 33 | - **处理器类型**:昇腾 NPU。 |
| 34 | - **模板名称**:`cann_master-py3.12-A2-arm-20260514`。 | 34 | - **模板名称**:`cann_9.0.0 py3.11-A2-arm`。 |
| 35 | - **规格**:`1*NPU 910B3 16vCPUs 32GiB`。 | 35 | - **规格**:`1*NPU 910B3 16vCPUs 32GiB`。 |
| 36 | 36 | ||
| 37 | <img src="./images/CANNLab_env_experience_guide/create_npu.png" alt="create_npu" width="500px"> | 37 | > 注意:不同课程的规格配置可能会有所不同,开发者需要根据要体验的课程 `README.md` 中说明的规格参数配置并创建对应的 NPU 环境,否则可能会出现未知错误。 |
| 38 | 38 | ||
| 39 | 点击 **创建** 按钮后,可以看到 NPU 环境已创建。点击 **开机** 按钮启动环境: | 39 | <img src="./images/CANNLab_env_experience_guide/select_npu_env.png" alt="select_npu_env" width="500px"> |
| 40 | 40 | ||
| 41 | <img src="./images/CANNLab_env_experience_guide/start.png"> | 41 | 点击 **创建** 按钮后,可以看到 NPU 环境已创建。自动开机启动环境: |
| 42 | |||
| 43 | <img src="./images/CANNLab_env_experience_guide/start.png" alt="start" width="700px"> | ||
| 42 | 44 | ||
| 43 | > 注意:如果开机时提示资源不足,说明当前时间段使用人数较多,可稍后再尝试。 | 45 | > 注意:如果开机时提示资源不足,说明当前时间段使用人数较多,可稍后再尝试。 |
| 44 | 46 | ||
| @@ -50,30 +52,14 @@ CANNLab 提供两种即开即用的 NPU 体验环境。打开 [cann-learning-hub | |||
| 50 | 52 | ||
| 51 | <img src="./images/CANNLab_env_experience_guide/windows.png"> | 53 | <img src="./images/CANNLab_env_experience_guide/windows.png"> |
| 52 | 54 | ||
| 53 | ### 2.2 安装 Jupyter 扩展 | 55 | ### 2.2 体验教程 |
| 54 | 56 | ||
| 55 | 在 VS Code / CodeArts IDE 中打开 `.ipynb` 文件并执行 Jupyter Notebook 的 code cell,一般需要具备以下扩展: | 57 | 环境创建并连接成功后,即可打开仓库中的教程文件进行体验。下面以 `cann-learning-hub/tutorials/ascendc_operator_development/02_AscendC_basic/02.02_HelloWorld.ipynb` 为例: |
| 56 | 58 | ||
| 57 | - **Python 扩展**:用于识别 Python 环境和解释器。 | 59 | 点击窗口左侧菜单栏中的 **资源管理器**,在仓库目录中找到并打开 **02.02_HelloWorld.ipynb** 教程文件。打开后,在 Notebook 右上角点击 **选择内核**,选择 Python Kernel,例如 **Python 3.11.4**: |
| 58 | - **Jupyter 扩展**:用于打开和运行 `.ipynb` 文件,并管理 kernel。 | ||
| 59 | - **Jupyter Notebook Renderers 扩展**:用于渲染表格、图片、Markdown、HTML、图表等输出内容。 | ||
| 60 | |||
| 61 | 当前环境已安装 **Python 扩展** 和 **Jupyter Notebook Renderers 扩展**,还需要手动安装 **Jupyter 扩展**。点击左侧菜单栏中的 **扩展**,搜索 **Jupyter**,然后点击 **安装**: | ||
| 62 | |||
| 63 | <img src="./images/CANNLab_env_experience_guide/jupyter_install.png"> | ||
| 64 | |||
| 65 | ### 2.3 体验教程 | ||
| 66 | |||
| 67 | 完成扩展安装后,即可打开仓库中的教程文件进行体验。下面以 `cann-learning-hub/tutorials/ascendc_operator_development/02_AscendC_basic/02.02_HelloWorld.ipynb` 为例: | ||
| 68 | |||
| 69 | 点击窗口左侧菜单栏中的 **资源管理器**,在仓库目录中找到并打开 **02.02_HelloWorld.ipynb** 教程文件。打开后,在 Notebook 右上角点击 **选择内核**,选择 Python Kernel,例如 **Python 3.12.9**: | ||
| 70 | 60 | ||
| 71 | <img src="./images/CANNLab_env_experience_guide/select_kernel.png"> | 61 | <img src="./images/CANNLab_env_experience_guide/select_kernel.png"> |
| 72 | 62 | ||
| 73 | 内核选择完成后,可以看到 Notebook 右上角已显示 **Python 3.12.9**。此时点击 code cell 左侧的运行按钮,即可正常执行单元格代码: | 63 | 内核选择完成后,可以看到 Notebook 右上角已显示 **Python 3.11.4**。此时点击 code cell 左侧的运行按钮,即可正常执行单元格代码,code cell 执行成功后,页面会显示对应的运行结果: |
| 74 | 64 | ||
| 75 | <img src="./images/CANNLab_env_experience_guide/run_code_cell.png" > | 65 | <img src="./images/CANNLab_env_experience_guide/run_code_cell.png" > |
| 76 | |||
| 77 | code cell 执行成功后,页面会显示对应的运行结果: | ||
| 78 | |||
| 79 | <img src="./images/CANNLab_env_experience_guide/run_code_cell_success.png"> | ||
| @@ -1,12 +1,12 @@ | |||
| 1 | # docs 文档说明 | 1 | # docs 文档说明 |
| 2 | 2 | ||
| 3 | 本目录用于存放 CANN Learning Hub 的流程规范、环境体验指南与课程开发指南,便于课程开发者、评审者和学习者快速定位所需文档。 | 3 | 本目录用于存放 CANN Learning Hub 的流程规范、环境体验指南,便于课程开发者、评审者和学习者快速定位所需文档。 |
| 4 | 4 | ||
| 5 | ## 文档列表 | 5 | ## 文档列表 |
| 6 | 6 | ||
| 7 | | 文档 | 介绍 | 适用对象 | | 7 | | 文档 | 介绍 | 适用对象 | |
| 8 | | --- | --- | --- | | 8 | | --- | --- | --- | |
| 9 | | [新课程上库与上线验收标准](./acceptance_criteria_for_new_course_submission_and_launch.md) | 新课程上库与上线验收标准,说明课程从大纲设计、内容开发、PR 评审、test 分支内测到 master 分支发布的完整流程,并给出课程目录结构、README、Notebook 内容、答案与源码目录、运行验证等准入要求。文末提供 PR 准合入 Checklist,便于自检和评审。 | 课程开发者、课程组组长、committer、Reviewer、Maintainer | | 9 | | [新课程上库与上线验收标准](./course_submission_criteria.md) | 新课程上库与上线验收标准,说明课程从大纲设计、内容开发、PR 评审、test 分支内测到 master 分支发布的完整流程,并给出课程目录结构、README、Notebook 内容、答案与源码目录、运行验证等准入要求。文末提供 PR 准合入 Checklist 与课程 PPT 课件上传规范附录,便于自检和评审。 | 课程开发者、课程组组长、committer、Reviewer、Maintainer | |
| 10 | | [基于 CANNLab 环境开发与提交课程指南](./CANNLab_course_development_guide.md) | 基于 CANNLab 云开发环境完成课程开发、运行验证与 PR 提交的完整流程指南,涵盖环境创建、仓库克隆、课程开发、验证与 PR 提交等步骤。 | 课程开发者、社区贡献者 | | ||
| 11 | | [CANNLab 环境体验指南](./CANNLab_env_experience_guide.md) | CANNLab 云开发环境体验指南,介绍如何通过 CANNLab 进入开发者空间、创建并启动 A2/A3 NPU 云开发环境、使用 WebIDE 连接环境、安装 Jupyter 扩展,以及打开 `.ipynb` 教程进行体验。 | 希望在线运行和体验教程的学习者、课程验证人员 | | 10 | | [CANNLab 环境体验指南](./CANNLab_env_experience_guide.md) | CANNLab 云开发环境体验指南,介绍如何通过 CANNLab 进入开发者空间、创建并启动 A2/A3 NPU 云开发环境、使用 WebIDE 连接环境、安装 Jupyter 扩展,以及打开 `.ipynb` 教程进行体验。 | 希望在线运行和体验教程的学习者、课程验证人员 | |
| 12 | | [Test 分支课程体验指导书](./test_branch_course_experience_guide.md) | 介绍如何在 gitcode 在线 Notebook 体验环境中切换到 test 分支,体验内测课程内容。 | 评审团队、课程验证人员、内测体验者 | | 11 | | [基于 CANNLab 环境开发与提交课程指南](./CANNLab_course_development_guide.md) | 面向课程开发者,介绍如何基于 CANNLab 云开发环境完成课程开发、运行验证与 PR 提交的完整流程,包括 Fork 仓库、创建环境、克隆代码、开发 Notebook、提交推送、运行验证和发起 PR 等步骤。 | 课程开发者、课程组组长、committer | |
| 12 | | [Test 分支课程体验指导书](./test_branch_course_experience_guide.md) | 介绍如何在 CANNLab 在线体验环境中切换到 test 分支并体验课程,包括打开在线环境、克隆仓库、切换分支等操作步骤。 | 希望在线体验 test 分支课程的学习者 | | ||
Rdocs/acceptance_criteria_for_new_course_submission_and_launch.md→docs/course_submission_criteria.md+89-23
| @@ -11,13 +11,12 @@ | |||
| 11 | | 步骤 | 流程节点 | 责任方 | 验收关注点 | | 11 | | 步骤 | 流程节点 | 责任方 | 验收关注点 | |
| 12 | | --- | --- | --- | --- | | 12 | | --- | --- | --- | --- | |
| 13 | | 1 | 课程小组进行课程大纲设计 | 课程组 | 明确课程主题、章节规划、学习路径和目标学习对象。 | | 13 | | 1 | 课程小组进行课程大纲设计 | 课程组 | 明确课程主题、章节规划、学习路径和目标学习对象。 | |
| 14 | | 2 | 课程大纲提评审,阐述能力的分层设计逻辑 | 课程组、committer | 说明初级、中级、高级能力递进关系,以及各阶段考核方式。 | | 14 | | 2 | 课程大纲提评审,阐述能力的分层设计逻辑 | 课程组 | 说明初级、中级、高级能力递进关系,以及各阶段考核方式。 | |
| 15 | | 3 | 课程组内开发分工完成教程内容 | 课程组 | 按照大纲完成 README、章节 notebook、answer、images、src 等内容建设。 | | 15 | | 3 | 课程组内开发分工完成教程内容 | 课程组 | 按照大纲完成 README、章节 notebook、answer、images、src 等内容建设。 | |
| 16 | | 4 | 提 PR 到 `cann-learning-hub/test` 分支 | 课程组内容开发者 | PR 内容完整,目录结构、命名、Notebook 内容和运行验证满足准入要求。 | | 16 | | 4 | 提 PR 到 `cann-learning-hub/test` 分支 | 课程组内容开发者 | PR 内容完整,目录结构、命名、Notebook 内容和运行验证满足准入要求。 | |
| 17 | | 5 | 课程组组长 & committer评审 PR | 课程组组长、committer | 依据准合入 Checklist 检查课程结构、内容质量、代码可执行性和能力递进设计。 | | 17 | | 5 | 达到准入标准,合入 test 分支 | 课程组组长、committer | 所有硬性验收项通过,条件项结论明确后合入 test 分支。 | |
| 18 | | 6 | 达到准入标准,合入 test 分支 | 课程组组长、committer | 所有硬性验收项通过,条件项结论明确后合入 test 分支。 | | 18 | | 6 | test 分支上组织内测,评审团队体验课程,提出 issue,课程组长分配处理 issue,完成闭环 | 评审团队、课程组长 | 完成在线体验、运行验证和问题反馈;issue 需要明确责任人并完成闭环。 | |
| 19 | | 7 | test 分支上组织内测,布道师团队体验课程,提 issue 闭环问题 | 课程小组、布道师团队 | 完成在线体验、运行验证和问题反馈;issue 需要明确责任人。 | | 19 | | 7 | 合入 master 分支 | Maintainer | test 分支内测问题闭环后,将课程内容合入 master 分支,对外发布。 | |
| 20 | | 8 | 合入 master 分支 | Maintainer | test 分支内测问题闭环后,将课程内容合入 master 分支,对外发布。 | | ||
| 21 | 20 | ||
| 22 | ## 2. 课程大纲与能力分层设计规范 | 21 | ## 2. 课程大纲与能力分层设计规范 |
| 23 | 22 | ||
| @@ -68,8 +67,38 @@ tutorials/ | |||
| 68 | 67 | ||
| 69 | ### 3.2 主 README.md 要求 | 68 | ### 3.2 主 README.md 要求 |
| 70 | 69 | ||
| 71 | - 包含教程整体简介、适用对象、整体学习目标。 | 70 | 主 `README.md` 是课程的入口文档,必须包含以下内容: |
| 72 | - 必须**说明支持或已验证的硬件型号**。 | 71 | |
| 72 | 1. **课程整体简介**:介绍课程内容与整体学习目标。 | ||
| 73 | 2. **课程适用学习人群**:说明学习者需要具备的基础,如前置学习课程、知识储备等。 | ||
| 74 | 3. **课程支持的硬件产品**:列出课程支持且验证的全部硬件型号。若多个硬件产品均支持,需全部列出,让开发者明确自己手头的哪些产品可以跑通课程。 | ||
| 75 | 4. **已验证的在线体验环境**:列举课程已经验证跑通无报错的在线体验环境,可包括: | ||
| 76 | - gitcode 在线体验 notebook | ||
| 77 | - CANNLab 云开发环境 | ||
| 78 | - CANNLab 950 尝鲜体验环境 | ||
| 79 | - CANNLab CPU 模拟环境 | ||
| 80 | |||
| 81 | 各环境在主 README 中的标注要求: | ||
| 82 | - **gitcode 在线体验 notebook**:在线体验链接由 committer 统一配置,课程开发时填写 `-` 即可。 | ||
| 83 | - **CANNLab 相关环境**:必须附上 [CANNLab 环境体验指南](./CANNLab_env_experience_guide.md) 链接,并**明确指定 NPU 镜像模板名称和打开后的 Python 内核版本**。 | ||
| 84 | |||
| 85 | 环境验证要求: | ||
| 86 | - 所有课程必须在 CANNLab 环境开箱即用,能够运行起来无报错。验证所用的 CANNLab 环境必须是外部开发者可创建的环境,**不得使用内部用户的 CANNLab 环境或本地环境进行验证**。 | ||
| 87 | - 算子课程和部分模型较小(<0.5B)的课程,同时要求在 cann-learning-hub notebook 可直接运行。 | ||
| 88 | - **【关键】创建 CANNLab 环境时,必须明确指定 NPU 镜像模板名称和打开后的 Python 内核版本**,否则开发者无法正确复现运行环境,此项为硬性验收项。 | ||
| 89 | 5. **课程章节目录**:分章节用表格展示课程章节名称,并给出跳转链接。参考写法如下: | ||
| 90 | |||
| 91 | ```markdown | ||
| 92 | ### 第一章:章节名称 | ||
| 93 | |||
| 94 | | Notebook | Link | 状态 | | ||
| 95 | | -- | -- | -- | | ||
| 96 | | 1.1 章节介绍 | - | ✅ 已发布 | | ||
| 97 | | 1.2 小节名称 | - | ✅ 已发布 | | ||
| 98 | | 1.3 章节实践 | - | ✅ 已发布 | | ||
| 99 | ``` | ||
| 100 | |||
| 101 | > 在线体验链接由 committer 统一配置,课程开发时 Link 列填写 `-` 即可。 | ||
| 73 | 102 | ||
| 74 | ### 3.3 单个章节的结构要求 | 103 | ### 3.3 单个章节的结构要求 |
| 75 | 104 | ||
| @@ -93,6 +122,8 @@ tutorials/ | |||
| 93 | 122 | ||
| 94 | ## 4. Notebook 内容验收标准 | 123 | ## 4. Notebook 内容验收标准 |
| 95 | 124 | ||
| 125 | - **同一课程内各 notebook 的编写风格应保持一致**。建议图片和表格全部页面居左对齐,使用 HTML `<table>` 格式可以实现表格居左对齐。 | ||
| 126 | |||
| 96 | - 必须包含**小节概述、教程具体内容、课后练习或课后实践**三个部分。 | 127 | - 必须包含**小节概述、教程具体内容、课后练习或课后实践**三个部分。 |
| 97 | 128 | ||
| 98 | - 教程具体内容要求: | 129 | - 教程具体内容要求: |
| @@ -114,15 +145,20 @@ tutorials/ | |||
| 114 | 145 | ||
| 115 | 课程**上线前必须验证目标硬件对应的在线体验环境**,确保学习者可以直接打开 notebook 完成课程操作。 | 146 | 课程**上线前必须验证目标硬件对应的在线体验环境**,确保学习者可以直接打开 notebook 完成课程操作。 |
| 116 | 147 | ||
| 117 | 当前体验环境包括两类: | 148 | 课程内容开发者可参考 [基于 CANNLab 环境开发与提交课程指南](./CANNLab_course_development_guide.md) 进行开发与验证。 |
| 118 | 149 | ||
| 119 | - learning-hub 的 notebook 在线体验环境。 | 150 | 当前在线体验环境包括: |
| 120 | - CANNLab,包括 910B/910C 云开发环境以及 950 尝鲜体验环境。 | ||
| 121 | 151 | ||
| 122 | | 适用课程 | 目标硬件 | 体验环境 | 准入要求 | | 152 | - gitcode 在线体验 notebook |
| 123 | | --- | --- | --- | --- | | 153 | - CANNLab 云开发环境 |
| 124 | | 所有课程 | A2 / A3 | learning-hub 的 notebook 在线体验环境;CANNLab 的 910B/910C 云开发环境 | 支持 A2/A3 硬件的课程,必须保证在 learning-hub 的 notebook 在线体验环境和 CANNLab 的云开发环境中均可运行且不报错。 | | 154 | - CANNLab 950 尝鲜体验环境 |
| 125 | | 所有课程 | A5 | CANNLab 的 950 尝鲜体验环境 | 支持 A5 硬件的课程,必须保证在 CANNLab 的 950 尝鲜体验环境中可运行且不报错。 | | 155 | - CANNLab CPU 模拟环境 |
| 156 | |||
| 157 | 环境验证要求: | ||
| 158 | |||
| 159 | - 所有课程必须在 CANNLab 环境开箱即用,能够运行起来无报错。验证所用的 CANNLab 环境必须是外部开发者可创建的环境,**不得使用内部用户的 CANNLab 环境或本地环境进行验证**。 | ||
| 160 | - 算子课程和部分模型较小(<0.5B)的课程,同时要求在 cann-learning-hub notebook 可直接运行。 | ||
| 161 | - **【关键】创建 CANNLab 环境时,必须明确指定 NPU 镜像模板名称和打开后的 Python 内核版本**,否则开发者无法正确复现运行环境,此项为硬性验收项。 | ||
| 126 | 162 | ||
| 127 | ## 6. PR 准入 Checklist | 163 | ## 6. PR 准入 Checklist |
| 128 | 164 | ||
| @@ -134,18 +170,48 @@ tutorials/ | |||
| 134 | | 4 | 命名规范 | 课程目录、章节目录、文件名均为英文、数字、下划线或点号,不包含中文。 | □ 通过 □ 不通过 | | 170 | | 4 | 命名规范 | 课程目录、章节目录、文件名均为英文、数字、下划线或点号,不包含中文。 | □ 通过 □ 不通过 | |
| 135 | | 5 | 章节命名 | 章节目录命名符合 `0n_abc` 格式。 | □ 通过 □ 不通过 | | 171 | | 5 | 章节命名 | 章节目录命名符合 `0n_abc` 格式。 | □ 通过 □ 不通过 | |
| 136 | | 6 | 小节命名 | 小节 notebook 命名符合 `0n.0m_abc.ipynb` 格式。 | □ 通过 □ 不通过 | | 172 | | 6 | 小节命名 | 小节 notebook 命名符合 `0n.0m_abc.ipynb` 格式。 | □ 通过 □ 不通过 | |
| 137 | | 7 | 主 README | 课程根目录包含 `README.md`,并包含教程整体简介、适用对象、整体学习目标、支持或已验证的硬件型号。 | □ 通过 □ 不通过 | | 173 | | 7 | 主 README | 包含课程整体简介、适用学习人群(含基础要求与前置课程)、支持的硬件产品、已验证的在线体验环境、课程章节目录表格。 | □ 通过 □ 不通过 | |
| 138 | | 8 | 章节目录 | 每个章节包含 `answer`、`images`、`src` 目录。 | □ 通过 □ 不通过 | | 174 | | 8 | 章节目录 | 每个章节包含 `answer`、`images`、`src` 目录。 | □ 通过 □ 不通过 | |
| 139 | | 9 | 章节概述 | 每个章节第一小节为章节概述,且包含前置要求、章节目标、章节内容和小节跳转链接。 | □ 通过 □ 不通过 | | 175 | | 9 | 章节概述 | 每个章节第一小节为章节概述,且包含前置要求、章节目标、章节内容和小节跳转链接。 | □ 通过 □ 不通过 | |
| 140 | | 10 | 章节实践 | 每个章节最后一小节为章节实践,且至少包含一道综合实践题。 | □ 通过 □ 不通过 | | 176 | | 10 | 章节实践 | 每个章节最后一小节为章节实践,且至少包含一道综合实践题。 | □ 通过 □ 不通过 | |
| 141 | | 11 | 普通小节 | 每个普通小节包含小节概述、教程内容、课后练习或课后实践。 | □ 通过 □ 不通过 | | 177 | | 11 | 普通小节 | 每个普通小节包含小节概述、教程内容、课后练习或课后实践。 | □ 通过 □ 不通过 | |
| 142 | | 12 | 答案目录 | 所有课后练习、课后实践、章节实践均有答案或参考实现,并放入 `answer` 目录。 | □ 通过 □ 不通过 | | 178 | | 12 | 答案目录 | 所有课后练习、课后实践、章节实践均有答案或参考实现,并放入 `answer` 目录。 | □ 通过 □ 不通过 | |
| 143 | | 13 | 图片引用 | notebook 中适当添加图片,图片位于 `images` 目录并使用相对路径引用。 | □ 通过 □ 不通过 | | 179 | | 13 | 图片引用 | notebook 中适当添加图片,图片位于 `images` 目录并使用相对路径引用。 | □ 通过 □ 不通过 | |
| 144 | | 14 | 代码执行 | 除纯理论内容外,notebook 中所有代码均可从上到下执行并得到正确结果。 | □ 通过 □ 不通过 | | 180 | | 14 | 风格一致 | 同一课程各 notebook 编写风格保持一致,图片和表格全部居左对齐(使用 HTML `<table>` 格式)。 | □ 通过 □ 不通过 | |
| 145 | | 15 | 代码解耦 | 教程正文代码与实践题代码相互解耦。 | □ 通过 □ 不通过 | | 181 | | 15 | 代码执行 | 除纯理论内容外,notebook 中所有代码均可从上到下执行并得到正确结果。 | □ 通过 □ 不通过 | |
| 146 | | 16 | 源码查看 | 源码较多放入 `src` 时,notebook 中提供查看、说明和运行源码的命令。 | □ 通过 □ 不通过 □ 不适用 | | 182 | | 16 | 代码解耦 | 教程正文代码与实践题代码相互解耦。 | □ 通过 □ 不通过 | |
| 147 | | 17 | 完整操作 | 学习者无需手动到其他目录查找或修改代码即可完成教程。 | □ 通过 □ 不通过 | | 183 | | 17 | 源码查看 | 源码较多放入 `src` 时,notebook 中提供查看、说明和运行源码的命令。 | □ 通过 □ 不通过 □ 不适用 | |
| 148 | | 18 | 行文逻辑 | 教程内容行文通顺,逻辑由浅入深,新概念首次出现时解释清楚。 | □ 通过 □ 不通过 | | 184 | | 18 | 完整操作 | 学习者无需手动到其他目录查找或修改代码即可完成教程。 | □ 通过 □ 不通过 | |
| 149 | | 19 | 运行验证 | 所有 notebook 已完成实际运行验证,PR 描述中说明硬件型号、运行环境、在线体验环境和验证结果。 | □ 通过 □ 不通过 | | 185 | | 19 | 行文逻辑 | 教程内容行文通顺,逻辑由浅入深,新概念首次出现时解释清楚。 | □ 通过 □ 不通过 | |
| 150 | | 20 | A2/A3 在线体验 | 支持 A2/A3 硬件的课程,必须保证能在 learning-hub 的 notebook 在线体验环境和 CANNLab 的云开发环境中可运行且不报错。 | □ 通过 □ 不通过 □ 不适用 | | 186 | | 20 | 运行验证 | 所有 notebook 已完成实际运行验证,验证所用 CANNLab 环境必须是外部开发者可创建的环境,不得使用内部用户环境或本地环境。PR 描述中说明硬件型号、运行环境、在线体验环境和验证结果。 | □ 通过 □ 不通过 | |
| 151 | | 21 | A5 在线体验 | 支持 A5 硬件的课程,必须保证能在 CANNLab 的 950 尝鲜体验环境中可运行且不报错。 | □ 通过 □ 不通过 □ 不适用 | | 187 | | 21 | CANNLab 环境配置 | 创建 CANNLab 环境时,必须明确指定 NPU 镜像模板名称和打开后的 Python 内核版本,并附上 CANNLab 环境体验指南链接。 | □ 通过 □ 不通过 □ 不适用 | |
| 188 | | 22 | gitcode notebook | 算子课程和模型较小(<0.5B)的课程,必须在 cann-learning-hub notebook 可直接运行,在线体验链接由 committer 统一配置。 | □ 通过 □ 不通过 □ 不适用 | | ||
| 189 | | 23 | 清理输出 | 提交 PR 前必须删除所有 code cell 的输出,notebook 中不得保留运行结果。 | □ 通过 □ 不通过 | | ||
| 190 | |||
| 191 | ## 附录:课程 PPT 课件上传规范 | ||
| 192 | |||
| 193 | 课程 PPT 课件用于讲师引导式教学,上传时需遵循以下规范: | ||
| 194 | |||
| 195 | 1. **存放位置**:PPT 文件统一放在课程目录下的 `slides/` 目录中。 | ||
| 196 | |||
| 197 | ```text | ||
| 198 | course_name/ | ||
| 199 | └── slides/ | ||
| 200 | ├── 01_topic_name.pptx | ||
| 201 | ├── 02_topic_name.pptx | ||
| 202 | └── ... | ||
| 203 | ``` | ||
| 204 | |||
| 205 | 2. **文件命名**:使用全英文命名,前置编号固定阅读顺序,格式为 `0n_topic_name.pptx`。 | ||
| 206 | 3. **体积控制**:PPT 中的大图片和视频需压缩处理,单个 PPT 文件尽量控制在 5MB 以内。 | ||
| 207 | 4. **统一模板**:PPT 必须使用 CANN 社区统一 PPT 模板:[ppt_template.pptx](https://gitcode.com/cann/community/blob/master/templates/ppt_template.pptx)。 | ||
| 208 | 5. **主 README 列出课件**:课程主 `README.md` 中使用表格列出并介绍 PPT 课件,参考写法如下: | ||
| 209 | |||
| 210 | ```markdown | ||
| 211 | ## 课程内容 | ||
| 212 | |||
| 213 | | 序号 | 主题 | 主要内容 | 课件 | | ||
| 214 | |---|---|---|---| | ||
| 215 | | 01 | 主题名称 | 主要内容概述 | [01_topic_name.pptx](./slides/01_topic_name.pptx) | | ||
| 216 | | 02 | 主题名称 | 主要内容概述 | [02_topic_name.pptx](./slides/02_topic_name.pptx) | | ||
| 217 | ``` | ||
Rdocs/images/CANNLab_env_experience_guide/fork1.png→docs/images/CANNLab_course_development_guide/fork1.png+0-0
文件重命名但无更改。
Rdocs/images/CANNLab_env_experience_guide/fork2.png→docs/images/CANNLab_course_development_guide/fork2.png+0-0
文件重命名但无更改。
Rdocs/images/CANNLab_env_experience_guide/kernel1.png→docs/images/CANNLab_course_development_guide/kernel1.png+0-0
文件重命名但无更改。
Rdocs/images/CANNLab_env_experience_guide/kernel2.png→docs/images/CANNLab_course_development_guide/kernel2.png+0-0
文件重命名但无更改。
Rdocs/images/CANNLab_env_experience_guide/newwin.png→docs/images/CANNLab_course_development_guide/newwin.png+0-0
文件重命名但无更改。
Rdocs/images/CANNLab_env_experience_guide/run_code_cell_success.png→docs/images/CANNLab_course_development_guide/run_code_cell_success.png+0-0
文件重命名但无更改。
Ddocs/images/CANNLab_env_experience_guide/code.png+0-0
Ddocs/images/CANNLab_env_experience_guide/create_npu.png+0-0
Ddocs/images/CANNLab_env_experience_guide/jupyter_install.png+0-0
Ddocs/images/CANNLab_env_experience_guide/openfile.png+0-0
Ddocs/images/CANNLab_env_experience_guide/terminal.png+0-0