先说结论:个人第一次学习微调,优先选择 7B 模型 + 4bit QLoRA。8~12GB 显存更适合入门;24GB 显存可以进一步尝试 16bit LoRA 或更大的模型。

微调为什么需要显卡

大模型已经通过大量数据学会了通用知识。微调(Fine-tuning) 是在现有模型上继续训练,让它更适合某个任务。例如,用客服问答数据训练通用模型,让它学会特定的回答方式。

可以把大模型理解为已经毕业的学生,微调就是入职后的岗位培训。

阶段 含义 硬件开销
预训练 从零训练一个模型 最高,通常需要大规模集群
微调 对现有模型进行专项训练 居中,个人可以使用 LoRA 或 QLoRA
推理 只让模型回答问题,不更新参数 最低

本文讨论的是微调。能运行一个模型,不代表能微调它,因为训练还要保存许多中间数据。

决定显存的四个因素

1. 模型参数量

参数(Parameter) 是模型学习到的大量数字,可以理解为模型积累的“经验值”。权重(Weight) 是最常见的一类参数,入门阶段可以先把二者看成一回事。

B 是 Billion(十亿)的缩写:

  • 7B:约 70 亿参数
  • 13B:约 130 亿参数
  • 30B:约 300 亿参数
  • 70B:约 700 亿参数

参数越多,通常越占显存,训练也越慢。模型更大不代表在所有任务上一定更好。

2. 数值精度

bit(位)表示保存一个数字使用多少信息。位数越高,记录越精细,占用空间也越大:

1
32bit > 16bit > 8bit > 4bit > 2bit

量化(Quantization) 就是用更低的位数保存模型权重,类似压缩图片:文件变小了,但可能损失一些细节。4bit 常用于平衡显存和效果;2bit 更省显存,效果和兼容性风险也更高。

仅计算权重时,可以这样估算:

1
权重大小(GB)≈ 参数量(B)× 位数 ÷ 8
7B 模型精度 仅权重约占空间
16bit 14GB
8bit 7GB
4bit 3.5GB

这只是权重大小,不是训练所需的全部显存。4bit QLoRA 也不是所有计算都使用 4bit,通常只是用 4bit 保存基础模型权重。

3. 微调方式

方式 大白话解释 显存开销
Full 更新模型的全部参数,相当于重写整本书 最高
Freeze 冻结大部分参数,只修改部分章节 较高
LoRA 不改原模型,额外训练一本“小笔记” 较低
QLoRA 先压缩原模型,再训练“小笔记” 最低

LoRA 新增的少量可训练参数称为适配器(Adapter)。训练完成后通常只需保存适配器,使用时再和原模型一起加载。

QLoRA 可以理解为“量化 + LoRA”。个人学习常用 4bit QLoRA,显存充足时可以选择 16bit LoRA。

表格中还会出现两个精度名词:

  • AMP:自动混合精度,由训练框架混合使用不同精度,不等于全程使用 32bit。
  • BF16 / FP16:两种 16 位数字格式,都比常规 32 位格式更省空间。

GaLore、BAdam 也是降低训练开销的方法,但原理与 LoRA 不同。第一次学习先掌握 LoRA 和 QLoRA 即可。

4. 训练配置

  • Token:模型读取文本的基本单位,可以是字、词或词的一部分。
  • 上下文长度:一次送入模型的 Token 数量。文本越长,通常越占显存。
  • 批次大小(Batch Size):一次处理的样本数量。批次越大,通常越占显存。
  • 梯度检查点:少保存部分中间结果,需要时重新计算,用时间换显存。
  • 梯度累积:分多次处理小批次,再统一更新参数,用于模拟较大的批次。
  • 参数卸载(Offload):把部分数据放到系统内存或硬盘,用速度换显存。

数据集总量主要影响训练时间和磁盘占用;单条数据长度、上下文长度和批次大小更直接影响峰值显存。

为什么训练显存高于权重大小

先分清三个硬件名词:

  • 显存(VRAM):显卡自带的高速空间,模型和训练数据主要放在这里。
  • 系统内存(RAM):用于加载模型、处理数据和参数卸载,不能直接代替显存。
  • 硬盘:用于保存模型、数据集、日志和训练结果,也不能代替显存。

训练时,显存除了保存模型权重,还要保存:

  • 激活值:模型计算时产生的中间结果
  • 梯度:告诉参数应该如何调整的数据
  • 优化器状态:更新参数时需要的历史信息
  • 临时计算缓冲区

因此,7B 模型的 4bit 权重约为 3.5GB,实际微调显存会明显高于 3.5GB。

显存需求估算表

先找模型大小所在的列,再找微调方式所在的行,交叉位置就是估算显存。

微调方式 精度 7B 13B 30B 70B
Full AMP 120GB 240GB 600GB 1200GB
Full 16bit 60GB 120GB 300GB 600GB
Freeze 16bit 20GB 40GB 80GB 200GB
LoRA / GaLore / BAdam 16bit 16GB 32GB 64GB 160GB
QLoRA 8bit 10GB 20GB 40GB 80GB
QLoRA 4bit 6GB 12GB 24GB 48GB
QLoRA 2bit 4GB 8GB 16GB 24GB

这张表用于初步选型,不是绝对最低配置。模型结构、软件版本、上下文长度和批次大小都会改变实际占用。

例如,表中 7B 4bit QLoRA 约需 6GB,但这更接近极限配置。8~12GB 显存更适合稳定学习。13B 也不能直接代表所有 14B 模型,两者的实际占用可能不同。

根据显存选择方案

GPU 显存 推荐学习方案 说明
6GB 7B 4bit QLoRA 仅适合极限实验,需要短上下文和小批次
8~12GB 7B 4bit QLoRA 适合完成基础微调流程
16GB 7B QLoRA 可以增加上下文长度或批次大小
24GB 7B 16bit LoRA;13B 4bit QLoRA 个人学习中较均衡
48GB 及以上 13B 16bit LoRA;30B 4bit QLoRA 适合更大的模型和训练配置

推荐从高于估算值一档的配置开始,为临时数据留出余量。例如,24GB 显卡学习微调时,7B 4bit QLoRA 最轻松;需要提高精度或模型规模时,再尝试 7B 16bit LoRA 或 13B 4bit QLoRA。

还要注意以下硬件条件:

  • CPU:负责读取和预处理数据,通常不是微调的主要瓶颈,预算应优先留给 GPU 和显存。
  • 系统内存:7B 入门建议 16GB 起,32GB 更宽松;更大模型建议 32~64GB。
  • 磁盘空间:7B 入门建议至少预留 30~50GB,更大模型和多个检查点需要更多空间。
  • GPU 兼容性:很多训练工具依赖 NVIDIA 的 CUDA 计算平台。老显卡即使显存够,也可能不兼容或速度过慢。
  • GPU 算力:显存决定“能不能装下”,算力影响“训练要等多久”。
  • 多卡训练:两张 24GB 显卡不会自动变成一张 48GB 显卡,必须由训练框架正确切分模型和训练状态。
  • 电源与散热:本地长时间训练会让显卡持续高负载,装机时要确认电源功率和散热能力。

如果只是学习,可以先使用现有设备或按需租用云 GPU,确认会长期训练后再购买硬件。

爆显存时怎么处理

出现 CUDA out of memory,说明当前配置超过了可用显存。按下面的顺序处理:

  1. 关闭其他 GPU 程序,用 nvidia-smi 查看显存占用。
  2. 将批次大小降到 1,需要更大有效批次时使用梯度累积。
  3. 缩短上下文长度,例如从 4096 降到 2048 或 1024。
  4. 开启梯度检查点。
  5. 将 16bit LoRA 改为 8bit 或 4bit QLoRA。
  6. 换用参数量更小的模型。
  7. 最后再考虑参数卸载或多卡切分。

一次只调整一项配置并记录显存变化,方便判断真正的影响因素。

最后记住五点

  1. B 表示参数量,数字越大,通常越吃硬件。
  2. bit 表示数值精度,位数越低越省空间,但可能损失更多信息。
  3. 训练显存不只有模型权重,还包括激活值、梯度和优化器状态。
  4. Full 成本最高,LoRA 更均衡,QLoRA 的显存门槛最低。
  5. 新手优先选择 7B + 4bit QLoRA,先跑通流程,再升级模型和硬件。