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。
apply_liger_kernel_to_*;先查支持列表,不要强行套用。torch.cuda.get_device_capability() 和 Triton 版本。合上页面,先回答,再展开对照。
小程序版
微信扫码,随时查命令