微调显存计算器
选择模型、微调方式和训练设置,即可看到峰值显存如何拆分为权重、适配器、梯度、优化器状态、激活和 logits,哪些显卡放得下,以及想放进更小的显卡该改什么。
14.8 GB 单卡峰值显存估算
- 模型权重
- 7.3 GB
- LoRA 适配器
- 0.2 GB
- 梯度
- 0.2 GB
- 优化器状态
- 0.3 GB
- 激活
- 1.7 GB
- logits 与损失
- 3.4 GB
- CUDA 上下文与缓冲区
- 1.8 GB
可训练参数:41,943,040(占模型的 0.52%)。
激活与 logits:每个 token 2,634 KB,每步 2,048 个 token。
Paged 8-bit 的状态大小相同。显存不够时,bitsandbytes 会把它们挪到系统内存而不是报错,速度会变慢。
MoE 模型:“全部线性层”会适配每个专家,与专家为独立线性层时 PEFT 的做法相同。激活按一个 token 经过的专家计算。
哪些显卡放得下
| 显存 | 显卡 | 结果 | 放得下的最长序列 |
|---|---|---|---|
| 8 GB | RTX 4060 8GB | 不行 | – |
| 12 GB | RTX 3060 12GB、Arc B580 12GB、RTX 4070 12GB、RTX 5070 12GB | 不行 | 512 |
| 16 GB | RTX 4060 Ti 16GB、RTX 5060 Ti 16GB、RX 9070 XT 16GB、RTX 4070 Ti Super 16GB、RTX 4080 Super 16GB、RTX 5070 Ti 16GB、RTX 5080 16GB | 可以 | 2,304 |
| 24 GB | RTX 3090、RTX 4090、RX 7900 XTX | 可以 | 5,376 |
| 32 GB | RTX 5090 | 可以 | 8,448 |
| 48 GB | L40S | 可以 | 14,848 |
| 80 GB | A100 80GB、H100 SXM | 可以 | 27,648 |
| 96 GB | RTX PRO 6000 Blackwell | 可以 | 34,048 |
| 120 GB | DGX Spark (128 GB) | 可以 | 43,520 |
| 141 GB | H200 | 可以 | 51,968 |
| 180 GB | B200 | 可以 | 67,584 |
“可以”表示至少剩 0.5 GB;“勉强”表示剩得更少,遇到长样本或显存碎片仍可能爆显存。按单卡、不卸载计算。Mac 不在表中:Mac 上的训练走 MLX,本工具没有建模。
按顺序尝试下面的改动,每一步都叠加在前面的改动之上,直到至少剩 0.5 GB:
常见设置的显存
2,048 token、微批 1、开启梯度检查点、LoRA 秩 16 作用于全部线性层、AdamW;全参数微调按混合精度计算。点击数字可在计算器中打开对应设置。
| 模型 | QLoRA,Transformers | QLoRA,Unsloth | LoRA 16 位 | 全参数 |
|---|---|---|---|---|
| Llama 3.2 3B | 9.2 GB | 4.0 GB | 11.5 GB | 52.8 GB |
| Qwen3 4B | 10.4 GB | 4.6 GB | 13.8 GB | 65.5 GB |
| Llama 3.1 8B | 14.8 GB | 7.8 GB | 21.3 GB | 125 GB |
| Qwen3 8B | 16.3 GB | 8.1 GB | 22.2 GB | 128 GB |
| Qwen3 14B | 21.8 GB | 12.3 GB | 35.4 GB | 227 GB |
| Gemma 3 27B | 33.1 GB | 19.1 GB | 63.4 GB | 419 GB |
| Qwen3 32B | 32.6 GB | 22.3 GB | 70.9 GB | 495 GB |
| Llama 3.3 70B | 55.6 GB | 42.8 GB | 143 GB | 1,060 GB |
与公开实测数据的对比
15 条附带设置的公开实测,与本计算器对同一设置的估算并列。误差中位数为 1.6%,最大为 7.5%。激活系数和运行时开销是用 Unsloth 博客中的数据(两个框架)拟合的,所以这些行的吻合部分来自拟合本身;PEFT 和 Giles Thomas 的三行没有参与拟合。
| 框架 | 模型 | 设置 | 公开数据 | 估算 | 误差 | 来源 |
|---|---|---|---|---|---|---|
| PEFT | Llama 3.2 3B | LoRA r=32(q、v),batch 4 × 768 token,不开梯度检查点 假设: 按一个满长的 4 × 768 batch 出现峰值计算 | 20.8 GB | 22.0 GB | +5.9% | github.com 2026-07-15 |
| PEFT | Llama 3.2 3B | BF16 全参数微调,batch 4 × 768 token,不开梯度检查点 假设: 按一个满长的 4 × 768 batch 出现峰值计算 | 36.2 GB | 37.7 GB | +4.2% | github.com 2026-07-15 |
| HF Trainer + DeepSpeed | Qwen1.5 0.5B | 混合精度全参数微调,2,048 token,不开梯度检查点 | 13.9 GB | 12.9 GB | −7.5% | gilesthomas.com 2024-07 |
| HF + FA2 | Llama 3.1 8B | 12 GB 显卡能跑的最长序列:932 token 假设: 未注明优化器,按 Unsloth 示例默认的 8-bit AdamW 计算 | 12 GB | 12.2 GB | +1.6% | unsloth.ai 2024-12-10 |
| HF + FA2 | Llama 3.1 8B | 24 GB 显卡能跑的最长序列:5,789 token 假设: 未注明优化器,按 Unsloth 示例默认的 8-bit AdamW 计算 | 24 GB | 24.4 GB | +1.6% | unsloth.ai 2024-12-10 |
| HF + FA2 | Llama 3.1 8B | 80 GB 显卡能跑的最长序列:28,454 token 假设: 未注明优化器,按 Unsloth 示例默认的 8-bit AdamW 计算 | 80 GB | 81.3 GB | +1.6% | unsloth.ai 2024-12-10 |
| HF + FA2 | Llama 3.3 70B | 80 GB 显卡能跑的最长序列:6,916 token 假设: 未注明优化器,按 Unsloth 示例默认的 8-bit AdamW 计算 | 80 GB | 76.2 GB | −4.8% | unsloth.ai 2024-12-10 |
| HF + FA2 | Mistral 7B v0.2 | 8 GB 显卡能跑的最长序列:1,696 token | 8 GB | 8.31 GB | +3.8% | unsloth.ai 2024-04-09 |
| HF + FA2 | Mistral 7B v0.2 | 24 GB 显卡能跑的最长序列:14,099 token | 24 GB | 23.9 GB | −0.5% | unsloth.ai 2024-04-09 |
| HF + FA2 | Mistral 7B v0.2 | 80 GB 显卡能跑的最长序列:57,510 token | 80 GB | 78.4 GB | −2.0% | unsloth.ai 2024-04-09 |
| Unsloth | Llama 3.1 8B | 8 GB 显卡能跑的最长序列:2,972 token 假设: 未注明优化器,按 Unsloth 示例默认的 8-bit AdamW 计算 | 8 GB | 8.14 GB | +1.7% | unsloth.ai 2024-12-10 |
| Unsloth | Llama 3.1 8B | 24 GB 显卡能跑的最长序列:78,475 token 假设: 未注明优化器,按 Unsloth 示例默认的 8-bit AdamW 计算 | 24 GB | 24.0 GB | +0.1% | unsloth.ai 2024-12-10 |
| Unsloth | Llama 3.1 8B | 80 GB 显卡能跑的最长序列:342,733 token 假设: 未注明优化器,按 Unsloth 示例默认的 8-bit AdamW 计算 | 80 GB | 79.7 GB | −0.4% | unsloth.ai 2024-12-10 |
| Unsloth | Llama 3.3 70B | 48 GB 显卡能跑的最长序列:12,106 token 假设: 未注明优化器,按 Unsloth 示例默认的 8-bit AdamW 计算 | 48 GB | 47.8 GB | −0.4% | unsloth.ai 2024-12-10 |
| Unsloth | Llama 3.3 70B | 80 GB 显卡能跑的最长序列:89,389 token 假设: 未注明优化器,按 Unsloth 示例默认的 8-bit AdamW 计算 | 80 GB | 80.1 GB | +0.1% | unsloth.ai 2024-12-10 |
最长序列那几行的“公开数据”是显卡容量,其余是 PyTorch 统计的峰值;估算按同一口径比较(和 PyTorch 峰值比较时不含 0.5 GB 的 CUDA 上下文)。
还没有验证的部分
我们没有找到附带完整设置的公开实测来验证以下情况:16 位基座的 LoRA 开梯度检查点、Unsloth 不开梯度检查点、MoE 模型、微批大于 4。这些估算由已验证的部分组合而成,但本身没有验证。Unsloth 的最长序列表与显卡容量严格成线性,说明其中一部分是 Unsloth 外推的。混合精度全参数微调只有一条验证,估算偏低 8%,原因是 DeepSpeed 额外保存了一份 FP16 权重。
与经验表对照
Unsloth 的硬件要求页面按模型大小给出“最低”显存,但没有写序列长度、秩和 batch。这是经验值而不是实测,所以没有计入上面的误差。估算一列按 Unsloth、512 token、秩 16、batch 1 计算。
| 模型 | QLoRA,Unsloth 表 | QLoRA,估算 | LoRA 16 位,Unsloth 表 | LoRA 16 位,估算 |
|---|---|---|---|---|
| Llama 3.1 8B | 6 GB | 7.5 GB | 22 GB | 16.9 GB |
| Qwen3 14B | 8.5 GB | 11.9 GB | 33 GB | 29.8 GB |
| Qwen3 32B | 26 GB | 21.8 GB | 76 GB | 64.4 GB |
| Llama 3.3 70B | 41 GB | 42.2 GB | 164 GB | 136 GB |
Unsloth 自己的测试给出的 8B 数字比这张表高:秩 32 时 8 GB 显卡只能放下 2,972 token,而且这组数字呈直线增长,推算到极短的样本也要约 7.4 GB。LLaMA-Factory 的表(标注为“估算”)给 7B 模型的数字是:32 位全参数 120 GB、纯 16 位全参数 60 GB、LoRA 16 GB、4 位 QLoRA 6 GB;对于 Llama 3.1 8B、2,048 token、Transformers,本计算器给出 125 GB、65.2 GB、21.3 GB 和 14.8 GB。
计算方法
- 权重。LoRA:每个参数 2 字节。QLoRA:除输出层外的所有线性层用 bitsandbytes NF4 存储,每个权重 4 位,每 64 个权重一个 8 位缩放值,开启双重量化后每 256 个块再加一个 FP32 缩放值(共 4.127 位;不开双重量化为 4.5 位);嵌入层、输出层和归一化层在 Unsloth 中保持 BF16,在 Transformers 中会被
prepare_model_for_kbit_training转成 FP32。 - LoRA 参数。每层每个被适配的矩阵有 r × (din + dout) 个参数,由配置中的隐藏维度、注意力头数和前馈宽度算出(MoE 层计入所有专家)。Llama 3.1 8B、r = 16、全部线性层:41,943,040 个。适配器及其梯度为 FP32(4 + 4 字节);AdamW 另加 8 字节,8-bit AdamW 加 2 字节。
- 全参数微调。混合精度:使用 AdamW 时每个参数 16 字节(BF16 权重 2、FP32 主权重 4、梯度 2、m 和 v 共 8,与 ZeRO 论文的计法相同),8-bit AdamW 为 10 字节。纯 BF16:8 字节(PyTorch 的 AdamW 以权重的数据类型保存 m 和 v),8-bit AdamW 为 6 字节。
- 激活。使用 flash attention 时,每层每个 token 以 BF16 保存约 10h + 2q + 4kv + 8f 字节(h 为隐藏维度;q、kv 为 query 与 key/value 的宽度;f 为前馈宽度,MoE 取一个 token 经过的专家),另加每个被适配层输入的一份 BF16 副本。不开检查点时每一层都保存这些。Transformers 的梯度检查点保存每层的输入(2h 字节),另加重算时一层用量的 2.6 倍;Unsloth 的卸载式检查点在显卡上只保留一层用量的 0.92 倍,各层输入放在系统内存。
- logits。Transformers 用 FP32 logits 计算损失:每个 token 每个词表项约 14 字节,Llama 3 的 128,256 个词表项即每个 token 1.8 MB。Unsloth 的融合交叉熵(Apple 的 Cut Cross Entropy)不会生成完整的 logits。
- 运行时。CUDA 上下文、cuBLAS 工作区和分配器:Transformers 0.6 GB,Unsloth 1.2 GB。QLoRA 另加最大矩阵的一份反量化副本,Transformers 的 QLoRA 还会生成 FP32 输出层的一份 BF16 副本。
- 未建模。多卡(FSDP、DeepSpeed ZeRO)、把权重或优化器卸载到 CPU、训练中的评估与生成,以及 DPO、GRPO(参考模型、rollout)。
来源:bitsandbytes 与 QLoRA 论文(NF4、双重量化)、PEFT 的 prepare_model_for_kbit_training、ZeRO 论文(每参数 16 字节)、Korthikanti 等(激活显存)、Unsloth 关于卸载式检查点与 Cut Cross Entropy 的说明。
资料读取日期:。
使用方法
- 从列表中选择模型,或输入 Hugging Face 模型 id 加载任意模型。
- 选择全参数微调、16 位模型上的 LoRA 或 4 位基座上的 QLoRA,再选择框架:Transformers + PEFT(及 TRL)或 Unsloth。
- 设置 LoRA 秩和目标模块、序列长度、微批大小、梯度检查点和优化器。
- 查看总量和各部分,对照显卡表;在“想放进这张卡”中选择显卡,看看哪些改动能让设置放进它的显存。
常见问题
用 QLoRA 微调 8B 模型需要多少显存?
以 Llama 3.1 8B、2,048 token、微批 1、秩 16 作用于全部线性层并开启梯度检查点为例:Unsloth 约 7.8 GB,Transformers + PEFT 约 14.8 GB(8,192 token 时分别为 9.1 GB 和 30.3 GB)。差距主要来自损失计算:Transformers 会对 128,256 个词表项生成 FP32 logits,每个 token 约 1.8 MB,还会把嵌入层和输出层转成 FP32;Unsloth 融合了损失计算,这两层保持 BF16。Unsloth 实测秩 32 时 8 GB 显卡能跑 2,972 token,而 HF + FA2 在同一张卡上爆显存;本计算器对这几组数据的估算误差在 2% 以内。
LoRA 和全参数微调比 QLoRA 多用多少显存?
Llama 3.1 8B、2,048 token、Transformers:QLoRA 14.8 GB,16 位模型上的 LoRA 21.3 GB,混合精度 + AdamW 的全参数微调 125 GB(纯 BF16 + 8-bit AdamW 为 50.2 GB)。全参数微调在计算激活之前,权重、梯度和优化器状态就要占每个参数 16 字节,所以 8B 模型需要多张 80 GB 显卡或卸载。
梯度检查点能省多少显存?
以 Llama 3.1 8B 的 LoRA、4,096 token、Transformers 为例:不开为 53.0 GB,开启后为 26.5 GB。不开时每一层都要为反向传播保留激活;开启后只保留每层的输入,反向时逐层重算,每步大约慢 20–30%。Unsloth 的实现还会把各层输入移到系统内存。
能在一张显卡上微调 70B 模型吗?
用 QLoRA 可以:Llama 3.3 70B 在 2,048 token 时,Unsloth 约 42.8 GB,48 GB 显卡放得下(Unsloth 实测 48 GB 可跑 12,106 token);Transformers 约 55.6 GB,需要 80 GB 显卡。16 位模型上的 LoRA 或全参数微调需要用 FSDP 或 DeepSpeed 多卡训练,本计算器没有建模。
这个估算准吗?
在 15 条公开实测中,误差中位数为 1.6%,最大为 7.5%;页面上的表格列出了每一条的设置和来源。其中大部分也用来拟合了激活系数;有些设置(16 位基座的 LoRA 开梯度检查点、MoE 模型)没有公开实测可以对照,页面上都有说明。
这里的 GB 是 GB 还是 GiB?
是 GiB(1024³ 字节),与 nvidia-smi 和显卡容量的单位一致,全站都是如此。公开实测数据也按同一单位显示。
更多计算器
- vLLM KV cache 与并发计算器 vLLM 分配的 KV cache 池有多少 token、能同时处理多少请求,并给出 vllm serve 命令。 打开 →
- 我的电脑能跑什么? 在浏览器里识别你的 GPU,列出它能跑的本地大模型,以及最佳量化和速度。 打开 →
- MiniMax H3 显存计算器
(ComfyUI) MiniMax H3 视频在 ComfyUI 中的显存与系统内存:剪枝版、INT8、NVFP4 和 GGUF 文件在 8–96 GB 显卡上的表现。 打开 → - MoE 卸载计算器
(--n-cpu-moe) 根据 GGUF 真实张量大小,找出能装进你显卡的最小 llama.cpp --n-cpu-moe。 打开 → - Qwen3.8 27B 新 GGUF 量化:Bonsai 2、GSQ-RCO 与 UD 对比 Qwen3.8 27B 的 Ternary Bonsai 2、GSQ-RCO 与 Unsloth UD 文件:显存、质量、速度,以及各自需要的推理引擎。 打开 →
- Qwen-Image-2.1 显存计算器 DiT、文本编码器和 VAE 各种组合的峰值显存,附真实显卡实测数据。 打开 →
更新于