新课程上库与上线验收标准
【免费下载链接】cann-learning-hubCANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。项目地址: https://gitcode.com/cann/cann-learning-hub
适用范围:所有新增或重构后准备合入cann-learning-hub的课程。
用途:PR 作者自检、Reviewer 验收、课程上库准入判断。
1. 新教程的上线流程
新教程按照课程大纲设计、课程大纲评审、课程内容开发、PR 评审、test 分支内测、问题闭环、master 分支发布的流程推进上线。
| 步骤 | 流程节点 | 责任方 | 验收关注点 |
|---|---|---|---|
| 1 | 课程小组进行课程大纲设计 | 课程组 | 明确课程主题、章节规划、学习路径和目标学习对象。 |
| 2 | 课程大纲提评审,阐述能力的分层设计逻辑 | 课程组、commiter | 说明初级、中级、高级能力递进关系,以及各阶段考核方式。 |
| 3 | 课程组内开发分工完成教程内容 | 课程组 | 按照大纲完成 README、章节 notebook、answer、images、src 等内容建设。 |
| 4 | 提 PR 到cann-learning-hub/test分支 | 课程组内容开发者 | PR 内容完整,目录结构、命名、Notebook 内容和运行验证满足准入要求。 |
| 5 | 课程组组长 &commiter评审 PR | 课程组组长、commiter | 依据准合入 Checklist 检查课程结构、内容质量、代码可执行性和能力递进设计。 |
| 6 | 达到准入标准,合入 test 分支 | 课程组组长、commiter | 所有硬性验收项通过,条件项结论明确后合入 test 分支。 |
| 7 | test 分支上组织内测,布道师团队体验课程,提 issue 闭环问题 | 课程小组、布道师团队 | 完成在线体验、运行验证和问题反馈;issue 需要明确责任人。 |
| 8 | 合入 master 分支 | Maintainer | test 分支内测问题闭环后,将课程内容合入 master 分支,对外发布。 |
2. 课程大纲与能力分层设计规范
课程大纲设计时,应围绕学习者能力成长路径进行整体规划,而不是简单按照知识点堆叠章节。课程组需要明确课程面向的目标学习者、学习起点、最终能力目标,并按照由浅入深的方式设计章节顺序、实践任务和阶段性学习成果。
课程大纲应体现明确的能力分层递进关系,例如初级、中级、高级。每个能力层级需要说明覆盖的章节范围、学习者完成该阶段后应掌握的核心能力、能够独立完成的典型任务,以及对应的考核方式。能力分层设计应为后续不同层级的能力认证考试提供依据,确保课程内容、实践任务和认证考核目标保持一致。
以 Ascend C 算子开发系列课程为例,课程可以按照基础开发能力、工程化开发能力、融合算子与性能优化能力逐级递进设计:
注:章节编号不一定严格代表难度顺序,阶段划分以能力目标为准。
| 阶段 | 章节范围 | 能力目标 | 考核方式 |
|---|---|---|---|
| 初级 | 第 1-2 章 | 理解基础概念,掌握核函数开发和核函数调用方式,掌握简单矢量算子编程方法。 | 选择题方式检验知识点掌握情况。 |
| 中级 | 第 3-4、7 章 | 掌握工程化算子开发方式,掌握泛化 Tiling 能力,API 调用算子方式,掌握矩阵乘法高阶 API 方式开发,掌握精度调试方法。 | 复杂矢量算子编程实践。 |
| 高级 | 第 5-6、8 章及以后 | 掌握融合算子开发方式,性能调优方法,开源仓贡献流程。 | 融合算子编程实践。 |
3. 目录结构验收标准
3.1 课程整体结构
每个课程必须按照“课程名称 - 章节名称 - 小节名称”的层级组织,并保持目录结构清晰、可定位、可维护,如:
tutorials/ └── course_name/ ├── README.md ├── 01_chapter_name/ │ ├── 01.01_chapter_intro.ipynb │ ├── 01.02_section_name.ipynb │ ├── 01.03_chapter_test.ipynb │ ├── answer/ │ ├── images/ │ └── src/ └── 02_chapter_name/ ├── 02.01_chapter_intro.ipynb ├── 02.02_section_name.ipynb ├── 02.03_chapter_test.ipynb ├── answer/ ├── images/ └── src/- 每个课程目录必须包含主
README.md,课程目录、章节目录、文件名都使用英文、数字、下划线和必要的点号。 - 章节目录命名必须符合
0n_abc格式,例如01_introduction、02_model_training。 - 小节 notebook 命名必须符合
0n.0m_abc.ipynb格式,例如01.01_chapter_intro.ipynb。 - 每个章节目录包含多个教程 ipynb,以及
answer、images、src三个目录。
3.2 主 README.md 要求
- 包含教程整体简介、适用对象、整体学习目标。
- 必须说明支持或已验证的硬件型号。
3.3 单个章节的结构要求
- 每个章节第一小节必须为章节概述,例如
01.01_chapter_intro.ipynb。- 章节概述必须包含学习前置要求:学习本章节教程时,开发者需要已经具备的能力、已经学习的前置学习教程/章节,环境要求。
- 章节概述必须包含章节目标:学完之后开发者能做到什么。
- 章节概述必须包含章节内容:每一小节的简介和跳转链接。
- 每个章节最后一小节必须为章节实践,例如
01.03_chapter_test.ipynb。- 章节实践必须包含至少一道综合编程实践题,用于检验本章学习掌握情况。
- 每个章节按照课程实际内容拆分为多个中间小节
.ipynb,中间小节.ipynb必须包含小节概述、教程具体内容、课后练习或课后实践。- 纯知识点讲解类型的小节——提供课后练习题(选择/填空)。
- 包含代码实操步骤的小节——提供课后代码实践题(代码编程)。
- 所有练习、实践、章节实践必须提供答案或参考实现。
3.4 answer、images、src 目录
images目录用于存放该章节多个小节中的配图。answer目录用于存放课后练习、课后实践、章节实践的答案。src目录用于存放不便完整写入 notebook 的工程源码。answer、images、src目录下可按0n.0m_abc格式新建子目录,以对应具体小节。
4. Notebook 内容验收标准
必须包含小节概述、教程具体内容、课后练习或课后实践三个部分。
教程具体内容要求:
- 教程内容行文通顺,逻辑由浅入深。
- 第一次出现的新概念、新工具、新命令、新参数必须解释清楚,未在章节前置要求或前面章节提及的内容,不得直接默认学习者已经掌握。
- 适当添加图片辅助讲解。架构、流程、数据流、模型结构、运行结果等复杂内容应优先使用图片或图示说明。
- 教程正文使用完整可运行的示例代码服务于概念讲解和步骤演示。工程目录创建、依赖安装、代码开发、脚本运行等操作在 notebook 的 code cell 中执行。学习者应不需要手动打开其他文件夹才能理解或完成教程。
- notebook 中必须说明每个关键源码文件的作用。
- 当因为源码较多,无法全部在 notebook 展示,必须存入
src目录时,notebook 中必须通过 code cell 提供cat、tree、ls等命令展示关键源码结构和内容。
课后实践要求:
- 课后练习、课后实践、章节实践应有独立输入、任务说明和答案。
- 实践题的代码开发、编译执行等操作步骤必须在 notebook 的 code cell 中执行。工程代码量大,仅需要修改几个关键文件时,工程可以存放在
src对应小节目录中,待填写文件通过 code cell 中使用%%write命令提供写入操作。 - 答案通过 code cell 中使用
cat命令展示。
5. 课程开发上线体验规范
课程上线前必须验证目标硬件对应的在线体验环境,确保学习者可以直接打开 notebook 完成课程操作。
当前体验环境包括两类:
- learning-hub 的 notebook 在线体验环境。
- CANNLab,包括 910B/910C 云开发环境以及 950 尝鲜体验环境。
| 适用课程 | 目标硬件 | 体验环境 | 准入要求 |
|---|---|---|---|
| 所有课程 | A2 / A3 | learning-hub 的 notebook 在线体验环境;CANNLab 的 910B/910C 云开发环境 | 支持 A2/A3 硬件的课程,必须保证在 learning-hub 的 notebook 在线体验环境和 CANNLab 的云开发环境中均可运行且不报错。 |
| 所有课程 | A5 | CANNLab 的 950 尝鲜体验环境 | 支持 A5 硬件的课程,必须保证在 CANNLab 的 950 尝鲜体验环境中可运行且不报错。 |
6. PR 准合入 Checklist
| 序号 | 验收项 | 准合入要求 | 结果 |
|---|---|---|---|
| 1 | 课程大纲设计 | 课程大纲围绕学习者能力成长路径设计,明确目标学习者、学习起点、最终能力目标、章节顺序和阶段性学习成果。 | □ 通过 □ 不通过 |
| 2 | 能力分层设计 | 课程明确初级、中级、高级等能力层级,并说明各层级覆盖章节、核心能力、典型任务和考核方式。 | □ 通过 □ 不通过 |
| 3 | 课程位置 | 课程目录位于tutorials/下。 | □ 通过 □ 不通过 |
| 4 | 命名规范 | 课程目录、章节目录、文件名均为英文、数字、下划线或点号,不包含中文。 | □ 通过 □ 不通过 |
| 5 | 章节命名 | 章节目录命名符合0n_abc格式。 | □ 通过 □ 不通过 |
| 6 | 小节命名 | 小节 notebook 命名符合0n.0m_abc.ipynb格式。 | □ 通过 □ 不通过 |
| 7 | 主 README | 课程根目录包含README.md,并包含教程整体简介、适用对象、整体学习目标、支持或已验证的硬件型号。 | □ 通过 □ 不通过 |
| 8 | 章节目录 | 每个章节包含answer、images、src目录。 | □ 通过 □ 不通过 |
| 9 | 章节概述 | 每个章节第一小节为章节概述,且包含前置要求、章节目标、章节内容和小节跳转链接。 | □ 通过 □ 不通过 |
| 10 | 章节实践 | 每个章节最后一小节为章节实践,且至少包含一道综合实践题。 | □ 通过 □ 不通过 |
| 11 | 普通小节 | 每个普通小节包含小节概述、教程内容、课后练习或课后实践。 | □ 通过 □ 不通过 |
| 12 | 答案目录 | 所有课后练习、课后实践、章节实践均有答案或参考实现,并放入answer目录。 | □ 通过 □ 不通过 |
| 13 | 图片引用 | notebook 中适当添加图片,图片位于images目录并使用相对路径引用。 | □ 通过 □ 不通过 |
| 14 | 代码执行 | 除纯理论内容外,notebook 中所有代码均可从上到下执行并得到正确结果。 | □ 通过 □ 不通过 |
| 15 | 代码解耦 | 教程正文代码与实践题代码相互解耦。 | □ 通过 □ 不通过 |
| 16 | 源码查看 | 源码较多放入src时,notebook 中提供查看、说明和运行源码的命令。 | □ 通过 □ 不通过 □ 不适用 |
| 17 | 完整操作 | 学习者无需手动到其他目录查找或修改代码即可完成教程。 | □ 通过 □ 不通过 |
| 18 | 行文逻辑 | 教程内容行文通顺,逻辑由浅入深,新概念首次出现时解释清楚。 | □ 通过 □ 不通过 |
| 19 | 运行验证 | 所有 notebook 已完成实际运行验证,PR 描述中说明硬件型号、运行环境、在线体验环境和验证结果。 | □ 通过 □ 不通过 |
| 20 | A2/A3 在线体验 | 支持 A2/A3 硬件的课程,必须保证能在 learning-hub 的 notebook 在线体验环境和 CANNLab 的云开发环境中可运行且不报错。 | □ 通过 □ 不通过 □ 不适用 |
| 21 | A5 在线体验 | 支持 A5 硬件的课程,必须保证能在 CANNLab 的 950 尝鲜体验环境中可运行且不报错。 | □ 通过 □ 不通过 □ 不适用 |
【免费下载链接】cann-learning-hubCANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。项目地址: https://gitcode.com/cann/cann-learning-hub
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考