news 2026/9/2 13:03:34

理解 GPU 设备顺序:ds4 CUDA 张量并行的 home 与 partner 配对策略指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
理解 GPU 设备顺序:ds4 CUDA 张量并行的 home 与 partner 配对策略指南

理解 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 个 partner(i 从 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↔ partner1
  • home2↔ partner3
  • home4↔ partner5
  • home6↔ partner7

这正好命中物理上的(0,1)(2,3)(4,5)(6,7)。这段说明来自 README 张量并行章节。

内存怎么分配:专家 50/50、词表行切分

配对不只是"一起算",还直接决定显存怎么摊:

  • 路由专家(routed experts)50/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 配置(完整上下文见 README):

MODEL=gguf/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即可(home=0,partner=1)。
  • 多机(Mac 互联)和单机 8 卡是一回事吗?不是。Mac 间走 RDMA、用--role;本文讲的单机 CUDA 张量并行不走分布式管线,二者互不依赖(见 Tensor Parallelism 章节)。

小结

记住三句话就够了:

  1. 偶数卡才启用张量并行;
  2. 前半是 home、后半是 partner,第 i 对第 i
  3. 把物理上最近的 P2P 卡放到同一个配对位置(如0,2,4,6,1,3,5,7)。

掌握这套 home / partner 配对策略,你就能为任意偶数卡数正确写出--gpu-devices,让 ds4 把 DeepSeek 4 稳稳地拆到多张 GPU 上跑起来。

📚 延伸阅读:多卡放置与 VRAM 预算见 ds4_gpu_mgpu.h,8 卡 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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 13:02:28

如何用 optimizerDuck 解除 WebDAV 4GB 文件限制?

如何用 optimizerDuck 解除 WebDAV 4GB 文件限制&#xff1f; 【免费下载链接】optimizerDuck Free, open-source Windows optimization tool for performance, privacy, and simplicity. 项目地址: https://gitcode.com/GitHub_Trending/op/optimizerDuck optimizerDuc…

作者头像 李华
网站建设 2026/9/2 13:00:57

15 分钟跑起来:用 Sunshine 搭建自己的游戏串流服务器完整上手

15 分钟跑起来&#xff1a;用 Sunshine 搭建自己的游戏串流服务器完整上手 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 想让 PC 游戏库搬进客厅电视&#xff0c;或者出差时在平…

作者头像 李华