LLaMA-Factory 怎么按显存需求表选择 Full/Freeze/LoRA/QLoRA 微调方法
【免费下载链接】LlamaFactoryUnified Efficient Fine-Tuning of 100+ LLMs & VLMs (ACL 2024)项目地址: https://gitcode.com/GitHub_Trending/ll/LlamaFactory
在 LLaMA-Factory 里微调一个模型之前,你首先要回答的问题是:手里的 GPU 显存够不够,够跑哪一种训练方式?项目在 README_zh.md 的「硬件依赖」小节给出了一张按方法 × 模型参数规模的显存需求表,这张表就是选择 Full、Freeze、LoRA、QLoRA 的依据。本文的任务是:按这张表选出你显存能跑的方法,然后运行仓库里对应的示例配置完成一次 SFT 训练,并在训练中判断是否选对了档位。
准备条件
先按 README_zh.md 安装 LLaMA-Factory(源码安装或pip install llamafactory均可),主要软件要求为 Python 3.11、torch 2.0.0 以上、transformers 4.49.0 以上。与选方法直接相关的可选项有两类:
deepspeed:Full 微调的示例配置依赖 DeepSpeed ZeRO-3 切分显存,需要安装;bitsandbytes:QLoRA 基于 bitsandbytes 量化时需要。
这两项在「软硬件依赖」表中都列为可选项,按需安装即可。
训练启动后,LlamaFactory 默认使用所有可见计算设备;需要指定设备时用环境变量CUDA_VISIBLE_DEVICES(GPU)或ASCEND_RT_VISIBLE_DEVICES(NPU),见 examples/README_zh.md。
显存需求表:各方法需要多少显存
下表来自 README_zh.md 的「硬件依赖」小节,原表注明是估算值(* 估算值):
| 方法 | 精度 | 7B | 14B | 30B | 70B | xB |
|---|---|---|---|---|---|---|
Full (bf16orfp16) | 32 | 120GB | 240GB | 600GB | 1200GB | 18xGB |
Full (pure_bf16) | 16 | 60GB | 120GB | 300GB | 600GB | 8xGB |
| Freeze/LoRA/GaLore/APOLLO/BAdam | 16 | 16GB | 32GB | 64GB | 160GB | 2xGB |
| QLoRA | 8 | 10GB | 20GB | 40GB | 80GB | xGB |
| QLoRA | 4 | 6GB | 12GB | 24GB | 48GB | x/2GB |
| QLoRA | 2 | 4GB | 8GB | 16GB | 24GB | x/4GB |
读表规则很直接:设模型参数量为xB,则
- 单卡显存达到
18xGB:可以跑bf16/fp16的 Full 训练;达到8xGB 时可以用pure_bf16的 Full 训练; - 达到
2xGB:可以跑 Freeze/LoRA 一类的 16 比特部分参数训练; - 再往下,QLoRA 按量化比特分档:8 比特约
xGB、4 比特约x/2GB、2 比特约x/4GB。
表中的「精度」列按原文保留:Full (bf16orfp16) 一行标注为 32,Full (pure_bf16)、Freeze/LoRA 一行标注为 16,QLoRA 分别标注为 8、4、2,不要自行按常识改写。
举例:微调 7B 模型时,24GB 单卡落在2x(16GB)之上、8x(60GB)之下,对应档位是 Freeze/LoRA 或 QLoRA;想跑 Full 则至少需要8xGB 的pure_bf16估算(约 60GB)或18xGB(约 120GB),实际会借助多卡或 DeepSpeed 切分。
按档位选择并运行训练
四种方法都支持指令监督微调(SFT)等训练目标,这一点见 README_zh.md 的「训练方法」表和 docs/zh/getting-started.md 的「支持的训练方法」表。选定方法后,在仓库根目录下运行对应的示例配置即可。
档位一:Full(全参数)
适用条件:显存达到表中 Full 行的估算值(通常需多卡)。配置上把finetuning_type设为full。仓库示例 examples/train_full/qwen3_full_sft.yaml 以 Qwen3-4B 为例,开启bf16: true并指定deepspeed: examples/deepspeed/ds_z3_config.json用 ZeRO-3 切分显存。启动命令来自 examples/README_zh.md:
FORCE_TORCHRUN=1 llamafactory-cli train examples/train_full/qwen3_full_sft.yaml多机场景可在同一命令上加NNODES=2 NODE_RANK=0 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500等 torchrun 参数,文档同样给出了该写法。
档位二:Freeze(冻结部分参数)
适用条件:显存约2xGB。把finetuning_type设为freeze,可训练的层数与模块由freeze_trainable_layers、freeze_trainable_modules、freeze_extra_modules参数控制,定义见 finetuning_args.py。仓库提供了示例配置,如 examples/extras/llama_pro/llama3_freeze_sft.yaml:
llamafactory-cli train examples/extras/llama_pro/llama3_freeze_sft.yaml档位三:LoRA
适用条件:显存约2xGB,与 Freeze 同一档(表中 Freeze/LoRA 合并为一行)。示例 examples/train_lora/qwen3_lora_sft.yaml 的关键配置是finetuning_type: lora、lora_rank: 8、lora_target: all,启动命令:
llamafactory-cli train examples/train_lora/qwen3_lora_sft.yaml档位四:QLoRA(最低显存)
适用条件:显存低于2xGB,按 8/4/2 比特档位对应xGB、x/2GB、x/4GB。QLoRA 的示例按量化方式分文件,见 examples/README_zh.md 的「QLoRA 微调」小节:
# 基于 4/8 比特 Bitsandbytes/HQQ/EETQ 量化(文档标注「推荐」) llamafactory-cli train examples/train_qlora/qwen3_lora_sft_otfq.yaml # 基于 GPTQ 量化模型(需使用已量化的 GPTQ 检查点) llamafactory-cli train examples/train_qlora/llama3_lora_sft_gptq.yaml其中 examples/train_qlora/llama3_lora_sft_gptq.yaml 的model_name_or_path指向的是 GPTQ 量化后的模型TechxGenus/Meta-Llama-3-8B-Instruct-GPTQ,即该示例走的是「先有量化模型、再挂 LoRA 训练」的路径;仓库还提供了 AWQ(4 比特,llama3_lora_sft_awq.yaml)和 AQLM(2 比特,llama3_lora_sft_aqlm.yaml)两个可选分支。
以上四条路径中,先按显存表锁定档位,再取对应示例配置,是文档支持的最短主路径。命令行还可以直接覆盖配置项,例如llamafactory-cli train examples/train_lora/qwen3_lora_sft.yaml learning_rate=1e-5 logging_steps=1,便于先小规模试跑。
训练中的结果确认与换档判断
各示例配置里内置了几个可观察点(以 Qwen3 示例为准):
logging_steps: 10:每 10 步输出一次训练日志,可看到 loss 变化;plot_loss: true:训练结束后绘制 loss 曲线;save_steps: 500:每 500 步把检查点写入output_dir(Full 示例为saves/qwen3-4b/full/sft,LoRA 示例为saves/qwen3-4b/lora/sft),检查点正常落盘说明训练在持续推进。
如果训练因显存不足中断,说明档位选高了。docs/zh/getting-started.md 的「常见问题」给出的降档手段依次为:改用 LoRA 或 QLoRA 代替全参数训练、减小batch_size和cutoff_len、启用gradient_checkpointing、使用 DeepSpeed ZeRO-2 或 ZeRO-3。对应地,把配置中per_device_train_batch_size、cutoff_len调小即可,不必换方法。
限制说明
- 表中数值是文档标注的估算值,且只列了 7B/14B/30B/70B 四档,其他参数量按
xB 列的公式(18x、8x、2x、x、x/2、x/4)外推,不能当作硬保证; - 文档只给出各方法的显存估算,没有提供 Full/Freeze/LoRA/QLoRA 训练效果差异的对比数据,选档时以显存能否承载为准;
- QLoRA 的 GPTQ/AWQ/AQLM 示例依赖对应的量化模型或量化后端,Bitsandbytes 路线需要安装
bitsandbytes; deepspeed、flash-attn等在依赖表中均为可选项,只有对应训练方式需要时才安装。
【免费下载链接】LlamaFactoryUnified Efficient Fine-Tuning of 100+ LLMs & VLMs (ACL 2024)项目地址: https://gitcode.com/GitHub_Trending/ll/LlamaFactory
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考