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 훈련 분야에서 중요한 리소스가 되도록 합니다.