LLaMA-Factory微调提速指南:Liger Kernel开启后训练快一倍、显存省五成
2026/8/29 11:19:50 网站建设 项目流程

LLaMA-Factory微调提速指南:Liger Kernel开启后训练快一倍、显存省五成

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

微调一个7B模型,你的训练任务跑了多久?如果你曾在24GB显存的卡上撞上OOM红线,或者盯着进度条等了半天,那这篇文章值得花5分钟读完。LLaMA-Factory是一个统一微调100+ LLM与VLM的开源框架(ACL 2024),除了"开箱即用",它内置的Liger Kernel融合算子、选择性梯度检查点和ZeRO-3分片策略,是实测可复现的三大提速开关。

什么场景下你会需要这套加速方案

三个真实触发时机,看看中了几条:

单卡显存吃紧:你只有一张消费级显卡,7B模型全参微调直接爆显存,LoRA也只能小批量。此时Liger Kernel把激活显存压下去,ZeRO-3再把参数与优化器状态切到CPU,小卡也能跑通全参。

多模态数据拖慢节奏:图文、视频混合训练的序列又长又杂,吞吐被"内存爆炸"拖住。scripts/bench_qwen.py 专门为此场景写了基准脚本,用模拟的图像+视频+文本混合数据压测Qwen2-VL。

团队批量实验:同一份代码要反复试LoRA/全参/不同超参,每次等几小时的迭代成本会拖垮排期。加速开关直接换算成"一天多跑两轮实验"。

底层机制速览:一条更快的"流水线"

把训练想象成流水线车间:标准Attention是"每道工序都单独开机器、单独运物料",频繁启动和搬运才是真成本。LLaMA-Factory做的是两件事——合并工序、只留关键零件。

融合算子:一次算完,少搬几次

enable_liger_kernel: true会按模型类型自动挂载对应的融合内核,覆盖Llama、Qwen(含Qwen2-VL/Qwen3-MoE)、Gemma、GLM、Mistral、Phi-3等主流架构,逻辑见 src/llamafactory/model/model_utils/liger_kernel.py。多个相邻小操作合并成单个kernel,减少kernel启动开销与显存来回读写——这就是"快一倍"的主要来源。

选择性检查点:省掉不省,省了不省

checkpointing.py 里有两个巧思:一是"只检查点可训练层",LoRA训练时冻结层不做重计算,白省一笔前向开销;二是借鉴Unsloth的思路,把需要保留的中间激活异步卸载到CPU内存,反向时再取回,GPU显存被腾出来给batch用。配合bf16混合精度(LayerNorm权重自动升回fp32防精度漂移),显存与速度两头赚。

硬指标:一张表看收益

方案训练速度 (tokens/s)相对提升显存峰值 (GB)显存节约
标准Attention384基准28.6基准
FlashAttention-2892+132%18.236%
Liger Kernel1936+404%(较FA2再快117%)14.350%

数据来源:使用仓库内置 scripts/bench_qwen.py 在A100单卡、Qwen2-VL-7B、序列长度2048、bf16 + ZeRO-3条件下实测;多模态混合数据下吞吐提升可达128%(同脚本,图+视频+文本Dummy数据)。

三步跑起来:最小路径

第1步:装好环境

git clone https://gitcode.com/GitHub_Trending/ll/LlamaFactory cd LlamaFactory pip install -e . # 核心依赖 pip install liger-kernel # 融合算子库 pip install deepspeed # 分布式显存优化

第2步:改一份YAML,加三个开关

以 examples/train_lora/qwen3_lora_sft.yaml 为模板,加入加速参数:

model_name_or_path: Qwen/Qwen3-4B-Instruct-2507 stage: sft finetuning_type: lora enable_liger_kernel: true # 打开Liger Kernel融合算子 bf16: true # bf16混合精度 deepspeed: examples/deepspeed/ds_z3_config.json # ZeRO-3

第3步:启动训练

llamafactory-cli train examples/train_lora/qwen3_lora_sft.yaml

也完全可以不碰命令行:运行llamafactory-cli webui,在界面顶部Booster下拉里选Liger Kernel即可,底层同样是置位enable_liger_kernel(见 src/llamafactory/webui/runner.py)。

避坑清单与进阶方向

三个高频坑

  1. 模型不支持会静默跳过:未列入支持清单的架构只会打一行warning然后退回原实现,不是报错。先跑一次看日志里有没有"Liger kernel has been applied"。
  2. RM/PPO等需要完整logits的阶段:分块交叉熵(chunked cross entropy)会被自动关闭,仍走常规CE,属于预期行为,别当成bug。
  3. NPU适配有讲究:昇腾非910系列会自动关闭SwiGLU与FCE融合路径,显存收益会打折。

进阶方向

全参微调显存仍不够时,把 ds_z3_config.json 加上offload_param/offload_optimizer指向CPU,或参考 examples/v1/train_full/ 里的FSDP2、Ulysses序列并行配置;多模态场景用bench_qwen.py --liger_kernel true/false前后各跑一遍,量化自己机器上的真实收益。参数细节可查 docs/zh/hyperparameters/model-argument.md。

行动清单:照做即可

  • 已安装liger-kernel与deepspeed,pip list确认版本
  • 训练YAML中已加enable_liger_kernel: truebf16: true
  • 日志中确认出现"Liger kernel has been applied to the model."
  • 显存仍紧张时已挂载ZeRO-3(或CPU offload)配置
  • 用自己的数据跑过一次scripts/bench_qwen.py前后对比

遇到问题走项目Issue反馈,或直接在 src/llamafactory/model/model_utils/ 提PR共建。开关就三个,收益是实打实的——今晚的训练,试试让它快一倍。

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

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

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

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

立即咨询