资讯 · 改写稿
本地大模型跑多快,看的是显存带宽不是显存容量
结论先给:本地模型生成文字时,每出一个 token 都要把整套权重从显存读一遍——所以决定速度的是显存带宽(GB/s),不是容量。一个粗略上限就是「带宽 ÷ 模型占用大小」。
来源(dev.to)开门见山:问「跑大模型要多少显存」是错的第一个问题,更好的问法是「这块显存有多快」。原因是本地模型每生成一个 token,都要把整套权重从内存里完整读一遍,于是内存带宽(以 GB/s 计)成了决定你的编码助手是「打字」还是「爬行」的那个数。
一个可以心算的上限
来源给出的粗略估算:在 batch size 为 1(也就是一次只服务一个请求)时,token 生成受内存带宽限制,上限约为
带宽 ÷ 模型在内存中的大小。
来源举的例子是:一个 10 GB 的模型,放在带宽 936 GB/s 的 RTX 3090 上,大约能跑到 90 Tokens/s。本站计算——直接复算这个例子:936 ÷ 10 = 93.6,与来源说的「约 90 Tokens/s」一致,说明这个估算式的量级是对的,可以拿来快速判断一块卡够不够用。
放不下的时候会发生什么
更常见的情况是模型或上下文装不下,于是部分层溢出到系统内存(DDR5,约 50 GB/s),再经 PCIe 4.0(31.5 GB/s)搬运。来源算了一笔账:这是一次约 20 倍的带宽下跌。
来源给出的实测对照是:同一场景从 42.5 tok/s 掉到 3.8 tok/s。本站计算——两者相除,42.5 ÷ 3.8 ≈ 11.2 倍的实测降速。也就是说,理论上限掉了 20 倍,实际观感大约是慢一个数量级——这足以解释为什么「显存差一点」的体验会断崖式下跌。
量化之后权重有多大
来源还给了 4-bit 量化下权重的粗略占用:8B 约 5 GB、14B 约 10 GB、更大的按比例往上。把这两个数字和上面的公式拼起来,就能在买卡之前先算一遍:目标模型多大、你想要的 tok/s 是多少、需要多宽的带宽。
把公式反过来做一次选型
把估算式反过来用,就是一个选型流程:先定目标模型(量化后多大),再定你想要的生成速度,两者相乘就是需要的带宽下限。例如想在 4-bit 下跑 14B(来源称约 10 GB)并保持约 60 个 Tokens/s,那么带宽至少要 10 × 60 = 600 GB/s 这一量级;拿这个数去对照卡的规格,比只看「显存多大」靠谱得多。
只看显存容量不看带宽:容量决定「能不能装下」,带宽决定「跑多快」。
忽略溢出代价:层一落到系统内存,带宽掉一个数量级。
拿批处理吞吐当单请求速度:这里的估算针对 batch size 1。
自检清单
常见问题
为什么说「要多少显存」是错的第一问?
来源认为更该先问显存有多快:本地模型每生成一个 token 都要把整套权重读一遍,因此带宽决定了实际速度,容量只决定能否装下。
怎么估算本地模型的速度?
来源给出的粗略上限是「带宽 ÷ 模型在内存中的大小」:例如 10 GB 模型放在 936 GB/s 的卡上,约 90 Tokens/s。
装不下时会怎样?
层会溢出到 DDR5(约 50 GB/s)并经 PCIe 4.0(约 31.5 GB/s)搬运,来源称这是约 20 倍的带宽下跌。
实测掉速有多明显?
来源给出的对照是从 42.5 tok/s 掉到 3.8 tok/s;据此计算约为 11.2 倍的降速。
来源参考
以上为外部来源;本文为 RefHub 用自己的结构重写,事实以来源页为准,价格与政策会变,请回源核对当日。
下一步:本地模型和订阅怎么选,读 本地模型 vs 订阅;一张卡跑多个模型,见 本地 LLM 的 GPU 调度。