الوحدة 5 — صيغ التشغيل الفعّالة
النموذج المدرَّب المُخزَّن بالصيغة الأصليّة (PyTorch وسلاسل الحفظ الافتراضيّة) ليس مصمَّمًا للتشغيل الاستدلاليّ السريع على أجهزة نهائيّة. صيغ مخصّصة لهذا الاستخدام قلّصت الفجوة بين التدريب والنشر تقليصًا كبيرًا. ثلاث صيغ تسيطر اليوم، ولكلٍّ منها موضعها.
GGUF مع llama.cpp
GGUF (GPT-Generated Unified Format) صيغة صمّمها Georgi Gerganov، مشروع مفتوح المصدر يُسمّى llama.cpp. ملفّ واحد يحوي بنية النموذج، والأوزان (مكمَّمة عادةً)، والقواميس، والبيانات الوصفيّة، ورمز التوكن الخاصّ، كلّ شيء مغلَّف معًا.
مزاياها العمليّة:
- حمولة صفريّة تقريبًا: تحمّل الملفّ وتشغّله بأمر واحد
- دعم عتادي ّ واسع: معالج مركزيّ عاديّ، ومعالج ARM، وGPU (CUDA وMetal وVulkan)
- تكميم متطوّر مدمج: Q4_K_M وQ5_K_M وQ6_K وغيرها
- تجمّع نشِط جدًّا، وتحديث سريع لدعم النماذج الجديدة
llama.cpp هو محرّك التشغيل نفسه، لكنّه أصبح البنية التحتيّة لعدد من الأدوات الأعلى مستوى مثل Ollama (الوحدة 8) وLM Studio.
عمليًّا، عند اختيارك نموذجًا مكمَّمًا للتشغيل المحلّي على معالج مركزيّ، GGUF هي القيمة الافتراضيّة.
ONNX Runtime
ONNX (Open Neural Network Exchange) تنسيق موحّد يسمح بتصدير نموذج من إطار عمل (PyTorch، TensorFlow) وتشغيله بمحرّك مختلف. ONNX Runtime من مايكروسوفت هو المحرّك المرجعيّ.
مزاياه:
- تكامل ممتاز مع البيئات المؤسّسيّة، خاصّة على ويندوز و.NET
- دعم مسرِّعات متعدّدة: DirectML على ويندوز، CoreML على macOS، TensorRT على GPU من NVIDIA
- أداء ممتاز على GPU متوسّطة الحجم بفضل تحسينات على مستوى الرسم البيانيّ
- بنية تحتيّة جادّة تسهّل النشر في أنظمة إنتاج
عيوبه: التكميم أقلّ نضجًا من GGUF على المعالج المركزيّ، وحجم التوزيعة أكبر بكثير. مناسب إذا كان لديك GPU من فئة NVIDIA، أو إذا كان النشر يجري في تطبيق ويندوز أصيل.
الدورة 37 مخصّصة له بالتفصيل.
MLX على معالجات آبل
MLX إطار عمل من Apple صمِّم خصّيصًا لعائلة معالجات Apple Silicon (M1، M2، M3، M4). يستفيد من الذاكرة الموحّدة: المعالج المركزيّ وGPU يتشاركان نفس الذاكرة الفيزيائيّة، ما يزيل نسخ البيانات بينهما.
النتيجة: نموذج بـ7 مليارات مُعامِل يعمل بسرعة استثنائيّة على MacBook Pro، أفضل بكثير من نفس النموذج على معالج Intel بنفس الفئة السعريّة. لكنّه محصور بمنظومة Apple وحدها.
اختيار الصيغة بحسب العتاد المستهدف
خارطة قرار مبسّطة:
- معالج مركزيّ (Intel/AMD) على ويندوز أو لينكس: GGUF + llama.cpp
- GPU من NVIDIA (RTX 3060 فأعلى): GGUF مع دعم CUDA، أو ONNX Runtime + TensorRT
- معالج Apple Silicon: MLX أو GGUF مع Metal (كلاهما جيّد)
- تطبيق ويندوز أصيل بدون GPU: ONNX Runtime + DirectML
- جهاز محمول (Android/iOS): نسخ خاصّة، خارج نطاق هذه الدورة
الحقيقة العمليّة: 90% من مستخدمي النماذج الصغيرة على جهاز موظّف الدعم سيختارون GGUF عبر Ollama، لأنّه يعمل في كلّ مكان بجودة كافية.
التحويل والتحقّق
عند تحميل نموذج من Hugging Face بصيغته الأصليّة، خطوات التحويل إلى GGUF مبسّطة عبر أدوات llama.cpp:
# استنساخ الأدوات
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
pip install -r requirements.txt
# تحويل النموذج إلى صيغة GGUF بلا تكميم
python convert_hf_to_gguf.py /chemin/vers/qwen2.5-3b --outfile qwen2.5-3b-f16.gguf
# تكميم على 4 بتّات
./llama-quantize qwen2.5-3b-f16.gguf qwen2.5-3b-Q4_K_M.gguf Q4_K_M
بعد التحويل، تحقّق دائمًا من:
- حجم الملفّ المتوقّع (نموذج 3 مليارات على Q4_K_M ≈ 1,8 جيجابايت)
- جواب سليم على مطالبة بسيطة بلغة الاستخدام
- مطابقة اختزال sha256 إن كنت نشرت الملفّ
بيئة تنفيذ خفيفة
اختبار سريع بـllama.cpp من سطر الأوامر:
./llama-cli -m qwen2.5-3b-Q4_K_M.gguf -p "صنّف هذه البطاقة: 'لم يصلني الطلب رغم مرور أسبوعين'" -n 128
هذا الأمر يحمّل النموذج، ويولّد 128 جُملة كحدّ أقصى. وقت التحميل مرّة واحدة عند البدء، ثمّ التوليد فوريّ.
معظم المستخدمين لن يتعاملوا مع GGUF مباشرة. Ollama (الوحدة 8) يغلّف كلّ ما سبق خلف أمر بسيط: ollama run qwen2.5:3b. ينزّل، ويكمّم، ويشغّل. مفيد للاستخدام السريع، مع الحفاظ على GGUF كسلعة أساس.
الخلاصة
- GGUF + llama.cpp الخيار الافتراضيّ للتشغيل المحلّي على المعالج المركزيّ.
- ONNX Runtime ممتاز لبيئات ويندوز المؤسّسيّة وGPU من NVIDIA.
- MLX مصمَّم خصّيصًا لمعالجات Apple Silicon مع الذاكرة الموحّدة.
- الاختيار يعتمد على العتاد المستهدف، لا على تفضيل نظريّ.
- التحويل والتكميم يتمّان بأدوات
llama.cppالقياسيّة، مع تحقّق دائم من الحجم والجودة.
الوحدة التالية: كيف نقيس زمن الاستجابة والإنتاجيّة بطريقة قابلة للتكرار.