微调显存计算器

选择模型、微调方式和训练设置,即可看到峰值显存如何拆分为权重、适配器、梯度、优化器状态、激活和 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。

哪些显卡放得下

显存显卡结果放得下的最长序列
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,TransformersQLoRA,UnslothLoRA 16 位全参数
    Llama 3.2 3B9.2 GB4.0 GB11.5 GB52.8 GB
    Qwen3 4B10.4 GB4.6 GB13.8 GB65.5 GB
    Llama 3.1 8B14.8 GB7.8 GB21.3 GB125 GB
    Qwen3 8B16.3 GB8.1 GB22.2 GB128 GB
    Qwen3 14B21.8 GB12.3 GB35.4 GB227 GB
    Gemma 3 27B33.1 GB19.1 GB63.4 GB419 GB
    Qwen3 32B32.6 GB22.3 GB70.9 GB495 GB
    Llama 3.3 70B55.6 GB42.8 GB143 GB1,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 8B6 GB7.5 GB22 GB16.9 GB
    Qwen3 14B8.5 GB11.9 GB33 GB29.8 GB
    Qwen3 32B26 GB21.8 GB76 GB64.4 GB
    Llama 3.3 70B41 GB42.2 GB164 GB136 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 的说明。

    资料读取日期:。

    训练后要运行模型,请看 LLM 显存计算器。本站推理估算与实测的差距见估算准确度。

    使用方法

    1. 从列表中选择模型,或输入 Hugging Face 模型 id 加载任意模型。
    2. 选择全参数微调、16 位模型上的 LoRA 或 4 位基座上的 QLoRA,再选择框架:Transformers + PEFT(及 TRL)或 Unsloth。
    3. 设置 LoRA 秩和目标模块、序列长度、微批大小、梯度检查点和优化器。
    4. 查看总量和各部分,对照显卡表;在“想放进这张卡”中选择显卡,看看哪些改动能让设置放进它的显存。

    常见问题

    用 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 和显卡容量的单位一致,全站都是如此。公开实测数据也按同一单位显示。

    更多计算器

    更新于