strata-dual-gpu-layer-split/hero.jpg" alt="Strata 双卡 layer split 让速度翻倍">

一张 16GB 显卡跑 125B 是"能用",两张 16GB 做 layer split 直接翻倍到 60+ tok/s——而且不需要 NVLink,不需要双卡互连,普通 PCIe 插槽就行。更反直觉的是:给第三张卡加上去不仅没加速,反而拖慢了长 prompt。这篇文章把双卡调优的完整实测数据、配置和三个反直觉结论讲清楚。

为什么双卡能翻倍:先理解 Strata 的多卡模型

Strata 的专家分层架构下,双卡的价值不是算力叠加,是容量叠加:

所以双卡 decode 翻倍的本质是:把"GPU + CPU 混跑"变成了"纯 GPU 跑"。

实测数据:16GB + 16GB + 47GB 内存(i9-12900KF,45W CPU 功耗限制)

社区最完整的一组对照(Strata 0.1.30,131072 上下文,KV int8,MTP 开启):

配置 GPU 数 短 decode 27K prefill / decode 46K prefill / decode
IQ3_XXS 单卡 low-RAM 默认 1 39-50 tok/s 1,573 tok/s 1,060 tok/s
IQ3_XXS 双卡 layer split 2 54-61 tok/s 1,090 / 58 1,340 / 65
Q2_0 双卡 layer split 2 66-68 tok/s 1,338-1,500 / 62-80 1,746-1,760 / 70-76

同 45W CPU 功耗限制下,decode 从 30-37 提到 54-61——接近翻倍。 原因:单卡跑时专家 miss 全走 CPU,45W 限制下 CPU 是瓶颈;双卡后第二张卡的缓存把 miss 基本消灭,decode 不再依赖 CPU 功耗。

另一个真实场景:2× RTX 5060 Ti 16GB(PCIe gen3 x8/x8,i9-9900KF,128GB DDR4)跑真实 coding agent,context 超过 86K tokens 时 decode 稳定在 47 tok/s,冷 prefill 860 tok/s。同一台机器 llama.cpp 最佳配置只有 9.5-12 tok/s——Strata 快 4-5 倍。

三个反直觉结论

结论一:NVLink 完全没用。 Strata 引擎刻意避免 P2P 传输——激活数据通过 pinned RAM 每 verify 窗口传一次,而不是每层传两次。2× TITAN RTX 的实测直接验证:有 NVLink 桥接(NV2 拓扑)和没有,数字一样。给消费卡买 NVLink 桥接的预算可以省了,普通 PCIe 插槽就是最优解。

结论二:第三张卡是负优化。 RTX PRO 4500 三卡测试的结论:第三张卡对 decode 零增益,反而拖慢长 prompt prefill——因为 layer split 要跨两个卡边界搬运数据,最慢的那张卡排在最后。双卡是甜蜜点,三卡以上边际收益为负。

结论三:layer split 和 low-RAM 常驻模式互斥。 --resident-experts(low-RAM 常驻)和 layer split 不能同时用,引擎会直接报错退出。小内存机器(RAM 装不下全量专家)想走双卡,需要手编配置文件:

{ "gpu": [0, 1], "layer_split": "auto" }

同时去掉 --resident-experts。代价是长 prompt 时 RAM 可能吃满(47GB 机器实测 46/47 全占),跑基准可以,旁边再开别的东西就脆弱了。

双卡 layer split 的正确配置

以 2× 16GB + 128GB RAM 为例:

什么时候值得上双卡

数据出处

本文数据来自 Strata 官方仓库(github.com/Niko1221/Strata)社区 benchmark issue:双卡 + low-RAM layer split 对照测试 #384、2× 5060 Ti coding agent 实战报告 #392、2× TITAN RTX NVLink 验证 #389、三卡负优化结论 #417。