已合并
【test】用 master 分支刷新 docs 目录内容 #420
meme创建于 23 天前
【test】用 master 分支刷新 docs 目录内容 #420
已合并
meme创建于 23 天前
已删除 :test合入到cann/cann-learning-hubtest
35 个文件变更+131-78
Mdocs/CANNLab_course_development_guide.md+26-25
@@ -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 
361. 在 [cann-learning-hub](https://gitcode.com/cann/cann-learning-hub) 仓库页面点击 **Fork**,将仓库 fork 到个人空间。361. 在 [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 
402. 记下个人 fork 仓库地址,例如 `https://gitcode.com/<your_username>/cann-learning-hub.git`。402. 记下个人 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 云开发环境的体验流程(面向学习者)。 |
Mdocs/CANNLab_env_experience_guide.md+12-26
@@ -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 
77code cell 执行成功后,页面会显示对应的运行结果:
78 
79<img src="./images/CANNLab_env_experience_guide/run_code_cell_success.png">
Mdocs/README.md+4-4
@@ -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.mddocs/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 
721. **课程整体简介**:介绍课程内容与整体学习目标。
732. **课程适用学习人群**:说明学习者需要具备的基础,如前置学习课程、知识储备等。
743. **课程支持的硬件产品**:列出课程支持且验证的全部硬件型号。若多个硬件产品均支持,需全部列出,让开发者明确自己手头的哪些产品可以跑通课程。
754. **已验证的在线体验环境**:列举课程已经验证跑通无报错的在线体验环境,可包括:
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 内核版本**,否则开发者无法正确复现运行环境,此项为硬性验收项。
895. **课程章节目录**:分章节用表格展示课程章节名称,并给出跳转链接。参考写法如下:
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 准入 Checklist163## 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 硬件的课程,必须保证能在 CANNLab950 尝鲜体验环境中可运行且不报错。 | □ 通过 □ 不通过 □ 不适用 |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 
1951. **存放位置**:PPT 文件统一放在课程目录下的 `slides/` 目录中。
196 
197 ```text
198 course_name/
199 └── slides/
200 ├── 01_topic_name.pptx
201 ├── 02_topic_name.pptx
202 └── ...
203 ```
204 
2052. **文件命名**:使用全英文命名,前置编号固定阅读顺序,格式为 `0n_topic_name.pptx`
2063. **体积控制**:PPT 中的大图片和视频需压缩处理,单个 PPT 文件尽量控制在 5MB 以内。
2074. **统一模板**:PPT 必须使用 CANN 社区统一 PPT 模板:[ppt_template.pptx](https://gitcode.com/cann/community/blob/master/templates/ppt_template.pptx)。
2085. **主 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 ```
Adocs/images/CANNLab_course_development_guide/CANNLab.png+0-0
Adocs/images/CANNLab_course_development_guide/CANNLab2.png+0-0
Adocs/images/CANNLab_course_development_guide/cann-learning-hub_contents.png+0-0
Adocs/images/CANNLab_course_development_guide/code.png+0-0
Adocs/images/CANNLab_course_development_guide/create.png+0-0
Rdocs/images/CANNLab_env_experience_guide/fork1.pngdocs/images/CANNLab_course_development_guide/fork1.png+0-0
文件重命名但无更改。
Rdocs/images/CANNLab_env_experience_guide/fork2.pngdocs/images/CANNLab_course_development_guide/fork2.png+0-0
文件重命名但无更改。
Rdocs/images/CANNLab_env_experience_guide/kernel1.pngdocs/images/CANNLab_course_development_guide/kernel1.png+0-0
文件重命名但无更改。
Rdocs/images/CANNLab_env_experience_guide/kernel2.pngdocs/images/CANNLab_course_development_guide/kernel2.png+0-0
文件重命名但无更改。
Adocs/images/CANNLab_course_development_guide/new.png+0-0
Adocs/images/CANNLab_course_development_guide/new_terminal.png+0-0
Rdocs/images/CANNLab_env_experience_guide/newwin.pngdocs/images/CANNLab_course_development_guide/newwin.png+0-0
文件重命名但无更改。
Adocs/images/CANNLab_course_development_guide/openfile.png+0-0
Adocs/images/CANNLab_course_development_guide/run_code_cell.png+0-0
Rdocs/images/CANNLab_env_experience_guide/run_code_cell_success.pngdocs/images/CANNLab_course_development_guide/run_code_cell_success.png+0-0
文件重命名但无更改。
Adocs/images/CANNLab_course_development_guide/select_npu_env.png+0-0
Adocs/images/CANNLab_course_development_guide/start.png+0-0
Adocs/images/CANNLab_course_development_guide/terminal.png+0-0
Adocs/images/CANNLab_course_development_guide/webIDE.png+0-0
Adocs/images/CANNLab_course_development_guide/windows.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
Mdocs/images/CANNLab_env_experience_guide/run_code_cell.png+0-0
Mdocs/images/CANNLab_env_experience_guide/select_kernel.png+0-0
Adocs/images/CANNLab_env_experience_guide/select_npu_env.png+0-0
Mdocs/images/CANNLab_env_experience_guide/start.png+0-0
Ddocs/images/CANNLab_env_experience_guide/terminal.png+0-0
Mdocs/images/CANNLab_env_experience_guide/webIDE.png+0-0
Mdocs/images/CANNLab_env_experience_guide/windows.png+0-0