网上讨论"跑大模型买什么卡",十有八九在吵算力(TFLOPS)。但我实际折腾下来发现一个挺重要的点:本地跑大模型,真正卡脖子的不是算力,是显存和显存带宽。这篇用尽量人话的方式,把这三个数各管什么讲清楚。
看显存:决定能不能跑
推理时,模型的权重必须整个装进显存。Q4 量化后的典型体积:
| 模型规模 | Q4 权重 | 什么卡能装 |
|---|---|---|
| 8B | 约 5G | 8G 卡就行 |
| 14B | 约 9G | 12G 卡 |
| 32B | 约 19.5G | 24G 卡(甜点) |
| 70B | 约 43G | 48G / 80G |
| 235B | 约 130G+ | 多卡集群 |
显存不够只有一条路:CPU offload,把权重放内存里轮流搬——速度断崖式掉到个位数 token/s,基本没法用。所以选卡第一步:先看你最常跑的模型要多大显存。
看带宽:决定生成有多快
生成阶段(decode)每出一个 token,都要把整个模型的权重从显存搬一遍。搬得多快,生成得多快。这就是为什么显存带宽(GB/s)和 decode 速度几乎成正比。
几个代表选手:
- RTX 5090:1792 GB/s —— 32B Q4 实测 70 tok/s
- RTX 4090:1008 GB/s —— 38 tok/s
- RTX 3090:936 GB/s —— 33 tok/s
- Tesla V100 32G:900 GB/s —— 33 tok/s(二手三千块,这就是它还能打的原因)
- Tesla P40:346 GB/s —— 18 tok/s
这也是二手 V100 一直有人买的原因:HBM2 显存带宽 900 GB/s,和 3090 一个档次,价格却便宜一半。带宽大的老卡,跑推理依然能打。
看算力:决定首字等多久(尤其 Agent)
每次对话开头,模型要把整段提示词读进去、算出第一个字,这一步叫 prefill(预填充)。它和 decode 完全相反:prefill 吃算力(FP16 张量 TFLOPS),不吃带宽。
日常聊天几乎无感:一句"你好"就几个 token,中端卡也是秒回。但编程 Agent 是重灾区:opencode 这类工具的系统提示词加工具定义有一万 token 上下,Claude Code 更是两万上下,而且 Agent 每次调用都要重新读一遍。算力低的卡,prefill 慢,就是反复干等。
拿 32B 模型 + 1 万 token 提示词算首字等待:
| 显卡 | prefill (tok/s) | 首字等待 |
|---|---|---|
| RTX 5090 | 6068 | 约 1.6 秒 |
| RTX 4090 | 2270 | 约 4.4 秒 |
| RTX 3090 | 1088(实测) | 约 9.2 秒 |
| Tesla V100 32G | 1086 | 约 9.2 秒 |
| Tesla P40(无张量核心) | 68 | 约 2.5 分钟 |
所以选卡的第二条标准:如果你主要跑 Agent,别只看 decode,算力高(新架构张量核心多)的卡在 prefill 上优势明显。这也是同样的显存我更推荐买新架构而不是堆老卡的原因。
KV 缓存:上下文越长,显存越紧
模型会把读过的上下文存成 KV 缓存,同一会话内下一轮不用重算——这是多轮对话快的原因。但缓存本身吃显存:30B-A3B 开 128K 上下文时,KV 缓存(fp16)约 12.6G。24G 卡跑 32B 不敢开满 128K,不是跑不动,是缓存装不下。
省显存技巧:KV 缓存开 Q8 量化能砍一半;上下文长度按实际需要设,别无脑开满。
一张图记住三兄弟
- 显存(GB) → 能不能跑:权重装得下吗?
- 带宽(GB/s) → 生成多快:decode tok/s ≈ 带宽 ÷ 模型体积
- 算力(TFLOPS) → 首字多快:prefill,Agent 场景的关键
选卡口诀:按最常跑的模型选显存,选带宽大的,跑 Agent 再看算力。具体型号的实测数据,看这篇24 张卡速查,或者直接用 显卡 AI 算力速查工具。
