华为昇腾910B容器部署教程:CANN驱动到模型训练_极智算
去年不少客户说甲方明确要求国产化方案。当时市场上能选的国产训练卡不多,昇腾910B是少数能在性能上对飙A100的选项。但问题来了——团队之前全是用NVIDIA生态的,从CUDA切到CANN,中间踩了不少坑。
这篇文章把从零开始搭建昇腾910B容器化训练环境的完整过程记录下来。不管你是刚开始接触昇腾生态,还是已经在用但遇到环境问题,希望能帮你少走弯路。
为什么要把昇腾910B跑在容器里
先说一个现实情况:昇腾910B的驱动和CANN(华为昇腾AI处理器配套的异构计算架构)版本迭代很快,仅2026年上半年就发布了3个大版本。直接在裸机上装驱动,一旦需要切换CANN版本就得重装环境,运维成本太高。
用Docker容器来管这件事有三个明显好处:
- 版本隔离:不同项目可以跑不同版本的CANN和MindSpore,互不干扰
- 环境复用:配好一个镜像,团队成员都能直接用,不用每人装一遍
- 快速迁移:从开发环境到生产环境,镜像一拉就能跑
关键认知:昇腾的Docker支持已经比较成熟。华为官方提供了ascend-mindspore和ascend-pytorch等基础镜像,不需要像两年前那样从零编译CANN驱动进容器。
环境准备:选对镜像就成功了一半
部署昇腾910B容器环境,宿主机需要满足几个条件:
| 组件 | 最低要求 | 推荐配置 |
|---|---|---|
| 操作系统 | Ubuntu 20.04 / CentOS 7.6 | Ubuntu 22.04 LTS |
| NPU驱动 | Ascend HDK 23.0.RC3 | Ascend HDK 24.1.RC2 |
| Docker | 20.10+ | 24.0+ |
| CANN版本 | 7.0.RC1 | 8.0.RC2(2026年最新稳定版) |
宿主机上先把NPU驱动装好。装完之后执行 npu-smi info,如果能看到昇腾910B的设备信息和健康状态,说明驱动层面没问题了。
接下来是Docker层面,需要把昇腾设备映射进容器。华为提供了 Ascend Docker Runtime,安装方式和NVIDIA Container Toolkit思路类似:
wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/...
sudo dpkg -i Ascend-docker-runtime_*.deb
# 2. 重启Docker服务
sudo systemctl restart docker
# 3. 验证设备可用
docker run --rm --runtime=ascend -e ASCEND_VISIBLE_DEVICES=0 \
ascendhub.huawei.com/public-ascendhub/mindspore:2.3.0 \
python -c "import mindspore;print(mindspore.run_check())"
上面这个命令跑通后,恭喜你——昇腾910B的容器化环境已经基本就绪了。


▲ 昇腾910B容器化部署的组件关系示意
框架适配:MindSpore还是PyTorch?
这是所有从NVIDIA转过来的团队第一个纠结的问题。
MindSpore是华为自研框架,与昇腾的适配自然是最紧密的。实测下来,用MindSpore跑昇腾910B,算力利用率能稳定在85%-92%,接近理论峰值。而且MindSpore 2.3版本之后,API设计已经比较成熟,和PyTorch的使用体验差距不大。
PyTorch方面,华为在2025年底发布了torch_npu 2.0版本,做了大量适配工作。实测结论是:大部分常见模型可以直接迁移,不需要改代码,性能损失在10%以内。但一些用到自定义CUDA Kernel的模型,迁移成本就比较高了。
我们的经验是:新项目直接用MindSpore,旧项目如果代码中CUDA依赖不深可以切PyTorch+torch_npu,深度依赖CUDA的项目建议先保持NVIDIA方案。
性能调优:910B的潜力到底怎么挖
跑通环境和跑出好性能是两码事。昇腾910B的FP16理论算力是320 TFLOPS,但我们第一次跑ResNet-50训练的时候,实际利用率只有45%。排查下来,主要问题出在三个地方:
- 数据加载瓶颈:昇腾的数据预处理管线默认配置偏保守,需要手动调整
num_parallel_calls参数。我们调到16之后,数据吞吐量提升了近一倍。 - 混合精度未开启:CANN的混合精度训练需要显式调用
amp模块,不像NVIDIA AMP那样默认适配。开启之后训练速度提升了约60%。 - 算子融合:CANN的图编译阶段可以做一些算子融合优化。在MindSpore中设置
context.set_context(graph_kernel_flags="--opt_level=3")后,小模型推理延迟降低了25%。

▲ 调优前后昇腾910B训练吞吐量对比
租用还是自建?给个实在建议
很多人问910B到底是自建机房还是租用划算。先看数据:
| 方案 | 初始投入 | 月均成本(8卡) | 适合谁 |
|---|---|---|---|
| 自建机房 | 约80-120万(含服务器+网络+制冷) | 电费+运维约2-3万 | 长期稳定训练,GPU利用率>80% |
| 裸金属租赁 | 0 | 约5-7万 | 中长期项目,追求性能稳定 |
| 容器按需 | 0 | 按实际使用量浮动 | 短期项目、实验阶段 |
除非你的GPU利用率能持续维持在80%以上超过18个月,否则租赁的性价比远高于自建。910B硬件更新也快,今年租的卡明年可能就有新款,自建反而有资产贬值风险。
对于绝大多数团队来说,先租容器方案验证模型,确认跑通了再切裸金属长租,是最务实的选择。目前昇腾910B裸卡日租约180-260元,容器方案按小时计费大约8-12元/小时,算下来一个中等规模项目的月度算力成本可以控制在1-3万元。
华为昇腾910B容器/裸金属多种方案可选,按需灵活租用
查看昇腾910B最新报价 →