LLaMA-Factory 怎么按显存需求表选择 Full/Freeze/LoRA/QLoRA 微调方法
2026/9/13 19:29:13 网站建设 项目流程

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 的「硬件依赖」小节,原表注明是估算值* 估算值):

方法精度7B14B30B70BxB
Full (bf16orfp16)32120GB240GB600GB1200GB18xGB
Full (pure_bf16)1660GB120GB300GB600GB8xGB
Freeze/LoRA/GaLore/APOLLO/BAdam1616GB32GB64GB160GB2xGB
QLoRA810GB20GB40GB80GBxGB
QLoRA46GB12GB24GB48GBx/2GB
QLoRA24GB8GB16GB24GBx/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_layersfreeze_trainable_modulesfreeze_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: loralora_rank: 8lora_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_sizecutoff_len、启用gradient_checkpointing、使用 DeepSpeed ZeRO-2 或 ZeRO-3。对应地,把配置中per_device_train_batch_sizecutoff_len调小即可,不必换方法。

限制说明

  • 表中数值是文档标注的估算值,且只列了 7B/14B/30B/70B 四档,其他参数量按xB 列的公式(18x8x2xxx/2x/4)外推,不能当作硬保证;
  • 文档只给出各方法的显存估算,没有提供 Full/Freeze/LoRA/QLoRA 训练效果差异的对比数据,选档时以显存能否承载为准;
  • QLoRA 的 GPTQ/AWQ/AQLM 示例依赖对应的量化模型或量化后端,Bitsandbytes 路线需要安装bitsandbytes
  • deepspeedflash-attn等在依赖表中均为可选项,只有对应训练方式需要时才安装。

【免费下载链接】LlamaFactoryUnified Efficient Fine-Tuning of 100+ LLMs & VLMs (ACL 2024)项目地址: https://gitcode.com/GitHub_Trending/ll/LlamaFactory

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询