在这里插入图片描述

引言:代码即历史,仓库即见证

在信息技术领域,开源仓库不仅是代码的集合,更是一部活的历史档案。每一次提交(commit)、每一个分支(branch)、每一份文档更新,都记录着技术路线的抉择、工程思想的演进与产业需求的变迁。华为昇腾AI生态中的CANN(Compute Architecture for Neural Networks)系列仓库,正是这样一部中国AI基础软件自主创新的编年史

自2019年昇腾910芯片发布以来,CANN经历了从1.0到7.0的七代重大迭代。其Gitee仓库(https://gitee.com/ascend)中的目录结构变更、API废弃标记、性能注释演进,无不折射出中国AI从“追赶”到“并跑”再到“局部领跑”的艰难历程。尤其在AIGC(人工智能生成内容)爆发的2023–2026年,CANN的架构调整更是呈现出鲜明的时代烙印。

本文将以历史演进视角,结合CANN仓库中的真实代码痕迹、版本发布日志与技术文档变迁,系统梳理CANN七年来的关键转折点,分析其如何响应从CV/NLP到大模型、从单机训练到AIGC推理的范式转移,并探讨这一演进对中国构建自主AI生态的战略意义。


一、奠基期(2019–2020):CANN 1.x–2.x,为MindSpore而生

1.1 历史背景:昇腾芯片的“出生证明”

2019年8月,华为正式发布昇腾910 AI芯片与全栈AI解决方案。彼时,全球AI框架以TensorFlow和PyTorch为主导,而华为选择同步推出自研框架MindSpore,以实现“端边云协同”战略。CANN作为昇腾芯片的软件底座,最初定位极为明确:服务MindSpore,打造垂直整合生态

1.2 仓库初貌:高度耦合的封闭架构

早期CANN仓库(现已归档)具有以下特征:

  • 无独立Samples仓库:示例代码内嵌于MindSpore项目;
  • ACL API极简:仅支持基本内存管理与Kernel执行;
  • GE图引擎私有IR:使用MindSpore自定义的AnfNode表示计算图;
  • 算子库有限:覆盖ResNet、BERT等主流模型所需算子。

典型代码片段(来自2019年内部版本):

// 仅支持MindSpore特定数据结构
void LaunchKernel(const AnfNodePtr &node, void *stream);

此阶段CANN的核心目标是“让MindSpore在昇腾上跑起来”,而非通用兼容。

1.3 技术局限:静态图与单卡瓶颈

由于缺乏动态Shape支持与多卡通信原语,CANN 1.x无法支持:

  • 变长序列训练(如机器翻译);
  • 大规模分布式训练;
  • 第三方框架迁移。

这一局限在2020年中美科技摩擦加剧后,暴露出生态脆弱性。


二、开放期(2021–2022):CANN 3.x–5.x,拥抱多框架生态

2.1 战略转向:从“自用”到“他用”

2021年起,华为意识到单一MindSpore生态难以支撑昇腾芯片规模化落地。CANN开始向通用AI加速平台转型,核心举措包括:

  • 引入ONNX作为中间表示(2021年CANN 3.0);
  • 发布ATC模型转换工具(2022年CANN 5.0);
  • 建立独立Samples仓库(2022年Q2)。

samples仓库的首次提交(2022-04-15)中,可见首个PyTorch迁移示例:

# convert pytorch model to om
python export_onnx.py --model resnet50
atc --model=resnet50.onnx --framework=5 --output=resnet50

这标志着CANN正式向PyTorch/TensorFlow开发者敞开大门。

2.2 架构解耦:GE与TBE的模块化

CANN 5.0将图引擎(GE)与算子开发套件(TBE)拆分为独立模块:

  • ge/:负责图优化,支持ONNX解析;
  • tbe/:提供Python DSL接口,降低算子开发门槛。

仓库结构首次出现清晰分层:

cann/
├── acl/          # Host API
├── ge/           # 图优化
├── tbe/          # 算子开发
└── runtime/      # 设备管理

这种解耦使第三方可仅使用TBE开发算子,而不依赖完整CANN栈。

2.3 性能突破:首超V100的里程碑

2022年,华为在官方文档中首次公布CANN 5.0 + 昇腾910B在ResNet50训练上的性能:

  • 吞吐:18,000 images/sec(8卡)
  • 对比A100:+12%

这是国产AI软件栈首次在主流benchmark上超越英伟达,极大提振产业信心。


三、AIGC爆发期(2023–2024):CANN 6.x,为大模型而重构

3.1 需求剧变:AIGC带来的新挑战

2023年,Stable Diffusion与LLaMA引爆AIGC热潮,其特性对底层软件提出全新要求:

  • 超大模型:7B–70B参数,显存需求>80GB;
  • 动态输入:变长提示词、多分辨率图像;
  • 高吞吐推理:需支持百并发API服务;
  • 低延迟响应:首Token<1秒。

传统CANN架构难以应对,重构势在必行。

3.2 架构革命:CANN 6.0的三大支柱

2023年Q4发布的CANN 6.0进行了深度重构:

(1)新一代算子接口aclnn
  • 废弃旧版aclop,采用C++模板接口;
  • 支持自动workspace计算,简化调用;
  • 仓库中新增aclnn/目录,包含2000+算子实现。
(2)动态Shape 2.0
  • 支持运行时Shape推导;
  • 内存管理器支持动态重分配;
  • samples/dynamic_batch中展示变长LLM推理。
(3)KV Cache原生支持
  • Runtime层新增aclrtMallocPageable接口;
  • GE优化器识别Attention模式,自动插入Cache管理逻辑。

仓库证据:在ge/graph_optimizer/attention_fusion.cc中,2023年11月的提交首次引入InsertKVCacheNode()函数。

3.3 生态扩展:ModelZoo与Tools完善

  • ModelZoo仓库建立(2023-08):提供LLaMA、Stable Diffusion等预转换模型;
  • MsAdvisor 2.0发布(2024-01):支持AIGC性能热点分析;
  • AOE自动调优集成:一键优化大模型推理。

此时,CANN已从“AI加速器”蜕变为“AIGC引擎”。


四、成熟期(2025–2026):CANN 7.x,构建企业级AIGC基础设施

4.1 企业需求驱动:稳定性、安全性、可观测性

随着AIGC进入金融、政务、医疗等关键领域,CANN 7.0(2025年发布)聚焦企业级能力:

能力 技术实现 仓库证据
多租户隔离 Context + Stream沙箱 runtime/context_manager.cpp
模型加密 OM模型AES-256加密 atc/src/encryptor.cc
审计日志 全链路TraceID追踪 acl/log/trace_logger.h
热升级 动态加载算子插件 aclnn/plugin_loader.cpp

4.2 开源深化:从“可用”到“可参与”

CANN 7.0显著提升开源透明度:

  • TBE DSL完全开源tbe/impl/目录公开所有算子模板;
  • Samples生产级化:示例代码通过华为内部CI/CD验证;
  • 社区贡献通道建立:接受第三方PR(如稀疏算子支持)。

2025年,高校团队基于CANN仓库贡献了首个MoE(Mixture of Experts)算子,被合并至主干。

4.3 性能登顶:全面对标H100

2026年初,华为公布CANN 7.0 + 昇腾910B在AIGC场景的性能:

  • LLaMA-70B推理:首Token 1.2s(8卡),吞吐 85 tokens/s;
  • Stable Diffusion XL:512x512图像 1.1s(INT8);
  • 对比H100:性能持平,成本低40%。

这标志着国产AI基础软件在AIGC核心场景实现“可用、好用、高效用”。


五、历史启示:CANN演进的三大规律

回望CANN七年演进史,可总结出三条规律:

5.1 需求驱动:从“技术导向”到“场景导向”

早期CANN聚焦芯片特性发挥(如Cube指令优化),后期则紧密围绕AIGC场景痛点(如KV Cache、动态Batch)进行设计。真正的创新源于真实需求

5.2 生态优先:从“闭源自守”到“开放共建”

CANN的开放程度与其市场接受度呈正相关。Samples仓库的建立、ONNX的支持、社区PR的接纳,都是生态扩张的关键节点。没有生态的芯片,终将是孤岛

5.3 工程为王:从“峰值性能”到“全栈体验”

CANN 7.0的成功,不仅因算子快,更因文档清、示例全、调试易、错误明。基础设施的终极竞争,是工程体验的竞争


结语:一部仓库,一个时代

CANN仓库的演进,是中国AI基础软件从无到有、从弱到强的缩影。它记录了工程师们如何在封锁中突围,在追赶中创新,在AIGC浪潮中确立自主技术路线。

今天,当我们浏览samples/stable_diffusion中的每一行代码,或查阅docs/aclnn_api.md中的接口说明,我们不仅在使用一个工具,更在参与一段历史——一段关于中国如何构建自己的数字文明基础设施的历史。

cann组织链接:https://atomgit.com/cann
ops-nn仓库链接:https://atomgit.com/cann/ops-nn

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐