Liger-Kernel 是由LinkedIn开发的一个Triton内核集合,专门为大语言模型(LLM)训练设计。该项目能够有效提升多GPU训练吞吐量20%,减少内存使用60%。项目名称"Liger"代表"LinkedIn GPU Efficient Runtime",体现了其高效GPU运行时的核心理念。
项目支持多种主流大语言模型架构,包括:
项目实现了多种优化的内核操作:
LigerRMSNorm
:RMS归一化LigerLayerNorm
:层归一化liger_rotary_pos_emb
:旋转位置编码(RoPE)LigerSwiGLUMLP
:SwiGLU激活函数LigerGEGLUMLP
:GeGLU激活函数LigerCrossEntropyLoss
:交叉熵损失LigerFusedLinearCrossEntropyLoss
:融合线性交叉熵损失支持多种对齐和偏好优化损失函数:
LigerFusedLinearDPOLoss
:DPO损失LigerFusedLinearORPOLoss
:ORPO损失LigerFusedLinearCPOLoss
:CPO损失LigerFusedLinearSimPOLoss
:SimPO损失LigerFusedLinearKTOLoss
:KTO损失from liger_kernel.transformers import AutoLigerKernelForCausalLM
model = AutoLigerKernelForCausalLM.from_pretrained("path/to/some/model")
import transformers
from liger_kernel.transformers import apply_liger_kernel_to_llama
apply_liger_kernel_to_llama()
apply_liger_kernel_to_llama(
rope=True,
swiglu=True,
cross_entropy=True,
fused_linear_cross_entropy=False,
rms_norm=False
)
model = transformers.AutoModelForCausalLM("path/to/llama/model")
from liger_kernel.transformers import LigerFusedLinearCrossEntropyLoss
import torch.nn as nn
import torch
model = nn.Linear(128, 256).cuda()
loss_fn = LigerFusedLinearCrossEntropyLoss()
input = torch.randn(4, 128, requires_grad=True, device="cuda")
target = torch.randint(256, (4, ), device="cuda")
loss = loss_fn(model.weight, input, target)
loss.backward()
from liger_kernel.chunked_loss import LigerFusedLinearORPOLoss
orpo_loss = LigerFusedLinearORPOLoss()
y = orpo_loss(lm_head.weight, x, target)
pip install liger-kernel
pip install liger-kernel-nightly
git clone https://github.com/linkedin/Liger-Kernel.git
cd Liger-Kernel
pip install -e .
pip install -e ".[dev]"
torch >= 2.1.2
triton >= 2.3.0
torch >= 2.5.0
triton >= 3.0.0
transformers >= 4.x
:如果使用transformers模型补丁API基准测试条件:
测试结果显示:
Liger-Kernel已集成到多个主流训练框架中:
通过将多个操作融合到单个内核中,减少GPU内存访问次数,提高计算效率。
对于内存密集型操作,采用分块处理技术,将大型计算分解为小块,降低峰值内存使用。
尽可能使用原地操作,避免额外的内存分配,进一步优化内存效率。
Liger-Kernel代表了大语言模型训练优化的重要进步。通过精心设计的Triton内核、内存优化技术和广泛的模型支持,它为研究人员和工程师提供了一个强大而易用的工具,能够显著提升训练效率并降低计算成本。项目的开源性质和活跃的社区支持使其成为LLM训练领域的重要资源。