2025年8月5日,昇腾计算产业发展峰会上,华为轮值董事长徐直军宣布,昇腾硬件使能CANN全面开源开放,Mind系列应用使能套件及工具链全面开源。观察者网当时的报道提到,CANN的全称是Compute Architecture for Neural Networks,作用是连接上层AI训练框架与昇腾硬件。
这件事对准备引入昇腾910C的团队很关键。过去,很多CUDA项目迁移到国产AI算力时,最担心的是底层接口不透明、工具链封闭、遇到问题只能等厂商支持。CANN开源后,开发者至少有了往下看的机会:算子怎么落到硬件上,通信参数怎么调,工具链能不能接入自己的流程,都有了更多操作空间。
但开源不等于迁移自动完成。CUDA项目搬到CANN,难点通常不在“能不能启动”,而在启动之后能不能稳定、可调、跑出符合预期的效率。
真正麻烦的,常常是自定义算子
如果项目主要使用框架里的标准算子,迁移压力会小一些。问题出在自研结构上:特殊注意力模块、改过的归一化层、非标准后处理、为了推理吞吐写过的CUDA扩展。这些代码在原来的环境里可能已经被调到足够顺手,换到CANN后,就需要重新确认有没有对应实现,性能路径是否合理,精度行为是否一致。
华为在《构筑开放基础软件栈,共建昇腾AI算力新生态》中把CANN称为昇腾AI的异构计算架构底座。这个定位说明了它的边界:CANN负责把上层框架和昇腾硬件连接起来,但项目里的特殊算子,仍然要有人理解并改写。
这也是CUDA迁移最容易被低估的一笔账。模型工程师习惯在PyTorch里组合模块,系统工程师则要关心内存访问、算子融合、数据排布和编译链路。到了迁移阶段,这两类工作会被迫挤在一起。团队如果只有模型侧经验,排查会很慢;如果只有底层经验,又可能看不懂模型为什么这么写。
HCCL不是换个库名那么简单
单卡能跑,只能说明第一关过了。多卡、多机训练还要看通信。
在CUDA体系里,开发者更熟悉NCCL;到了昇腾体系,集合通信对应的是HCCL。名字可以类比,工程习惯却不能完全照搬。训练任务一旦涉及数据并行、张量并行或流水并行,梯度同步、参数广播、节点拓扑都会影响吞吐。代码层面只改几行接口,实际集群里可能要重新检查网络、进程绑定、设备映射和通信初始化。
这类问题最讨厌的地方在于,它不一定报错。任务能跑,但慢;日志正常,但吞吐不对;单机测试没问题,扩到多节点才暴露瓶颈。CANN开源后,用户可以更深入地看通信和执行路径,这是一件好事,但也意味着团队要承担更多底层判断。
如果公司只是想“把CUDA代码换个后端”,HCCL这一关会让预期迅速降温。迁移预算里最好单独给通信调优留时间,而不是把它塞进“环境配置”这种模糊项里。
工具链决定排障速度
迁移最怕两种情况:一是问题复现不了,二是复现了也不知道卡在哪里。
CUDA开发者长期依赖Nsight等工具定位性能瓶颈。昇腾侧也有Profiling、MSProfiler等工具,华为和鲲鹏昇腾开发者社区也在持续补文档、补案例。公开的社区页面里,已经能看到“从环境搭建到算子调试:CANN”等内容,也有“Porting Advisor”这类迁移工具解析。
这些材料说明,昇腾工具链正在补齐开发者入口。但对已有CUDA项目来说,工具存在和工具好用之间还有距离。团队要重新适应性能数据怎么看、算子耗时怎么拆、报错信息对应哪一层、版本依赖怎么锁定。尤其是训练框架、CANN版本、驱动、硬件固件之间的组合,不能只靠经验猜。
很多迁移项目的延期,不是因为某个大问题解决不了,而是每天都被小问题切碎:环境变量、依赖冲突、算子降级、精度差异、通信等待。单独看都不大,叠在一起就会吞掉研发节奏。
公开材料能证明需求,但不能替你完成迁移
从需求侧看,国产AI算力确实有明确背景。民生证券引用《昇腾计算产业发展白皮书》的材料称,从2012年开始的6年中,AI计算需求增加了30万倍;IDC测算显示,2021年中国智能算力规模达155.2 EFLOPS。算力需求增长、供应链安全、国产基础软硬件成熟,都会推动企业评估昇腾方案。
昇腾910C也因此被放到更多采购和适配讨论里。有媒体曾以“华为昇腾910C AI芯片:引领未来,2025年5月开启大规模供货”为题报道相关进展。对企业来说,问题已经不只是有没有国产卡可选,而是现有模型和工程体系能不能承接这次切换。
这里需要把两件事分开看。
采购部门关心的是算力成本、供货确定性和供应链风险。研发部门关心的是训练任务能不能跑、性能能不能调、问题能不能定位、上线节奏会不会被打断。前者可以用报价和合同讨论,后者必须用迁移验证回答。
迁移前,先列一张朴素清单
真正启动前,团队至少应该先问几个具体问题:
- 项目里有多少CUDA扩展、自定义算子和框架外代码?
- 这些算子在CANN侧是否已有替代实现?没有的话,谁来写、谁来测?
- 当前训练是否依赖NCCL特性?迁到HCCL后,通信拓扑由谁负责验证?
- Profiling、日志、性能基准是否能在昇腾环境里复现?
- 精度、收敛、吞吐的验收标准是什么?
- 迁移期间,模型迭代是否要暂停,还是保留CUDA环境并行推进?
这些问题不高级,但比一句“支持PyTorch适配”更接近工程现场。
CANN开源的价值在于降低黑箱程度,让开发者有机会深入昇腾软件栈。它改变的是可控性,不会抹平CUDA到CANN之间的经验差。对中型团队来说,迁移昇腾910C最现实的安排,是先选一个边界清楚的推理或训练任务试点,把算子、通信、工具链和版本管理跑通,再决定是否扩大到核心任务。
国产算力值得投入,但不能只按卡价做决策。CUDA迁到CANN,买到的是硬件资源,真正要补的是工程能力。