الدرس 16 من 24

التدريب مع Unsloth

تصدير نموذجك

3 دقيقة للقراءة

بعد التدريب، تحتاج لتصدير نموذجك للنشر. Unsloth يوفر عدة خيارات تصدير بما في ذلك GGUF لـ Ollama.

خيارات التصدير

الصيغةحالة الاستخدامالأدوات
محولات LoRAالاستدلال مع النموذج الأساسيPEFT، vLLM
نموذج مدمجHuggingFace Hubtransformers
GGUFOllama، llama.cppالنشر المحلي
ONNXالنشر على الحافةONNX Runtime

حفظ محولات LoRA فقط

أصغر تصدير - فقط الأوزان المدرّبة:

from unsloth import FastLanguageModel

# بعد التدريب، احفظ محول LoRA فقط
model.save_pretrained("./outputs/lora-adapter")
tokenizer.save_pretrained("./outputs/lora-adapter")

# الحجم: ~50-200 MB حسب الرتبة

تحميل محولات LoRA

from unsloth import FastLanguageModel

# حمّل النموذج الأساسي
model, tokenizer = FastLanguageModel.from_pretrained(
    model_name="unsloth/Llama-3.2-3B-Instruct",
    max_seq_length=2048,
    load_in_4bit=True,
)

# حمّل المحول
model.load_adapter("./outputs/lora-adapter")

دمج وحفظ النموذج الكامل

ادمج المحولات في النموذج الأساسي للنشر المستقل:

from unsloth import FastLanguageModel

# الطريقة 1: احفظ نموذج 16-bit مدمج
model.save_pretrained_merged(
    "outputs/merged-model-16bit",
    tokenizer,
    save_method="merged_16bit",
)

# الطريقة 2: احفظ نموذج 4-bit مدمج (أصغر)
model.save_pretrained_merged(
    "outputs/merged-model-4bit",
    tokenizer,
    save_method="merged_4bit",
)

التصدير إلى GGUF لـ Ollama

GGUF هي الصيغة المستخدمة من Ollama و llama.cpp:

from unsloth import FastLanguageModel

# صدّر إلى GGUF بمستويات تكميم مختلفة
model.save_pretrained_gguf(
    "outputs/model-gguf",
    tokenizer,
    quantization_method="q4_k_m",  # تكميم 4-bit
)

خيارات التكميم

الطريقةالحجمالجودةحالة الاستخدام
q8_0الأكبرالأفضلعندما الجودة مهمة
q6_kكبيرجيدة جداًتوازن
q5_k_mمتوسطجيدةالاستخدام العام
q4_k_mصغيرجيدةالخيار الافتراضي
q4_0أصغرمقبولةذاكرة محدودة
q2_kالأصغرأقلقيود شديدة
# جودة عالية
model.save_pretrained_gguf("outputs/q8", tokenizer, quantization_method="q8_0")

# متوازن (موصى)
model.save_pretrained_gguf("outputs/q4km", tokenizer, quantization_method="q4_k_m")

# صغير
model.save_pretrained_gguf("outputs/q4", tokenizer, quantization_method="q4_0")

الاستخدام مع Ollama

بعد التصدير إلى GGUF:

1. إنشاء Modelfile

# أنشئ Modelfile
cat > Modelfile << 'EOF'
FROM ./outputs/model-gguf/unsloth.Q4_K_M.gguf

TEMPLATE """<|begin_of_text|><|start_header_id|>system<|end_header_id|>

أنت مساعد مفيد.<|eot_id|><|start_header_id|>user<|end_header_id|>

{{ .Prompt }}<|eot_id|><|start_header_id|>assistant<|end_header_id|>

"""

PARAMETER temperature 0.7
PARAMETER top_p 0.9
PARAMETER stop "<|eot_id|>"
EOF

2. إنشاء نموذج Ollama

ollama create my-finetuned-model -f Modelfile

3. تشغيل نموذجك

ollama run my-finetuned-model "مرحباً، كيف حالك؟"

الدفع إلى HuggingFace Hub

شارك نموذجك مع المجتمع:

# سجّل الدخول أولاً
from huggingface_hub import login
login(token="your_token")

# ادفع محول LoRA
model.push_to_hub("your-username/my-lora-adapter")
tokenizer.push_to_hub("your-username/my-lora-adapter")

# أو ادفع نموذج مدمج
model.push_to_hub_merged(
    "your-username/my-merged-model",
    tokenizer,
    save_method="merged_16bit",
)

# ادفع GGUF
model.push_to_hub_gguf(
    "your-username/my-model-gguf",
    tokenizer,
    quantization_method="q4_k_m",
)

سكريبت التصدير الكامل

from unsloth import FastLanguageModel
from huggingface_hub import login

# حمّل النموذج المدرّب
model, tokenizer = FastLanguageModel.from_pretrained(
    model_name="./outputs/unsloth-finetune/final",
    max_seq_length=2048,
    load_in_4bit=True,
)

# ============================================
# خيارات التصدير
# ============================================

# 1. احفظ محول LoRA فقط (الأصغر)
model.save_pretrained("exports/lora-only")
tokenizer.save_pretrained("exports/lora-only")
print("محول LoRA حُفظ!")

# 2. احفظ نموذج مدمج (للنشر على HuggingFace)
model.save_pretrained_merged(
    "exports/merged-16bit",
    tokenizer,
    save_method="merged_16bit",
)
print("النموذج المدمج حُفظ!")

# 3. احفظ GGUF (لـ Ollama)
model.save_pretrained_gguf(
    "exports/gguf",
    tokenizer,
    quantization_method="q4_k_m",
)
print("نموذج GGUF حُفظ!")

# 4. ادفع إلى HuggingFace (اختياري)
# login(token="your_token")
# model.push_to_hub_gguf("username/model-name", tokenizer, quantization_method="q4_k_m")

مقارنة حجم التصدير

لـ Llama 3.2 3B مضبوط:

نوع التصديرالحجم
محول LoRA فقط~100 MB
مدمج fp16~6 GB
GGUF q8_0~3 GB
GGUF q4_k_m~2 GB
GGUF q4_0~1.7 GB

أفضل الممارسات

  1. احفظ LoRA أولاً دائماً - صغير ويسمح بالتجريب
  2. استخدم q4_k_m لـ Ollama - أفضل توازن بين الحجم والجودة
  3. اختبر قبل الدفع - تحقق أن المخرجات تطابق التوقعات
  4. ضمّن قالب المحادثة - ضروري للنماذج المضبوطة على التعليمات

نصيحة: صدّر إلى GGUF بـ q4_k_m لنشر Ollama - هو النقطة المثلى بين الجودة والحجم لمعظم حالات الاستخدام.

في الوحدة التالية، سنتعلم كيفية تحسين نموذجنا أكثر مع محاذاة DPO. :::

مراجعة سريعة: كيف تجد هذا الدرس؟

اختبار

الوحدة 4: التدريب مع Unsloth

خذ الاختبار
نشرة أسبوعية مجانية

ابقَ على مسار النيرد

بريد واحد أسبوعياً — دورات، مقالات معمّقة، أدوات، وتجارب ذكاء اصطناعي.

بدون إزعاج. إلغاء الاشتراك في أي وقت.