AI 纪元 追踪人工智能最新进展,深度解读前沿技术

昇腾910C跑到千卡,HCCL先查哪一层

公开材料披露,1000颗昇腾910C完成1.6万亿参数DeepSeek-V4-Pro全参数后训练,MFU超过30%。落到机房,排查应从HCCL拓扑、Rank映射和版本组合开始,再用Profiler定位算子与内存拷贝。

0 次阅读 约 2470 字 5 分钟 AI 生成
Server rack densely packed with interconnected AI accelerator chips and cables in a data center
Server rack densely packed with interconnected AI accelerator chips and cables in a data center

据所给公开材料《国产算力里程碑!华为昇腾910C千卡集群完成1.6万亿参数大模型全参数训练,算力利用率超30%》,6月11日,深圳河套学院联合哈尔滨工业大学(深圳)、深圳市大数据研究院及华为有关团队,使用1000颗昇腾910C完成了1.6万亿参数DeepSeek-V4-Pro的全参数后训练。

文章披露的指标包括:模型算力利用率(MFU)稳定超过30%,关键训练算子效率提升14%,1500余步训练没有中断或报错,故障率为0.3‰。

这些数字说明,一套特定的软硬件组合已经把千卡训练跑通。至于HCCL超时发生在哪个Rank、CANN与驱动用了什么版本、算子替换做过哪些取舍,公开材料没有给出逐条日志。与其补一套不存在的“完整日志”,不如把现场真正需要的排查顺序说清楚。

HCCL超时,先别急着改模型

HCCL(Huawei Collective Communication Library)负责昇腾集群中的集合通信。规模扩到百卡、千卡后,逻辑Rank、物理机架和交换机路径只要没有对齐,AllReduce等待就可能吃掉大量训练时间。

一轮排查通常从四件事开始:

  • 先锁定版本组合。 启动脚本、CANN、驱动、训练框架和rank_table.json要一起归档。版本还在变,报错很难稳定复现。
  • 核对Rank和物理拓扑。 对照机架、交换机及线缆布局检查Rank映射,尽量让逻辑上相邻的Rank在物理位置上靠近,减少不必要的跨交换机通信。
  • 看AllReduce等待时间。 使用profiling结果判断时间花在计算、通信还是同步等待上,不要只盯着整机利用率。
  • 找到最早异常的Rank。 HCCL超时往往出现在日志末尾,排查还要向前追。至少保留报错时间、Rank ID、节点、前序算子和版本信息,单张报错截图不够用。

直接重启有时能让任务暂时恢复,却不会修正错误的Rank映射或版本组合。不同CANN版本的配置项也不宜照搬,升级前要重新核对通信配置和op_info.json。

PyTorch迁移,报错码只是一条线索

对于已有PyTorch代码的团队,迁移到昇腾910C时,容易卡在FlashAttention、位置编码或其他自定义算子上。日志里的TBE_IMPL_ERROR、ACL_ERROR可以帮助判断问题所在层级,但无法直接给出根因。

更稳妥的处理方式是把问题缩小:

  • 记录出错算子的名称、输入shape、数据类型,以及对应的CANN和驱动版本;
  • 优先尝试昇腾已有算子,或使用matmul、reshape、broadcast等标准算子组合替代非标实现;
  • 必须保留自定义算子时,再考虑Ascend C或TBE,并单独验证精度和执行时间;
  • 使用msprof或Ascend Profiler查看Kernel Execution Time和Memcpy,分清耗时来自算子计算还是内存搬运;
  • 在正式迁移前运行Porting Advisor,提前筛出需要改造的代码和依赖。

2025年6月20日的华为开发者大会上,华为云计算CEO张平安宣布新一代昇腾AI云服务全面上线。华为在2025年全联接大会相关演讲中还提到,研发团队到4月30日使Ascend 910B、910C的推理能力达到客户基本需求。这些进展说明平台和服务仍在完善,具体到训练任务,第三方算子依然需要逐项验证。

MFU上不去,要看整条时间线

公开案例给出的MFU超过30%,关键训练算子效率提升14%,但摘要没有说明收益来自哪个单一参数。实际调优时,应把一个训练step拆成计算、通信、内存搬运和重计算几部分,再决定先改哪里。

通信与计算重叠

PyTorch迁移时,需要确认torch.distributed使用backend='hccl',异步集合通信也确实出现在Profiler时间线上。配置文件里写了异步,不代表运行时已经形成重叠。MindSpore任务则要结合流水并行配置检查阶段间等待。

混合精度与内存搬运

FP16、BF16和FP32的选择不能只看显存占用。切换精度后,要重新核对关键层输出和收敛情况;Profiler中如果Memcpy持续偏高,还应检查同步执行和重复数据搬运。

激活值重计算与Checkpoint

激活值重计算可以缓解显存压力,也会增加计算和同步开销。开启范围应以step时间和Profiler结果为准,不宜套用固定层数。Checkpoint的保存频率同样要结合写盘开销、任务时长和可接受的回退范围来定。

故障恢复要先写进运行手册

现有素材没有说明此次训练是否使用动态Rank剔除,也没有给出HCCL自动移除故障卡后继续训练的实现细节。因此,生产环境不宜把这项能力当作默认前提。

运维手册至少要写清楚:节点异常如何确认,故障节点怎样隔离,通信组如何重新建立,使用哪个Checkpoint恢复,以及恢复后如何核对训练步数和参数状态。监控侧则应覆盖卡温、通信丢包和光模块误码率(BER),阈值按照设备与机房规范设置,避免套用缺少来源的统一数字。

1500余步没有中断,是一次训练结果。可复用的工程能力,还要经得住节点掉线、进程退出和版本回滚。

千卡成绩放回工程现场看

1000颗昇腾910C完成1.6万亿参数模型后训练,至少说明国产算力已经在特定配置下跑过千卡规模任务。对开发团队来说,接下来要回答的仍是一些具体问题:

  • HCCL超时时,哪个Rank最先出现异常?
  • CANN、驱动和框架的可复现版本组合是什么?
  • 非标算子采用了哪种替代方案,精度是否重新验证?
  • Checkpoint损坏或节点退出后,任务怎样恢复?

这些信息比一组通用环境变量更有用。涉及PyTorch迁移、算子开发和版本适配时,也可以继续查阅鲲鹏昇腾开发者社区中的工具说明与实操资料。

参考资料

相关阅读