核心内容摘要
51朝阳群众最新吃瓜爆料:娱乐圈的暗流涌动,你不知道的内幕!
当DeepSeek模型的规模膨胀到67B甚至更大时单张加速卡——哪怕是拥有64GB HBM的昇腾910B——也显得捉襟见肘。
67B参数的模型仅权重本身就需要约130GBFP16这还不算推理时KV Cache和中间激活值Activation的巨大开销。
面对物理显存的“硬墙”我们唯一的出路是并行化Parallelism。
在众多并行策略中Tensor Parallelism (TP张量并行)凭借其极低的延迟特性成为了大模型在线推理的绝对主流。
本篇将深入解构TP在昇腾平台上的
实现原理、通信机制以及针对DeepSeek模型的特定优化策略。
并行策略的江湖为什么是TP在分布式训练和推理的江湖中主要有三大门派Pipeline Parallelism (PP流水线并行)按层切分。
Card 0算前10层Card 1算后10层。
缺点存在严重的“气泡”Pipeline Bubble。
当Card 0在计算时Card 1只能干等硬件利用率低且首字延迟Latency随着卡数线性增加。
Data Parallelism (DP数据并行)每张卡复制一份完整的模型处理不同的请求。
缺点前提是单卡能装下整个模型。
对于67B模型这显然不可能。
Tensor Parallelism (TP张量并行)按矩阵切分。
每一层的矩阵乘法被拆分到多张卡上同时计算。
优点所有卡时刻都在忙碌延迟极低接近单卡速度显存占用被均匀分摊。
对于追求极致响应速度的在线推理服务TP是当之无愧的王者。
TP的数学魔法行列切分TP的核心思想是将一个大的矩阵乘法YX×WY X \times WYX×W拆解为多个小的矩阵乘法。
以DeepSeek模型中最常见的MLP多层感知机和Self-Attention层为例TP采用了经典的“列切分-行切分”交替策略以最小化通信次数。
1 列切分Column Parallel假设输入XXX的维度是[B,H][B, H][B,H]权重WWW的维度是[H,4H][H, 4H][H,4H]。
我们将WWW按列切分为两半W1,W2W_1, W_2W1,W2分别放在Card 0和Card 1上。
Card 0 计算Y1X×W1Y_1 X \times W_1Y1X×W1Card 1 计算Y2X×W2Y_2 X \times W_2Y2X×W2此时每张卡得到的输出Y1,Y2Y_1, Y_2Y1,Y2是完整输出的一部分通道。
这一步完全独立不需要任何通信。
2 行切分Row Parallel紧接着下一层假设权重VVV的维度是[4H,H][4H, H][4H,H]。
我们将VVV按行切分为V1,V2V_1, V_2V1,V2。
Card 0 计算Z1Y1×V1Z_1 Y_1 \times V_1Z1Y1×V1Card 1 计算Z2Y2×V2Z_2 Y_2 \times V_2Z2Y2×V2注意根据矩阵乘法结合律ZY×VY1×V1Y2×V2Z Y \times V Y_1 \times V_1 Y_2 \times V_2ZY×VY1×V1Y2×V2。
因此最终结果ZZZ需要将两张卡的计算结果Z1Z_1Z1和Z2Z_2Z2相加。
3 AllReduce通信的代价这就引入了TP中唯一的通信操作AllReduce。
Card 0和Card 1必须交换各自持有的Z1Z_1Z1和Z2Z_2Z2并计算和。
由于这一步发生在每一层Transformer Block的末尾DeepSeek-67B有几十层意味着一次前向传播需要几十次AllReduce。
通信带宽成为了系统的生死线。
昇腾上的实现HCCL与HCCS在昇腾系统中多卡通信由HCCL (Huawei Collective Communication Library)负责它是对标NVIDIA NCCL的通信库。
1 物理通道HCCS互联在昇腾服务器内部8张NPU卡并非通过PCIe互联而是通过华为自研的HCCS (Huawei Cache Coherent System)协议全互联。
带宽HCCS的总双向带宽高达392GB/s不同型号略有差异远超PCIe
0的64GB/s。
拓扑8张卡通常组成一个Hypercube Mesh或全互联拓扑任意两张卡之间都可以直通无需CPU中转。
这意味着只要你的TP部署在同一台服务器内Intra-server通信开销是非常小的。
切记千万不要跨服务器做TP跨服务器走的是以太网RoCE延迟比HCCS高两个数量级会导致推理速度断崖式下跌。
2 算法实现Ring vs TreeHCCL内部实现了多种AllReduce算法Ring AllReduce卡之间围成一个环数据像接力棒一样传递。
适合带宽受限但延迟不敏感的场景。
Tree/Mesh AllReduce适合昇腾这种全互联拓扑延迟更低。
在CANN
0中HCCL会自动根据当前的物理拓扑选择最优算法通常无需人工干预。
实战代码DeepSpeed与MindSpore
1 使用DeepSpeed (PyTorch)在昇腾上deepspeed_npu插件已经完美适配了HCCL。
以下是启动TP推理的标准姿势importtorchimportdeepspeedimporttorch_npu#
初始化分布式环境# DeepSpeed会自动读取 rank, world_size 等环境变量deepspeed.init_distributed(dist_backendhccl)#
加载模型modelAutoModelForCausalLM.from_pretrained(...)#
注入TP逻辑# DeepSpeed会自动识别Transformer层用支持TP的HCCL算子替换原生Linear算子modeldeepspeed.init_inference(model,mp_size2,# 设置TP并行度为2dtypetorch.bfloat16,replace_with_kernel_injectTrue# 使用高性能Kernel)#
推理# 代码与单卡完全一致通信细节被封装在底层outputmodel.generate(...)
2 拓扑感知Topology Awareness如果你在一台8卡机器上运行两个TP4的实例如何分配卡号至关重要。
好方案实例1用 [0,1,2,3]实例2用 [4,5,6,7]。
因为
和
通常在物理上连接更紧密。
坏方案实例1用 [0,2,4,6]。
这可能跨越了NUMA节点导致通信效率下降。
使用npu-smi info查看拓扑确保同一组TP的卡在物理上是相邻的。
针对DeepSeek-V2 MoE的特殊优化DeepSeek-V2/V3引入了MoE架构这给TP带来了新挑战。
MoE不仅有Attention层还有Expert层。
1 Expert Parallelism (EP)对于MoE层通常采用EP专家并行而非纯TP。
假设有64个专家TP8。
每张卡负责存放8个专家。
All-to-All 通信Token根据路由结果被发送到持有对应专家的卡上。
这比AllReduce更复杂涉及大量非连续内存访问。
在昇腾上MindSpeed库针对MoE的All-to-All通信进行了深度优化利用硬件的Scatter/Gather指令大幅提升了Token分发的效率。
6.
总结TP策略是驾驭DeepSeek-67B等巨型模型的必修课。
硬件基础利用昇腾的HCCS高速互联确保TP组内通信不走PCIe。
软件实现使用DeepSpeed或MindSpore的自动并行功能零代码修改实现模型切分。
MoE适配关注Expert Parallelism带来的All-to-All通信开销使用最新版本的CANN和MindSpeed以获取针对性优化。
通过TP我们不仅能让模型“跑起来”更能利用多卡的算力叠加实现“跑得快”将原本需要数秒生成的Token压缩到毫秒级。