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 訓練領域的重要資源。