Home
Login

مجموعة نوى Triton فعالة طورتها LinkedIn، مُحسّنة خصيصًا لتدريب نماذج اللغة الكبيرة، قادرة على تحسين سرعة التدريب بنسبة 20٪ وتقليل استخدام الذاكرة بنسبة 60٪.

BSD-2-ClausePython 5.2klinkedin Last Updated: 2025-06-20

مشروع Liger-Kernel: نظرة عامة تفصيلية

نظرة عامة على المشروع

Liger-Kernel عبارة عن مجموعة من نوى Triton تم تطويرها بواسطة LinkedIn، وهي مصممة خصيصًا لتدريب نماذج اللغة الكبيرة (LLM). يمكن لهذا المشروع تحسين إنتاجية التدريب متعدد وحدات معالجة الرسومات (GPU) بنسبة 20% وتقليل استخدام الذاكرة بنسبة 60%. اسم المشروع "Liger" يرمز إلى "LinkedIn GPU Efficient Runtime"، مما يعكس فكرته الأساسية المتمثلة في وقت تشغيل GPU فعال.

الميزات الأساسية

مزايا الأداء

  • تحسين سرعة التدريب: من خلال دمج النوى والاستبدال الموضعي وتقنيات التقسيم، يتم تحسين إنتاجية التدريب متعدد وحدات معالجة الرسومات بنسبة 20%.
  • كفاءة الذاكرة: يتم تقليل استخدام الذاكرة بنسبة 60%، مما يدعم أطوال سياق أطول وأحجام دفعات أكبر ومفردات ضخمة.
  • تحسين ما بعد التدريب: بالنسبة لمهام المحاذاة والتقطير، يمكن لنوى ما بعد التدريب توفير ما يصل إلى 80% من الذاكرة.

التنفيذ التقني

  • حساب دقيق: لا يوجد حساب تقريبي، وقد تم اختبار كل من الانتشار الأمامي والخلفي بدقة.
  • تبعيات خفيفة الوزن: يتطلب Torch و Triton فقط، ولا توجد تبعيات مكتبة إضافية.
  • توافق قوي: جاهز للاستخدام، ومتوافق مع Flash Attention و PyTorch FSDP و Microsoft DeepSpeed.

النماذج والعمليات المدعومة

هياكل النماذج المدعومة

يدعم المشروع العديد من هياكل نماذج اللغة الكبيرة السائدة، بما في ذلك:

  • سلسلة LLaMA: LLaMA 2، LLaMA 3، LLaMA 3.2-Vision
  • سلسلة Mistral: Mistral، Mixtral
  • سلسلة Gemma: Gemma1، Gemma2، Gemma3
  • سلسلة Qwen: Qwen2، Qwen2.5، Qwen2-VL، Qwen3، إلخ.
  • نماذج أخرى: Phi3، Granite، OLMo2، GLM-4، إلخ.

عمليات النواة الأساسية

نفذ المشروع العديد من عمليات النواة المحسنة:

النوى الأساسية

  • LigerRMSNorm: تطبيع RMS
  • LigerLayerNorm: تطبيع الطبقة
  • liger_rotary_pos_emb: ترميز الموضع الدوراني (RoPE)
  • LigerSwiGLUMLP: دالة التنشيط SwiGLU
  • LigerGEGLUMLP: دالة التنشيط GeGLU
  • LigerCrossEntropyLoss: خسارة الإنتروبيا المتقاطعة
  • LigerFusedLinearCrossEntropyLoss: خسارة الإنتروبيا المتقاطعة الخطية المدمجة

نوى ما بعد التدريب

يدعم العديد من وظائف خسارة التحسين للمحاذاة والتفضيل:

  • LigerFusedLinearDPOLoss: خسارة DPO
  • LigerFusedLinearORPOLoss: خسارة ORPO
  • LigerFusedLinearCPOLoss: خسارة CPO
  • LigerFusedLinearSimPOLoss: خسارة SimPO
  • LigerFusedLinearKTOLoss: خسارة KTO

طرق الاستخدام

1. طريقة التكامل التلقائي

from liger_kernel.transformers import AutoLigerKernelForCausalLM


model = AutoLigerKernelForCausalLM.from_pretrained("path/to/some/model")

2. طريقة التصحيح اليدوي

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")

3. طريقة API منخفضة المستوى

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()

4. مثال على استخدام خسارة ما بعد التدريب

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]"

متطلبات النظام

بيئة NVIDIA GPU

  • torch >= 2.1.2
  • triton >= 2.3.0

بيئة AMD GPU

  • torch >= 2.5.0
  • triton >= 3.0.0

تبعيات أخرى

  • transformers >= 4.x: إذا كنت تستخدم واجهة برمجة تطبيقات تصحيح نموذج المحولات

معايير الأداء

شروط اختبار الأداء:

  • النموذج: LLaMA 3-8B
  • حجم الدفعة: 8
  • نوع البيانات: bf16
  • المحسن: AdamW
  • نقطة تفتيش التدرج: ممكنة
  • استراتيجية التوزيع: FSDP1، 8 وحدات معالجة رسومات A100

أظهرت نتائج الاختبار:

  • بدأت نماذج Hugging Face في مواجهة تجاوز الذاكرة بأطوال سياق 4K، بينما يمكن لـ Hugging Face + Liger Kernel التوسع إلى 16K
  • تحسين إنتاجية التدريب بأكثر من 20%
  • تقليل استخدام الذاكرة بنسبة 60%

تكامل الإطار

تم دمج Liger-Kernel في العديد من أطر التدريب السائدة:

  • Axolotl
  • LLaMa-Factory
  • SFTTrainer
  • Hugging Face Trainer
  • SWIFT
  • oumi

المبادئ التقنية

تقنية دمج النواة

من خلال دمج عمليات متعددة في نواة واحدة، يتم تقليل عدد مرات الوصول إلى ذاكرة GPU وتحسين كفاءة الحساب.

الحساب المقسم

بالنسبة للعمليات كثيفة الذاكرة، يتم استخدام تقنية المعالجة المقسمة لتقسيم الحسابات الكبيرة إلى أجزاء صغيرة، مما يقلل من ذروة استخدام الذاكرة.

العمليات الموضعية

استخدم العمليات الموضعية قدر الإمكان لتجنب تخصيص الذاكرة الإضافية، مما يزيد من تحسين كفاءة الذاكرة.

ملخص

يمثل Liger-Kernel تقدمًا مهمًا في تحسين تدريب نماذج اللغة الكبيرة. من خلال نوى Triton المصممة بعناية وتقنيات تحسين الذاكرة ودعم النموذج الواسع، فإنه يوفر للباحثين والمهندسين أداة قوية وسهلة الاستخدام يمكنها تحسين كفاءة التدريب بشكل كبير وتقليل تكاليف الحساب. إن طبيعة المشروع مفتوحة المصدر ودعم المجتمع النشط يجعله موردًا مهمًا في مجال تدريب LLM.