芯片消息很热,代码不会自己搬过去
昇腾910D这段时间被频繁提起。安兔兔援引DigiTimes报道称,华为正在开发新一代AI处理器昇腾910D,通过把四枚裸晶片封装在同一芯片内,实现超过昇腾910C的算力水平,并指向对标H100能效的目标。
这类消息很容易让团队重新评估国产AI算力。算力需求也确实在往上走。民生证券引用《昇腾计算产业发展白皮书》提到,从2012年开始的6年中,AI计算需求增加了30万倍;IDC测算显示,2021年中国智能算力规模达到155.2 EFLOPS。
但到了工程现场,问题会立刻变具体。
一套原本跑在PyTorch、CUDA、NCCL、Nsight上的模型,迁到昇腾环境,改动不止发生在硬件层。计算后端要换,通信库要换,算子实现要核对,调试方式也要重学。采购单上的价格只是第一行,后面还有一串工程成本。
先看人,不要只看卡
华为昇腾开发者社区有一篇《昇腾算子注册与模型迁移》,内容分成六个章节,从模型迁移分析讲到算子注册与部署。教程能帮开发者上手,也提醒了一件事:迁移不是点一下转换按钮,而是连续的工程动作。
中小团队最容易低估的,通常是人力。
模型主体可能可以通过框架适配先跑起来,可一旦碰到自定义CUDA算子、第三方加速库、特殊attention结构、量化模块,工程师就会被拉到底层。原来依赖CUDA核函数的部分,到了昇腾侧要先看CANN能不能覆盖;覆盖不了,就要评估TBE或Ascend C改写。
大团队可以把这件事放进排期,小团队很可能要从业务开发里抽人。问题不只是“有没有人做迁移”,还包括这个人是否同时看得懂模型结构、算子实现和性能分析。很多迁移成本就藏在这里。
PyTorch迁移,推理通常更适合先试
如果团队原来用PyTorch训练,再迁到昇腾,比较稳的路径通常是先推理、后训练。
推理侧变量少一些。模型结构固定,不涉及反向传播,通信链路也相对简单。只要算子覆盖、精度一致性和吞吐能接受,业务就有机会先跑起来。
训练侧复杂得多。NCCL要换成HCCL,混合精度策略要重新验证,checkpoint、梯度同步、并行策略都可能牵动框架层。模型越大,团队过去在CUDA环境里积累的调参经验,越难完整搬到新环境。
所以迁移前先问清楚:到底迁哪一段?
如果目标是线上推理,降低对单一GPU供应链的依赖,可以优先评估昇腾推理部署。如果还要做大模型预训练或复杂微调,就要把训练框架、算子覆盖、通信性能和故障恢复一并纳入预算。推理迁移和训练迁移,不是一张账单。
CANN算子会把难度拉开
CUDA迁移到CANN,很多麻烦最后都会落到算子上。
标准算子越多,迁移越顺。典型视觉模型、常规CNN结构,往往更容易找到成熟路径。自定义算子越多,账本越难看。尤其是大模型里常见的attention优化、KV cache管理、量化训练、低比特优化器等环节,如果依赖CUDA侧实现,迁移时就要逐项拆开核对。
华为在《构筑开放基础软件栈,共建昇腾AI算力新生态》中提到,CANN是昇腾AI基础软硬件平台的重要组成部分,用来支撑异构计算架构。也就是说,CANN不是外围工具,而是昇腾开发绕不开的底座。
评估时不能只问“能不能跑”。更有用的问题是:
- 现有模型里哪些算子已有稳定支持;
- 哪些地方依赖第三方CUDA库;
- 哪些算子一旦改写,会影响精度、吞吐或显存占用。
前期评估做得粗,后面往往会变成性能调优债。模型上线前看起来只是慢一点,真正进入业务后,排查成本会被放大。
工具链换了,调试手感也会换
CUDA开发者已经习惯了一套组合:torch.cuda、Nsight、torch.profiler,再加上一批围绕CUDA积累起来的第三方库。迁到昇腾后,常见工具会变成torch_npu、CANN工具、昇腾侧性能分析工具,以及开发者社区里的迁移资料。
这些工具能覆盖不少基础工作,但使用习惯不一样。性能问题尤其明显。
原来一个CUDA kernel有瓶颈,可以沿着Nsight的可视化结果往下追;到了CANN环境,团队需要熟悉新的profiling方式、日志格式和算子层级。难点不一定是工具缺失,而是工程师要重新建立判断力。
第三方库也要提前列清楚。CUDA里常见的bitsandbytes、xformers、Triton等工具,不能默认在昇腾侧有等价体验。迁移前最好做一张依赖表:哪些已有官方或社区适配,哪些需要替换,哪些会逼团队自己写算子。
这张表比一句“支持PyTorch迁移”更能反映项目风险。
运维成本不要等上线后才发现
很多团队把迁移当成开发任务,容易漏掉上线后的维护。
昇腾环境涉及驱动、固件、CANN版本、框架插件、集群通信和调度系统。只要其中一层升级,模型服务就可能需要重新验证。对工程师数量有限的团队来说,先使用云厂商或合作伙伴提供的托管能力,可能比一上来就自建复杂集群更现实。
这样会牺牲一部分自由度,但能减少底层排障成本。
团队规模稍大一些,也至少要有人长期盯版本管理和性能回归。否则迁移完成只算过了第一关。后续框架升级、算子替换、模型结构调整,都可能重新带来兼容性问题。
硬件买回来以后,成本没有结束,只是从采购单转进了工程排期。
中小团队可以这样拆账
如果昇腾910D后续进展顺利,国产AI算力的可选项会继续增加。知乎专栏《华为昇腾生态深度解析》也提到,从NVIDIA CUDA到华为CANN的迁移服务,正在解决模型迁移中的核心痛点。
但落到中小团队,判断要收窄。别先问要不要全量迁移,先把几件事拆开:
- 现有模型是否大量依赖自定义CUDA算子;
- 业务真正需要迁的是推理、微调,还是完整训练;
- 团队里有没有人能长期处理CANN算子、性能分析和版本兼容;
- 迁移后的性能波动、调试时间和运维成本,有没有写进项目预算。
如果这些问题答不清,直接押注全量迁移,风险会偏高。
更稳的做法,是先选一个边界清楚的模型或业务模块验证:推理优先,训练暂缓;标准算子优先,自定义算子密集的模型暂缓;线上低风险场景优先,核心收入链路暂缓。
国产算力值得跟踪,但CUDA迁移不能只盯芯片发布时间表。对中小团队来说,真正的分水岭不只是910D什么时候量产,而是自己的代码、人员和工具链,能不能扛住从CUDA到CANN的那段工程距离。