之前帮兄弟搞版本发布,他问我:“哥,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(一个仓库全搞定)

# 克隆仓库
$ git clone https://atomgit.com/cann/release-management.git
$ cd release-management

# 看 CANN 8.0 Release Notes
$ cat releases/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
- 框架适配:@wangwu

3. 兼容性矩阵(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
$ cat releases/8.0/RELEASE_NOTES.md

# 找 CANN 8.5 的兼容性矩阵
$ cat releases/8.5/COMPATIBILITY.md

# 看未来版本计划
$ cat UPCOMING_RELEASES.md

2. 版本清晰

每个版本一个目录,不会搞混:

$ tree releases/
releases/
├── 8.0/
├── 8.5/
└── 9.0/  # 未来版本

$ # 不会搞混 8.0 和 8.5 的 Release Notes

3. 社区参与

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. 克隆仓库
$ git clone https://atomgit.com/cann/release-management.git
$ cd release-management

# 2. 找 CANN 8.0 的 Release Notes
$ cat releases/8.0/RELEASE_NOTES.md

# 输出(节选):
# # CANN 8.0 Release Notes
# 
# ## 新特性
# - 200+ 新算子
# - 80+ 融合算子
# - MoE 融合
# - 通算融合
# - FlashAttention 优化
# 
# ## 性能提升
# - FlashAttention:+15%
# - MoE:+25%
# - 推理吞吐:+30%

# 3. 找 CANN 8.0 的兼容性矩阵
$ cat releases/8.0/COMPATIBILITY.md

# 输出(节选):
# ## 框架兼容性
# | 框架 | 最低版本 | 推荐版本 |
# |------|---------|---------|
# | PyTorch | 2.0 | 2.1+ |
# | TensorFlow | 2.12 | 2.14+ |

示例 2:看未来版本计划

# 1. 看 UPCOMING_RELEASES.md
$ cat UPCOMING_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
## 时间线
## 新特性
## 负责人

踩坑指南(亲身经历)

  1. 版本号

    • CANN 版本号是 主版本.次版本
    • 例如:8.0、8.5、9.0
    • 别跟昇腾驱动版本搞混
  2. 兼容性

    • COMPATIBILITY.md
    • 别用错框架版本
    • 不然会报奇怪的错误
  3. 已知问题

    • KNOWN_ISSUES.md
    • 遇到问题先查已知问题
    • 说不定已经有人报告过了
  4. 未来版本

    • UPCOMING_RELEASES.md
    • 可以提 Feature Request
    • 社区投票决定下个版本的特性

适用场景

什么情况下用 release-management:

  • 找 Release Notes:要知道某个版本有啥新特性
  • 看兼容性:要确定框架/硬件/操作系统是否兼容
  • 报告版本问题:遇到版本相关的 bug
  • 参与版本规划:想影响下个版本的特性

什么情况下不用:

  • 写代码:不用看
  • 调性能:不用看

总结

release-management 就是昇腾的"发布中心":

  • Release Notes:每个版本的新特性
  • 兼容性矩阵:框架/硬件/操作系统兼容性
  • 发布计划:版本时间线
  • 社区参与:一起决定下个版本的特性
Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐