写给新手的 release-management:昇腾版本管理到底是啥?
之前帮兄弟搞版本发布,他问我:“哥,CANN 的版本是怎么管理的?我想找 8.0 的 Release Notes,在哪看?”
我说看 release-management 仓库。
好问题。今天一次说清楚。
release-management 是啥?
release-management = CANN Release Management,昇腾的版本管理仓库。版本计划、Release Notes、发布时间表、兼容性矩阵都在里面。
一句话说清楚:release-management 是昇腾的"发布中心",你想找某个 CANN 版本的 Release Notes、知道下个版本啥时候发、看兼容性矩阵,都在这。
你说气人不气人,之前找 CANN 8.0 的 Release Notes 找了半天,现在一个仓库全搞定。
为什么要用 release-management?
三个字:找得到。
不用 release-management(到处找)
# 找 CANN 8.0 Release Notes$# 去官网找 → 找不到$# 去论坛找 → 找到了但版本不对$# 去 atomgit 找 → 找到了但散落在各个仓库$# 找了 2 小时,还没找全# 问题:# 1. 信息分散# 2. 版本不对# 3. 兼容性不清楚# 4. 发布时间不知道用 release-management(一个仓库全搞定)
# 克隆仓库$gitclone https://atomgit.com/cann/release-management.git $cdrelease-management# 看 CANN 8.0 Release Notes$catreleases/8.0/RELEASE_NOTES.md# 输出:# ========================================# CANN 8.0 Release Notes# ========================================# 发布时间:2024-10-01## ## 新特性# - 200+ 新算子# - 80+ 融合算子# - MoE 融合# - 通算融合# - FlashAttention 优化## ## 性能提升# - FlashAttention:+15%# - MoE:+25%# - 推理吞吐:+30%## ## 兼容性# - PyTorch 2.1+# - TensorFlow 2.14+# - Ascend 910/910B## ## 已知问题# - 见 KNOWN_ISSUES.md# ========================================# 找了 2 分钟,全搞定你说气人不气人,之前找 2 小时,现在 2 分钟。
核心概念就三个
1. 版本计划(Release Plan)
每个版本一个计划文件:
release-management/ ├── releases/ │ ├── 8.0/ │ │ ├── RELEASE_PLAN.md # 发布计划 │ │ ├── RELEASE_NOTES.md # 发布说明 │ │ ├── COMPATIBILITY.md # 兼容性矩阵 │ │ └── KNOWN_ISSUES.md # 已知问题 │ │ │ ├── 8.5/ │ │ ├── RELEASE_PLAN.md │ │ ├── RELEASE_NOTES.md │ │ ├── COMPATIBILITY.md │ │ └── KNOWN_ISSUES.md │ │ │ └── 9.0/ # 未来版本 │ ├── RELEASE_PLAN.md │ └── ... │ └── UPCOMING_RELEASES.md # 未来版本计划2. 发布计划(Release Plan)
# releases/8.0/RELEASE_PLAN.md # CANN 8.0 Release Plan ## 时间线 - 2024-07-01:Feature Freeze - 2024-08-01:Code Freeze - 2024-09-01:RC1 发布 - 2024-09-15:RC2 发布 - 2024-10-01:正式发布 ✅ ## 新特性 - 200+ 新算子 - 80+ 融合算子 - MoE 融合 - 通算融合 - FlashAttention 优化 ## 负责人 - 总体协调:@zhangsan - 算子:@lisi - 框架适配:@wangwu3. 兼容性矩阵(Compatibility Matrix)
# releases/8.0/COMPATIBILITY.md # CANN 8.0 Compatibility Matrix ## 框架兼容性 | 框架 | 最低版本 | 推荐版本 | 说明 | |------|---------|---------|------| | PyTorch | 2.0 | 2.1+ | 完美支持 | | TensorFlow | 2.12 | 2.14+ | 完美支持 | | ONNX | 1.14 | 1.16+ | 完美支持 | ## 硬件兼容性 | 硬件 | 支持 | 说明 | |------|------|------| | Ascend 910 | ✅ | 完美支持 | | Ascend 910B | ✅ | 完美支持 | | Ascend 310 | ✅ | 推理专用 | ## 操作系统兼容性 | 操作系统 | 版本 | 支持 | |---------|------|------| | Ubuntu | 20.04 / 22.04 | ✅ | | CentOS | 7.6+ | ✅ | | EulerOS | 2.0+ | ✅ |为什么要用 release-management?
三个理由:
1. 找得到
所有版本信息一个仓库全搞定:
# 找 CANN 8.0 的 Release Notes$catreleases/8.0/RELEASE_NOTES.md# 找 CANN 8.5 的兼容性矩阵$catreleases/8.5/COMPATIBILITY.md# 看未来版本计划$catUPCOMING_RELEASES.md2. 版本清晰
每个版本一个目录,不会搞混:
$ tree releases/ releases/ ├──8.0/ ├──8.5/ └──9.0/# 未来版本$# 不会搞混 8.0 和 8.5 的 Release Notes3. 社区参与
Release Plan 是社区一起制定的:
# UPCOMING_RELEASES.md ## CANN 9.0 计划(2025-Q2) ### 新特性(社区投票选出) 1. **更多 Transformer 算子**(社区投票第1名) 2. **动态 Shape 优化**(社区投票第2名) 3. **量化感知训练**(社区投票第3名) ### 如何参与? - 提 Issue:https://atomgit.com/cann/release-management/issues - 社区投票:https://atomgit.com/cann/community/wiki/Voting - 邮件列表:release@cann.org你说气人不气人,社区一起决定下个版本有啥特性。
怎么用?代码示例
示例 1:找某个版本的 Release Notes
# 1. 克隆仓库$gitclone https://atomgit.com/cann/release-management.git $cdrelease-management# 2. 找 CANN 8.0 的 Release Notes$catreleases/8.0/RELEASE_NOTES.md# 输出(节选):# # CANN 8.0 Release Notes## ## 新特性# - 200+ 新算子# - 80+ 融合算子# - MoE 融合# - 通算融合# - FlashAttention 优化## ## 性能提升# - FlashAttention:+15%# - MoE:+25%# - 推理吞吐:+30%# 3. 找 CANN 8.0 的兼容性矩阵$catreleases/8.0/COMPATIBILITY.md# 输出(节选):# ## 框架兼容性# | 框架 | 最低版本 | 推荐版本 |# |------|---------|---------|# | PyTorch | 2.0 | 2.1+ |# | TensorFlow | 2.12 | 2.14+ |示例 2:看未来版本计划
# 1. 看 UPCOMING_RELEASES.md$catUPCOMING_RELEASES.md# 输出(节选):# # Upcoming CANN Releases## ## CANN 9.0(2025-Q2)## ### 新特性(社区投票选出)# 1. 更多 Transformer 算子# 2. 动态 Shape 优化# 3. 量化感知训练## ### 时间线# - 2025-01-01:Feature Freeze# - 2025-02-01:Code Freeze# - 2025-03-01:RC1# - 2025-04-01:正式发布# 2. 提建议$# 去 https://atomgit.com/cann/release-management/issues$# 提 Issue,标题:[Feature Request] 我想加 XXX 特性示例 3:报告版本问题
# 1. 提 Issue$# 去 https://atomgit.com/cann/release-management/issues$# 用版本问题模板# 2. 填模板## Title: [BUG] CANN 8.0 在 Ubuntu 22.04 上安装失败## ## 问题描述# 安装 CANN 8.0 时,在 Ubuntu 22.04 上报错:...## ## 环境# - CANN 版本:8.0# - 操作系统:Ubuntu 22.04# - 硬件:Ascend 910## ## 错误信息# ERROR: dependency libxxx not found## ## 解决方案(如果有)# 手动安装 libxxx:sudo apt install libxxx# 3. 提交$# 点 "Submit new issue"示例 4:参与版本规划
# 1. 加入邮件列表$# 发邮件到 release@cann.org$# 主题:Subscribe# 2. 参加社区会议$# 看 UPCOMING_RELEASES.md 里的会议时间$# 线上会议(Zoom/飞书)# 3. 投票选特性$# 去 https://atomgit.com/cann/community/wiki/Voting$# 每个社区成员有 5 票效率提升
用 release-management 的效率提升:
| 方式 | 找 Release Notes 时间 | 找兼容性矩阵时间 | 总耗时 |
|---|---|---|---|
| 不用 | 2 小时 | 1 小时 | 3 小时 |
| 用 | 2 分钟 | 1 分钟 | 3 分钟 |
提升:60x
你说气人不气人,之前找 3 小时,现在 3 分钟。
跟其他仓库的关系
release-management 在 CANN 架构里属于社区治理层,是所有版本信息的"发布中心"。
依赖关系:
release-management(版本管理) ↑ 提供版本信息 所有 CANN 仓库(ops-nn / ATB / ...)解释一下:
- release-management:版本管理(Release Notes/兼容性矩阵/发布计划)
- 所有 CANN 仓库:依赖 release-management 提供版本信息
简单说:release-management是版本的"档案馆"。想找某个版本的信息,就来这。
release-management 的核心内容
1. 版本目录
releases/ ├──8.0/ ├──8.5/ └──9.0/2. Release Notes
# RELEASE_NOTES.md ## 新特性 ## 性能提升 ## 兼容性 ## 已知问题3. 兼容性矩阵
# COMPATIBILITY.md ## 框架兼容性 ## 硬件兼容性 ## 操作系统兼容性4. 发布计划
# RELEASE_PLAN.md ## 时间线 ## 新特性 ## 负责人踩坑指南(亲身经历)
版本号
- CANN 版本号是
主版本.次版本 - 例如:8.0、8.5、9.0
- 别跟昇腾驱动版本搞混
- CANN 版本号是
兼容性
- 看
COMPATIBILITY.md - 别用错框架版本
- 不然会报奇怪的错误
- 看
已知问题
- 看
KNOWN_ISSUES.md - 遇到问题先查已知问题
- 说不定已经有人报告过了
- 看
未来版本
- 看
UPCOMING_RELEASES.md - 可以提 Feature Request
- 社区投票决定下个版本的特性
- 看
适用场景
什么情况下用 release-management:
- 找 Release Notes:要知道某个版本有啥新特性
- 看兼容性:要确定框架/硬件/操作系统是否兼容
- 报告版本问题:遇到版本相关的 bug
- 参与版本规划:想影响下个版本的特性
什么情况下不用:
- 写代码:不用看
- 调性能:不用看
总结
release-management 就是昇腾的"发布中心":
- Release Notes:每个版本的新特性
- 兼容性矩阵:框架/硬件/操作系统兼容性
- 发布计划:版本时间线
- 社区参与:一起决定下个版本的特性
