TRL documentation

تكامل Unsloth

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v1.18.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

تكامل Unsloth

Unsloth هو إطار مفتوح المصدر للضبط الدقيق والتعلم المعزز، يدرب نماذج اللغة الكبيرة (مثل Llama وOpenAI gpt-oss وMistral وGemma وDeepSeek وغيرها) بسرعة تصل إلى ضعف السرعة مع تقليل ذاكرة VRAM بنسبة تصل إلى 80%. يتيح Unsloth التدريب والتقييم والتشغيل والنشر باستخدام محركات الاستدلال الأخرى مثل llama.cpp وOllama وvLLM.

توفر المكتبة سير عمل مبسّط ومتوافق مع Hugging Face للتدريب والتقييم والاستدلال والنشر، وهي متوافقة تمامًا مع SFTTrainer.

الميزات الرئيسية

  • دعم التدريب لجميع النماذج المتوافقة مع Transformers: تحويل النص إلى كلام (TTS)، متعددة الوسائط، BERT، التعلم المعزز (RL) والمزيد
  • يدعم الضبط الدقيق الكامل، والتدريب المسبق، وLoRA، وQLoRA، والتدريب بدقة 8 بت والمزيد
  • يعمل على Linux وWindows وColab وKaggle؛ مع وحدات معالجة رسومات NVIDIA، وقريبًا على إعدادات AMD وIntel
  • يدعم معظم الميزات التي يدعمها TRL، بما في ذلك RLHF (GSPO، GRPO، DPO، إلخ)
  • تضمن نواة Triton المكتوبة يدوياً ومحرك backprop اليدوي عدم حدوث أي تدهور في الدقة (خطأ تقريب 0%)

التثبيت

pip install

التثبيت المحلي (يُوصى بنظام لينكس):

pip install unsloth

يمكنك أيضًا تثبيت unsloth وفقًا لـ التوثيق الرسمي. بمجرد التثبيت، يمكنك دمج unsloth في سير عملك بطريقة بسيطة للغاية؛ فبدلًا من تحميل AutoModelForCausalLM، ما عليك سوى تحميل FastLanguageModel على النحو التالي:

import torch
from trl import SFTConfig, SFTTrainer
from unsloth import FastLanguageModel

max_length = 2048 # Supports automatic RoPE Scaling, so choose any number

# Load model
model, tokenizer = FastLanguageModel.from_pretrained(
    model_name="unsloth/mistral-7b",
    max_seq_length=max_length,
    dtype="auto",  # For auto-detection. Float16 for Tesla T4, V100, Bfloat16 for Ampere+
    load_in_4bit=True,  # Use 4bit quantization to reduce memory usage. Can be False
)

# Do model patching and add fast LoRA weights
model = FastLanguageModel.get_peft_model(
    model,
    r=16,
    target_modules=[
        "q_proj",
        "k_proj",
        "v_proj",
        "o_proj",
        "gate_proj",
        "up_proj",
        "down_proj",
    ],
    lora_alpha=16,
    lora_dropout=0,  # Dropout = 0 is currently optimized
    bias="none",  # Bias = "none" is currently optimized
    use_gradient_checkpointing=True,
    random_state=3407,
)

training_args = SFTConfig(output_dir="./output", max_length=max_length)

trainer = SFTTrainer(
    model=model,
    args=training_args,
    train_dataset=dataset,
)
trainer.train()

النموذج المحفوظ متوافق تمامًا مع مكتبة transformers الخاصة بـ Hugging Face. لمعرفة المزيد حول unsloth، راجع المستودع الرسمي الخاص بهم.

تثبيت Docker

docker run -d -e JUPYTER_PASSWORD="mypassword" \
  -p 8888:8888 -p 2222:22 \
  -v $(pwd)/work:/workspace/work \
  --gpus all \
  unsloth/unsloth

الوصول إلى Jupyter Lab عبر http://localhost:8888 والبدء في الضبط الدقيق!

التدريب

هذه بعض الإعدادات الأساسية التي يمكنك تفعيلها أو تعطيلها قبل التدريب:

  • max_seq_length = 2048 – يتحكم في طول السياق. على الرغم من أن Llama-3 يدعم 8192، فإننا نوصي باستخدام 2048 للاختبار. يتيح Unsloth ضبطًا دقيقًا لسياق أطول بمقدار 4 أضعاف.
  • dtype = "auto" – للكشف التلقائي؛ استخدم torch.float16 أو torch.bfloat16 للبطاقات الرسومية الأحدث.
  • load_in_4bit = True – يُفعّل التكميم بدقة 4 بت، مما يقلل من استهلاك الذاكرة أربع مرات عند الضبط الدقيق. تعطيل هذا الخيار يتيح تفعيل الضبط الدقيق باستخدام LoRA بدقة 16 بت.
  • لتفعيل التدريب الكامل (FFT)، اضبط full_finetuning = True. أما للتدريب بدقة 8 بت، فاضبط load_in_8bit = True. ملاحظة: لا يمكن ضبط أكثر من طريقة تدريب واحدة على True في الوقت نفسه.

لمزيد من المعلومات حول تكوين معاملات Unsloth الفائقة وميزاته، اقرأ دليل التوثيق هنا.

حفظ النموذج

يتيح لك Unsloth حفظ النموذج المُحسَّن مباشرةً كملف صغير يُسمى مُكيّف LoRA. يمكنك بدلاً من ذلك الدفع إلى Hugging Face hub إذا كنت ترغب في رفع نموذجك! تذكّر بالحصول على رمز Hugging Face وإضافة رمزك!

الحفظ بصيغة GGUF

لحفظ النموذج بصيغة GGUF، يستخدم Unsloth مكتبة llama.cpp. للحفظ محليًا:

model.save_pretrained_gguf("directory", tokenizer, quantization_method = "q4_k_m")
model.save_pretrained_gguf("directory", tokenizer, quantization_method = "q8_0")
model.save_pretrained_gguf("directory", tokenizer, quantization_method = "f16")

للدفع إلى المستودع:

model.push_to_hub_gguf("hf_username/directory", tokenizer, quantization_method = "q4_k_m")
model.push_to_hub_gguf("hf_username/directory", tokenizer, quantization_method = "q8_0")

الحفظ في vLLM

للحفظ بدقة 16-بت من أجل vLLM، استخدم:

model.save_pretrained_merged("model", tokenizer, save_method = "merged_16bit",)
model.push_to_hub_merged("hf/model", tokenizer, save_method = "merged_16bit", token = "")
Update on GitHub