LLaMA-Factory v1 怎么启用 Liger Kernel 加速全参数训练
2026/9/13 6:59:32 网站建设 项目流程

LLaMA-Factory v1 怎么启用 Liger Kernel 加速全参数训练

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

在 LLaMA-Factory 的 v1 训练入口里跑全参数 SFT 时,可以通过 Kernels 系统启用 Liger Kernel,把模型中的关键模块替换为优化后的算子实现来加速训练。v1 通过训练 YAML 中的kernel_config字段启用该能力,仓库自带一份全参数(FSDP2)+ Liger Kernel 的完整示例配置 examples/v1/train_full/train_full_liger_kernel.yaml。本文说明如何启用它、如何验证 Liger 算子确实生效,以及它的前置条件和支持边界。

准备环境

启用 Liger Kernel 有两个硬性前置条件,都由 v1 的 kernel 插件在启动时检查(见 liger_kernel_ops.py):

  • 设备:当前加速器必须是 CUDA 或 NPU,否则报错LigerKernel requires CUDA or NPU, current accelerator is {current}.
  • 依赖:必须已安装liger_kernel包,否则报错Liger kernel is not installed.

v1 入口的软件依赖要求见 快速开始:Python 至少 3.11,torch 2.7.1,transformers 5.0.0,datasets 3.2.0+,peft 0.18.1+;NVIDIA GPU 需要 CUDA(至少 11.6),或使用 torch-npu 2.7.1 的 Ascend NPU。

安装 Liger Kernel 依赖:

pip install -r requirements/liger-kernel.txt

该文件(requirements/liger-kernel.txt)中的约束为liger-kernel>=0.6.3

确认使用 v1 入口:v1 由环境变量USE_V1控制,llamafactory-cli在该环境变量启用时加载 v1 launcher(见 cli.py)。

配置 kernel_config

Kernels 系统通过替换模型中的关键模块(如 RMSNorm、SwiGLU、RoPE、MoE 等)为硬件优化的版本来提升训练性能;替换不修改模型权重,优化后的实现与原始实现保持精度一致(在浮点误差范围内),机制详见 Kernels 系统文档。

在训练 YAML 中,通过kernel_config.name指定要启用的 kernel。启用 Liger Kernel 时设置为liger_kernel。仓库示例配置全文如下:

model: Qwen/Qwen3-0.6B model_class: llm kernel_config: name: liger_kernel quant_config: null dist_config: name: fsdp2 dcp_path: null # /mnt/f/pretrain_models/Qwen3-0.6B-dcp ### data train_dataset: data/v1_sft_demo.yaml ### training output_dir: outputs/test_fsdp2 micro_batch_size: 1 cutoff_len: 2048 learning_rate: 1.0e-4 max_steps: 10 ### sample sample_backend: hf max_new_tokens: 128

各字段的用途:

  • kernel_config.name: liger_kernel:启用 Liger Kernel 的关键配置。
  • dist_config.name: fsdp2:使用 FSDP2 分布式策略做全参数训练;dcp_path可选,用于指定预转换的 DCP 检查点路径(示例中为null)。
  • train_dataset: data/v1_sft_demo.yaml:使用仓库自带的 SFT 演示数据集配置。
  • max_steps: 10:示例仅跑 10 步,属于快速冒烟验证的配置;正式训练请按需替换模型、数据集并调整训练参数。
  • 全参数训练意味着配置中没有 LoRA/adapter 相关项,quant_confignull

可选地,kernel_config下还可以传入use_kernels来指定只启用哪些 Liger 算子:传入算子名列表时仅启用列表中的算子(未知算子名会报Unknown Liger op(s) ...错误),缺省值"auto"表示沿用上游apply_liger_kernel_to_*函数的默认启用项。不指定时就是auto行为。

启动训练

export USE_V1=1 llamafactory-cli train examples/v1/train_full/train_full_liger_kernel.yaml

llamafactory-cli sftllamafactory-cli train等价(见 快速开始)。

验证 Liger 算子已生效

训练启动后观察 rank 0 的日志,按以下三种输出判断状态:

  1. 启用成功:日志中会出现These Liger ops are applied to the model: [...],列表内容是本次实际应用到模型的 Liger 算子名(如fused_linear_cross_entropy等,以日志实际输出为准)。
  2. 模型不在支持列表:只输出警告Current model does not support liger kernel.,kernel 不会被应用,模型原样返回,训练继续但不含 Liger 加速。
  3. 依赖或设备不满足:直接报Liger kernel is not installed.LigerKernel requires CUDA or NPU, ...,训练启动失败,回到“准备环境”一节处理。

示例配置跑满max_steps: 10步并正常收尾,即完成一次启用路径的验证。

支持范围与限制

  • 模型范围:Liger Kernel 只为qwen3qwen3_moeqwen3_nextqwen3_5qwen3_5_textqwen3_5_moeqwen3_5_moe_text这些model_type注册了apply_liger_kernel_to_*映射(见 liger_kernel_ops.py);其他模型会命中上面的警告分支而不做任何替换。
  • 训练阶段:v1 目前支持 SFT 和 DPO 两种训练方法(见 快速开始),Liger Kernel 示例走的是 SFT 全参数路径。
  • 旧版本入口:非 v1 入口使用模型参数enable_liger_kernel: true来启用 Liger Kernel(见 README 的更新记录),与本文的kernel_config配置方式不是同一个开关,不要混用。
  • 更多硬件融合算子(NPU 侧的 RMSNorm/SwiGLU/RoPE/MoE 融合算子)通过kernel_config.name: autoapply_kernelAPI 启用,细节见 Kernels 系统 与 Fused Operators,与本文的 Liger Kernel 是相互独立的配置分支。

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

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

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

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

立即咨询