
理解 GPU 设备顺序ds4 CUDA 张量并行的 home 与 partner 配对策略指南【免费下载链接】ds4DeepSeek 4 Flash and PRO local inference engine for Metal, CUDA and ROCm项目地址: https://gitcode.com/GitHub_Trending/ds4/ds4如果你想在一张 CUDA 服务器上把DeepSeek 4 Flash / PRO跑起来ds4 就是你要的本地推理引擎——它同时支持 Metal、CUDA 和 ROCm能把 4-bit 量化模型拆到多张 GPU 上做张量并行。但很多新手第一步就卡住了--gpu-devices里设备到底该怎么排为什么官方示例写成0,2,4,6,1,3,5,7而不是0,1,2,3这篇文章用一个简单的home主卡与 partner配卡配对模型把这套 GPU 设备顺序讲清楚让你不用读源码也能正确填参数。为什么 GPU 设备顺序很重要先记住一句话ds4 的张量并行只在偶数张 GPU上启用且设备顺序直接决定哪张卡和哪张卡配对。配对规则藏在 metal_graph_cuda_tp_partner_tier 里逻辑只有三行if (g_n_gpus 2 || (g_n_gpus 1) ! 0) return -1; // 少于 2 张或奇数张 → 不启用 const int half g_n_gpus / 2; if (tier 0 || tier half) return -1; // 只有前一半能当 home return tier half; // partner home N/2翻译成大白话GPU 总数必须是偶数2、4、6、8…奇数直接放弃张量并行。前 N/2 张卡是 home后 N/2 张卡是 partner。第 i 个 home 永远配对第 i 个 partneri 从 0 开始。home 与 partner两种角色怎么分工可以把每张卡想成一个工位角色位置职责home主卡设备顺序的前 N/2 张一层 Transformer 的主场放这一层的 KV 缓存、注意力权重并发起计算partner配卡设备顺序的后 N/2 张和 home 做张量并行分担专家计算与注意力一个层属于哪张 home由placement放置数组决定代码在 head_tier 捕获处g-head_tier placement ? placement[DS4_N_LAYER 1] : 0;在解码阶段当前正在跑的这张 home 卡就是active_tier它的 partner 在 这里算出const int cuda_tp_home_tier g-active_tier; // 当前 home const int cuda_tp_partner_tier ...partner_tier(cuda_tp_home_tier); // 它的 partner一对一配对规则第 i 个 home 配第 i 个 partner官方示例最能说明问题。以测试用的 8 张 L40S 主机为例物理上最靠近、P2P 带宽最好的卡是(0,1)、(2,3)、(4,5)、(6,7)。要让最近的 P2P 卡处在同一个配对位置设备顺序就必须写成0, 2, 4, 6, 1, 3, 5, 7 └─home─┘ └─partner─┘按前一半是 home、后一半是 partner切分后配对自动变成home0↔ partner1home2↔ partner3home4↔ partner5home6↔ partner7这正好命中物理上的(0,1)、(2,3)、(4,5)、(6,7)。这段说明来自 README 张量并行章节。内存怎么分配专家 50/50、词表行切分配对不只是一起算还直接决定显存怎么摊路由专家routed experts50/50 切分每个 home–partner 对各自存一半专家权重避免整份大张量重复。词表输出头vocabulary head按行切分横跨参与的输出层卡见 metal_graph_cuda_tp_output_tiers_for_head——它先放 home、再放 partner保证输出张量被正确分片。稠密注意力、路由器和共享专家在每个配对内部各自复制一份不跨对共享。也就是说大张量不复制小张量才复制这正是 8×48GB 显存能塞下模型的关键。最快上手一条命令跑 8 卡 L40S配置设备顺序本质就是用--gpu-devices按先 home 后 partner的次序列出卡号。下面这条命令就是官方在 8 卡 L40S 上使用的交互式 Agent 配置完整上下文见 READMEMODELgguf/DeepSeek-V4-Flash-Q4KExperts-F16HC-F16Compressor-F16Indexer-Q8Attn-Q8Shared-Q8Out-chat-v2-imatrix.gguf ./ds4-agent --cuda --cuda-tensor-parallel \ --gpu-vram auto \ --gpu-devices 0,2,4,6,1,3,5,7 \ --model $MODEL \ --ctx 100000 提示--cuda-tensor-parallel才是开关--gpu-devices只是排座位。两者都要对张量并行才会真正生效。常见问题速答为什么我的卡没配对成功检查 GPU 总数是不是偶数——奇数张时metal_graph_cuda_tp_partner_tier直接返回-1张量并行不会启用。设备顺序填错会怎样配对错位会让 home 和它以为的partner 不在同一对物理卡上P2P 带宽下降、显存预算估算失准甚至因g_gpu_peer_ok校验失败而无法启动。2 张卡怎么填最简单0,1即可home0partner1。多机Mac 互联和单机 8 卡是一回事吗不是。Mac 间走 RDMA、用--role本文讲的单机 CUDA 张量并行不走分布式管线二者互不依赖见 Tensor Parallelism 章节。小结记住三句话就够了偶数卡才启用张量并行前半是 home、后半是 partner第 i 对第 i把物理上最近的 P2P 卡放到同一个配对位置如0,2,4,6,1,3,5,7。掌握这套 home / partner 配对策略你就能为任意偶数卡数正确写出--gpu-devices让 ds4 把 DeepSeek 4 稳稳地拆到多张 GPU 上跑起来。 延伸阅读多卡放置与 VRAM 预算见 ds4_gpu_mgpu.h8 卡 TP 启动脚本见 run-nvidia-tp-server.sh。【免费下载链接】ds4DeepSeek 4 Flash and PRO local inference engine for Metal, CUDA and ROCm项目地址: https://gitcode.com/GitHub_Trending/ds4/ds4创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考