系统学习 AI 学习路径:从 GPU 运行时到推理、微调与 RAG 评估

liger-kernel

Liger Kernel:用融合 Triton kernel 降低 LLM 训练的显存和 kernel 启动开销

补充说明

Liger Kernel 提供一组面向 LLM 训练的融合 Triton kernel,覆盖 RMSNorm、RoPE、SwiGLU、Fused Linear Cross Entropy、GroupNorm、KL 散度等常见算子。它把多个小算子融合成一个 kernel,减少显存读写和 kernel 启动次数,从而降低显存、提高吞吐。它主要优化训练,不替代推理框架。

Liger Kernel 可以直接替换 Hugging Face 模型里的对应层,也可以单独使用融合损失函数。典型集成方式是 apply_liger_kernel_to_llama() 等函数,或配合 TRL、Axolotl、LLaMA-Factory 使用。使用前要确认模型架构和版本被支持。

常用示例

pip install liger-kernel
# 把 Liger kernel 应用到 Llama 系列模型
from liger_kernel.transformers import apply_liger_kernel_to_llama

apply_liger_kernel_to_llama(
    rope=True,
    rms_norm=True,
    swiglu=True,
    cross_entropy=True,
    fused_linear_cross_entropy=True,
)

from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.1-8B")
# 单独使用融合的线性交叉熵损失,减少 logits 显存
from liger_kernel.transformers import LigerFusedLinearCrossEntropyLoss

loss_fn = LigerFusedLinearCrossEntropyLoss()
loss = loss_fn(hidden_states, lm_head_weight, labels)
# 在 TRL 训练脚本中启用
from liger_kernel.transformers import apply_liger_kernel_to_llama
apply_liger_kernel_to_llama()
# 然后按原方式构造 SFTTrainer/DPOTrainer

不同模型有对应的 apply_liger_kernel_to_* 函数;不支持时仍可单独用融合损失或自定义 kernel。

易错点与排错

相关命令

参考链接

读完自测

合上页面,先回答,再展开对照。

  1. Liger Kernel 主要通过什么方式降低显存和提升吞吐?
  2. 它主要优化训练还是推理?
  3. 启用融合损失后,为什么还要做数值回归?
答案
  1. 把多个小算子融合成 Triton kernel,减少显存读写和 kernel 启动次数,并降低中间激活占用。
  2. 主要优化训练(RMSNorm、RoPE、SwiGLU、交叉熵等);推理服务仍应使用 vLLM/TensorRT-LLM 等。
  3. 融合会改变计算顺序和中间精度,可能影响 loss 和最终指标;要用固定种子和评测集对比基线。
微信小程序码:扫码打开命令速查小程序

小程序版

微信扫码,随时查命令