Liger-Kernel عبارة عن مجموعة من نوى Triton تم تطويرها بواسطة LinkedIn، وهي مصممة خصيصًا لتدريب نماذج اللغة الكبيرة (LLM). يمكن لهذا المشروع تحسين إنتاجية التدريب متعدد وحدات معالجة الرسومات (GPU) بنسبة 20% وتقليل استخدام الذاكرة بنسبة 60%. اسم المشروع "Liger" يرمز إلى "LinkedIn GPU Efficient Runtime"، مما يعكس فكرته الأساسية المتمثلة في وقت تشغيل GPU فعال.
يدعم المشروع العديد من هياكل نماذج اللغة الكبيرة السائدة، بما في ذلك:
نفذ المشروع العديد من عمليات النواة المحسنة:
LigerRMSNorm
: تطبيع RMSLigerLayerNorm
: تطبيع الطبقةliger_rotary_pos_emb
: ترميز الموضع الدوراني (RoPE)LigerSwiGLUMLP
: دالة التنشيط SwiGLULigerGEGLUMLP
: دالة التنشيط GeGLULigerCrossEntropyLoss
: خسارة الإنتروبيا المتقاطعةLigerFusedLinearCrossEntropyLoss
: خسارة الإنتروبيا المتقاطعة الخطية المدمجةيدعم العديد من وظائف خسارة التحسين للمحاذاة والتفضيل:
LigerFusedLinearDPOLoss
: خسارة DPOLigerFusedLinearORPOLoss
: خسارة ORPOLigerFusedLinearCPOLoss
: خسارة CPOLigerFusedLinearSimPOLoss
: خسارة SimPOLigerFusedLinearKTOLoss
: خسارة KTOfrom 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
: إذا كنت تستخدم واجهة برمجة تطبيقات تصحيح نموذج المحولاتشروط اختبار الأداء:
أظهرت نتائج الاختبار:
تم دمج Liger-Kernel في العديد من أطر التدريب السائدة:
من خلال دمج عمليات متعددة في نواة واحدة، يتم تقليل عدد مرات الوصول إلى ذاكرة GPU وتحسين كفاءة الحساب.
بالنسبة للعمليات كثيفة الذاكرة، يتم استخدام تقنية المعالجة المقسمة لتقسيم الحسابات الكبيرة إلى أجزاء صغيرة، مما يقلل من ذروة استخدام الذاكرة.
استخدم العمليات الموضعية قدر الإمكان لتجنب تخصيص الذاكرة الإضافية، مما يزيد من تحسين كفاءة الذاكرة.
يمثل Liger-Kernel تقدمًا مهمًا في تحسين تدريب نماذج اللغة الكبيرة. من خلال نوى Triton المصممة بعناية وتقنيات تحسين الذاكرة ودعم النموذج الواسع، فإنه يوفر للباحثين والمهندسين أداة قوية وسهلة الاستخدام يمكنها تحسين كفاءة التدريب بشكل كبير وتقليل تكاليف الحساب. إن طبيعة المشروع مفتوحة المصدر ودعم المجتمع النشط يجعله موردًا مهمًا في مجال تدريب LLM.