昇腾950DT十六万卡集群背后:DeepSeek训练为何仍依赖英伟达?
昇腾950DT一口气堆到16万张还点名叫DeepSeek来建集群——这条消息在我加的几个AI基础设施群里疯传了两天。很多人第一反应是“国产算力要起飞了”第二反应才是标题里那句灵魂拷问既然都能上16万卡华为芯片集群了为什么DeepSeek训练还是绕不开英伟达这话题背后其实是一道很现实的工程选择题。算力从来不只是“显卡型号”而是一整套从芯片、互联、框架、算子再到运维工具的体系。这篇文章就从一个常年折腾模型训练和推理部署的从业者视角把这件事拆开聊透昇腾950DT集群到底意味着什么训练和推理对硬件的需求差异有多大英伟达在训练侧到底哪里不可替代以及如果你也想把DeepSeek这类模型真正跑起来该按什么思路选算力、避什么坑。1. 16万卡昇腾集群到底是个什么量级1.1 16万卡意味着什么算力、功耗与网络的真实账先说单卡。昇腾950DT大概率是昇腾910系列的继任者目前没有完整的官方参数公开按业界普遍推测950DT的单卡FP16算力应该能站上500 TFLOPS这个档位显存给到64GB以上带宽摸到3TB/s左右。作为对比英伟达H100的FP16稠密算力是989 TFLOPS带80GB HBM3带宽3.35TB/s。换算下来昇腾950DT单卡性能大概在H100的一半到六成之间这已经是非常乐观的预估了。再看规模。16万卡如果按每台8卡算就是2万台AI服务器一机柜按8到16台算得1500到2500个机柜机房面积直奔数万平方米。功耗更夸张——950DT这种加速卡TDP大概率在350W到550W之间就算按400W算16万卡满载就是64MW电功率加上CPU、内存、交换芯片、存储阵列、制冷系统整个园区的总功耗奔着100MW以上去。普通一个中型数据中心的市电容量也就几十MW这已经不是“买卡”的范畴是在建一个能塞下一座小型工厂的算力园区。大规模训练集群最难的还不是电是网络。16万张卡同时做梯度同步每张卡最好能跑到200Gbps以上的东西向带宽且延迟要极低业界主流是RoCE或InfiniBand方案。卡越多网络拓扑越深光纤数量、交换设备、运维复杂度都是指数级上涨。华为自己有全套的CloudEngine交换机加RoCE方案在这方面有天然优势但16万卡规模的通信调度全世界敢拍胸脯说“我能搞定”的公司不超过三家。1.2 为什么DeepSeek愿意做这么大动作有人问DeepSeek不是一直在用英伟达训练吗为什么还要砸巨资建国产集群我的判断是这是供应链和业务结构双重驱动下的必然选择。高端英伟达卡的获取周期长、数量受限这个现实所有做大规模模型的公司都明白。与其把全部算力押在一个供应不确定的源头上不如把一部分稳定负载挪到国产芯片上。昇腾在纯推理场景的每瓦性能这几年进步确实明显而DeepSeek这类产品一旦做大了在线推理请求量是海量的这部分负载采购成本极其敏感正好是昇腾能打的战场。还有一点不能忽略DeepSeek的团队有极强的底层优化能力。CANN算子、HCCL通信库这些在普通团队眼里是“劝退级”的难啃骨头在他们手里是可以自己动手改的。所以“16万卡昇腾集群”这个规划本质上是把技术实力转化为算力话语权的一次重仓而不是简单的“买卡”。2. 训练和推理对硬件的需求根本是两个世界2.1 预训练是“反复修改答题思路”推理只是“照模板交卷”很多读者混淆“训练”和“推理”我先用一个大白话类比。训练模型尤其是预训练本质是让模型在海量语料里做预测任务预测错了就反向传播梯度回头调整权重。这个过程极度消耗算力——每处理一个batch的数据模型不仅要前向算出结果还要反向算出每个参数的梯度再用优化器更新权重。如果这次训练跑了一半发现loss下不去或者数据质量有问题基本上就是白跑几周。这相当于一个人还没毕业每天都在做题、对答案、改错、再做题每一步都在消耗大量精力。推理就完全不一样了。模型已经训练完毕权重固定下来接到输入只需要做一次前向计算把结果吐出来就行。不需要梯度不需要优化器不需要反向传播。相当于已经出师的师傅拿到题直接写答案不需要再回炉改造。从计算量上看同样一个7B模型跑一次推理的前向计算大约需要14 GFLOPs级别的运算而训练阶段一个token的前向加反向计算量大约是推理的3倍。但这只是单步的差距真正拉开差距的是训练需要在海量数据上循环几十上百轮整体算力消耗是推理的几百倍到上千倍。2.2 通信、显存、精度训练比推理苛刻在哪些硬指标除了计算量训练和推理对硬件的核心指标要求几乎是两个维度显存占用训练要把权重、梯度、优化器状态、激活值全部塞进显存。一个7B模型用AdamW优化器做全参数训练光权重加梯度加优化器状态就超过100GB所以单卡80GB的A100/H100也只能勉强跑7B级全参数微调。推理就轻松得多7B模型FP16权重才14GB加上KV Cache24GB显存也能跑得动。通信要求训练每算完一个batch所有卡上的梯度要做一次全局同步AllReduce卡间通信量极大。一万卡集群做一次同步通信延迟会直接决定训练效率。推理则不同推理集群里各卡各处理各的请求基本不需要做梯度同步通信压力小很多最多负载均衡、张量并行的卡间传输。精度需求训练阶段对数值精度非常敏感一般用BF16或者FP16混合精度同时梯度累积用FP32防止数值溢出。推理阶段就宽容得多可以用INT8、FP4量化精度损失在可接受范围内换来成倍的吞吐提升。容错能力训练任务一旦中断可能丢失几天的进度所以要频繁断点续训、做快照。推理是稳态服务挂了重启容器就行。这也是为什么昇腾芯片要进入大规模训练场景最难的是把整套工程体系从“能跑”做到“稳定跑几周不出错”。对比维度模型训练模型推理计算方向前向反向权重更新仅前向显存占用权重梯度优化器状态激活值权重KV Cache通信模式每步全局梯度同步通信量大无梯度同步通信压力小精度要求高常用BF16/FP32累积可接受INT8/INT4量化故障影响中断算力浪费需断点续训可水平扩展重启即恢复典型场景SFT、全参预训练、LoRA微调在线对话、批量打标、生成任务3. 训练还得靠英伟达到底“卡”在哪3.1 英伟达的优势从来不只是硬件CUDA活了快二十年很多人一聊到英伟达就只盯着H100/B200的算力数字。但真正的护城河是CUDA生态。CUDA从2007年推出到现在积累了庞大的算子库、调试工具、性能分析工具和第三方库。PyTorch、TensorFlow、JAX这些主流框架默认优化目标就是CUDAFlashAttention、vLLM、DeepSpeed、Megatron-LM这些大模型训练推理的标配组件最早也是最完善的支持版本全部是CUDA。英伟达最近还在推CUDA Tile这类更底层的编程抽象表面上是给开发者更多控制力实质上是用一层新的API把手伸得更深让所有优秀的kernel都能深度绑定在自家指令集上优化。对开发者来说这意味着什么就是你在PyTorch里随便写一个自定义算子如果是在英伟达卡上直接编译就能跑如果是昇腾大概率需要改写、找等价算子或者写CANN自定义算子。日常跑实验时这种“即写即用”的体验差距会极大影响一个团队的研发效率。CUDA生态还有一个雪球效应所有优秀工程师都在CUDA上沉淀最佳实践所有开源项目都默认针对CUDA做调优新框架为了兼容性不得不优先支持CUDA这让后来者即使单卡性能追平了软件生态的追赶仍然需要数年时间。3.2 NCCL为什么是训练集群的“隐形地基”大规模分布式训练里有一个容易被忽略但极其关键的组件——集合通信库。英伟达的NCCLNVIDIA Collective Communication Library承担了分布式训练中几乎所有AllReduce、AllGather、Broadcast操作。简单说一万张卡一起训练每张卡算完梯度之后必须把所有卡上的梯度汇总再分发回去这个动作如果做得慢整卡群的算力就在原地空转。NCCL做了两件事一是利用NVLink和NVSwitch在单机内实现高速卡间通信二是利用InfiniBand或RoCE网络实现机间通信并且在两者之间做智能路由。它的通信延迟极低带宽利用率极高还支持通信计算重叠。绝大多数分布式训练框架比如DeepSpeed、Megatron-LM、torchrun底层调的都是NCCL。昇腾对应的通信库叫HCCLHuawei Collective Communication Library。客观讲HCCL也在快速追赶基础功能已经齐全但工程成熟度和调试工具链的积累还不够厚。八卡机内通信问题不大一旦规模放大到几千卡、几万卡通信拓扑优化、拥塞控制、故障定位这些能力不是一两年能补齐的。在大规模训练场景里NCCL就是那个站着不说话但所有人都离不开的隐形地基。3.3 昇腾950DT的真实水平与瓶颈昇腾950DT放在推理场景里性价比是站得住脚的。基于昇腾的推理引擎包括MindIE、vLLM-ascend、MindFormers等已经在很多实际业务里承担起大模型在线服务。尤其对DeepSeek这类开源模型昇腾可以提供不错的并发吞吐和时延表现部署成本还比英伟达方案低一截。但训练瓶颈依旧在。单卡算力可能追上了H100的一大半但一个16万卡的训练集群是否真的能高效运转取决于网络拓扑设计、通信调度、故障恢复、算子覆盖率这四件事。举一个具体的例子训练过程中一旦有一张卡故障理想情况是秒级剔除、自动从断点续训不拖累整个任务但在国产集群上这种高可用能力目前还没有经历过16万卡规模的公开验证。还有一个细节很多开源模型训练代码里用了自定义CUDA算子做加速比如某些FlashAttention变体、MoE的专家路由实现。这些kernel在英伟达卡上开箱即用换到昇腾上就得人工排查、重写、再验证。对于DeepSeek这种团队来说能啃下来但每多啃一个算子就多一分工程成本和时间成本。这也是“训练还是得靠英伟达”的最直接原因——不是硬件绝对性能差而是整套软件栈的适配成本太高。4. 两套算力并存DeepSeek的“两条腿走路”逻辑4.1 训练留英伟达推理放昇腾是成本与效率的最优解一个成熟的AI公司不会只押一边。DeepSeek如果真按16万卡的规模去建昇腾集群最合理的策略是“按负载分池”。预训练和重型后训练任务继续放在英伟达集群上。这类任务对生态依赖最深、对稳定性要求最高用最成熟的方案才能保证大模型研发节奏不被搅乱。推理服务和规模化数据处理逐步迁移到昇腾集群。这部分负载看重单卡吞吐、部署成本和运维简便性昇腾在性价比上有优势。尤其是DeepSeek的产品一旦用户量上来推理请求会出现明显的高峰和波谷这时候昇腾集群作为弹性算力池成本优势会被放大。这种“两条腿走路”的模式本质上是把不同算力的长板组合起来英伟达提供研发加速昇腾提供规模成本优势。4.2 昇腾集群能承接什么样的DeepSeek负载具体来说16万卡规模的昇腾集群可以承接这几类典型负载在线API推理。DeepSeek的对话、代码生成等在线服务在昇腾上用MindIE或vLLM-ascend部署后只要吞吐达标就可以承载很大一部分线上流量。离线批量推理和数据合成。比如用大模型打标签、合成训练数据、指令数据清洗这些任务对单请求延迟不敏感可以批量跑非常适合用昇腾集群做大吞吐处理。强化学习策略采样。大模型的后训练阶段需要策略模型不断生成回答rollout本质上是海量推理任务。这类负载可以跟训练主循环解耦放在昇腾集群上在成本和性能之间取平衡。轻量微调。LoRA、Q-LoRA这类参数高效微调在昇腾上是可以落地的因为训练参数量小对通信和生态要求相对可控。至于16万卡昇腾能不能做大规模全参数预训练我认为短期看工程挑战很大但作为备份算力池和推理基座是完全合理的部署策略。4.3 实操把DeepSeek模型跑在昇腾上需要几步如果你也想尝试把DeepSeek模型部署到昇腾环境我按实际操作顺序列一下参考步骤第一步准备环境。安装昇腾驱动、CANN工具包确认npu-smi info能看到NPU设备。PyTorch环境需要额外安装torch_npu插件版本必须与CANN的版本严格匹配这一步最容易踩坑。第二步选择推理引擎。生产环境推荐用MindIE或者vLLM的昇腾版vllm-ascend。MindIE对昇腾硬件做了深度优化适合正式上线vLLM-ascend胜在API熟悉、社区活跃和OpenAI接口兼容性好。第三步模型转换。部分引擎支持直接加载safetensors权重部分需要先转成昇腾的离线模型格式。如果用的是vLLM-ascend通常可以直接加载HuggingFace格式的DeepSeek权重比较省事。第四步启动服务。以vLLM-ascend为例配置环境变量后拉起服务export ASCEND_RT_VISIBLE_DEVICES0,1,2,3 python -m vllm.entrypoints.openai.api_server \ --model /path/to/deepseek-model \ --tensor-parallel-size 4 \ --dtype bfloat16 \ --port 8000第五步验证。用curl或OpenAI SDK发一个推理请求检查返回速度和显存占用再做并发压测确认能扛住预期峰值。这个流程看下来昇腾部署推理服务已经不算难真正的分水岭在训练侧。5. 训练侧怎么做给继续用英伟达训练的人一些实操参考5.1 一个标准的DeepSeek模型微调环境怎么搭如果你现阶段还是想在英伟达卡上做DeepSeek系列模型的微调我建议按这套配置来。硬件层面最稳的是A100/H100 80GB或者新版H200。显存少于40GB的话就别做全参数微调了老老实实跑LoRA。软件层面核心组合是NVIDIA驱动 CUDA Toolkit PyTorch DeepSpeed或PEFT。版本匹配是个大坑一条经验是先查PyTorch官方对CUDA版本的兼容范围再查NCCL版本最后查驱动按矩阵来别乱升级。以LoRA微调DeepSeek-R1为例最简启动方式torchrun --nproc_per_node8 train.py \ --model_name_or_path deepseek-ai/DeepSeek-R1-Distill-Qwen-7B \ --output_dir ./lora_output \ --per_device_train_batch_size 2 \ --gradient_accumulation_steps 8 \ --learning_rate 2e-5 \ --num_train_epochs 3 \ --logging_steps 10 \ --save_steps 500 \ --bf16 True \ --gradient_checkpointing True这个配置在8张A100/H100上训练7B模型一个epoch大约跑1到2小时具体看数据量。gradient_checkpointing能显著降低显存代价是训练速度慢10%到20%但这个trade-off通常很值得。5.2 显存怎么算训练和推理其实是两套公式显存预算是很多人最容易算错的环节我直接给出经验公式。推理场景显存约等于权重大小加上KV Cache。7B模型FP16权重14GBINT4量化后约4GBKV Cache看并发和上下文长度通常预留2到8GB。所以24GB显存的消费级显卡跑7B量化模型没问题但如果要跑671B的DeepSeek完整版即使INT4量化也要350GB以上显存得出动多卡并行或者CPU offload。训练场景就完全不同。一个7B模型全参数训练粗略估算权重FP1614GB梯度FP16跟权重一样14GBAdamW优化器状态FP32版一阶动量二阶动量各4字节/参数加权重副本4字节/参数约84GB激活值视序列长度和batch size10到30GB不等加起来轻松突破120GB。这就是为什么8卡80GB集群做7B全参微调也只是勉强够。如果你的目标是微调一个大模型优先考虑LoRA或者QLoRA。LoRA只训练几百MB到几GB的适配器参数优化器和梯度开销小一个数量级一张24GB显卡甚至都能跑得动。5.3 避坑通信和版本这两类问题最磨人训练跑不起来90%的问题出在两个地方通信和版本。NCCL超时是最常见的通信故障。如果你发现训练一跑多卡就卡住、报NCCL timeout优先排查网络。先看各节点之间能不能互相ping通再看网卡速率和MTU设置最后用nccl-tests测一下实际的AllReduce带宽。很多时候问题是防火墙没放行TCP/UDP端口或者RoCE的PFC流控没开跟代码一点关系都没有。版本问题同样磨人。nvcc -V显示的CUDA版本可能跟nvidia-smi显示的不一致前者是Toolkit版本后者是驱动支持的版本不匹配就跑不了PyTorch的新版。遇到CUDA error: no kernel image is available这类报错基本就是CUDA版本和显卡驱动不匹配降级CUDA Toolkit版本或者升级驱动解决。还有一个特别常见的坑DataLoader的数据加载瓶颈。GPU在等数据nvidia-smi里显存占用不高、GPU利用率忽高忽低通常就是DataLoader的num_workers开太少或者数据预取没做好。先加num_workers再考虑persistent_workersTrue最后看IO是不是落在机械盘上。6. 常见问题与经验杂记6.1 大家最近问得最多的问题整理一下最近在社区被问烂的几个问题给个简短版本。训练和推理的区别一句话版训练是造模型推理是用模型。造模型要算梯度、要优化器、要退回去反复改显存和通信开销都大用模型就是前向算一遍出结果省得多。DeepSeek本地部署需要什么显卡7B蒸馏版FP16权重16G显存起步量化后12G到16G的卡能跑。671B完整版FP16权重要1.3TB多卡并行或者量化到INT4以后也要350GB以上至少8张80G卡或者用CPU offload牺牲速度。昇腾能跑PyTorch吗能通过torch_npu插件适配不少训练和推理代码可以直接跑但会碰到算子不支持、性能不如CUDA优化的问题需要额外适配。cu130是CUDA 13吗是。CUDA版本号和驱动有强绑定升级CUDA Toolkit之前先确认驱动版本支持否则就会遇到“驱动和系统版本不符”的报错。vLLM怎么接入DeepSeekvLLM提供OpenAI兼容接口启动方式跟上面昇腾示例一致客户端用openai库或requests直接拉/v1/chat/completions就行注意修改base_url指向vLLM的地址。6.2 我个人的几点体会做了几年模型部署和训练我最大的体感是选算力平台本质是选生态不是选参数。单看芯片规格昇腾950DT和英伟达的差距正在肉眼可见地缩小但一到实际项目中能不能用上别人验证过的成熟方案遇到问题能不能搜到答案有没有趁手的调试工具这些“看不见的东西”才是决定研发效率的胜负手。国产芯片的进步速度确实超乎预期。前两年你说用昇腾跑大模型推理很多人会摇头现在vLLM-ascend、MindIE这些引擎已经能拿来生产了。对于推理侧、轻量微调侧国产卡是可以认真评估的选项。但大规模预训练这种“体力活”只认CUDA生态这是我在多个项目里跑出来的经验不掺杂任何情结。所以如果非要给一个选型建议训练/微调用英伟达推理/线上服务认真评估昇腾两条腿走路把预算花在刀刃上。这大概是当下最务实的算力策略。最后再分享一个小技巧无论用哪家卡都先在小规模环境里把模型、数据、通信这三件事验证一遍再加规模。算力规模翻十倍问题也会翻十倍前期省掉的调试时间后期都会加倍还回来。