اذهب إلى المحتوى

سننتعرف في مقال اليوم على صيغة ملفات GGUF التي تستخدم لتخزين النماذج للاستدلال Inference باستخدام مكتبة GGML والمكتبات الأخرى التي تعتمد عليها مثل llama.cpp أو whisper.cpp الشهيرتين. يدعم مستودع Hub هذه الصيغة مع ميزات تسمح بالفحص السريع للموترات Tensors والبيانات الوصفية داخل الملف.

صُمِّمت هذه الصيغة بوصفها "صيغة ملف واحد"، حيث يحتوي الملف الواحد عادةً على كلٍّ من سمات الضبط Configuration Attributes ومفردات المرمِّز Tokenizer Vocabulary وسمات أخرى، بالإضافة إلى جميع الموترات المُراد تحميلها في النموذج. تأتي هذه الملفات بصيغ مختلفة وفقًا لنوع تكميم Quantization الملف، لذا اطّلع على بعض منها.

استخدامات صيغة GGUF

يفيد استخدام صيغة GGUF في العديد من الجوانب تشمل:

  1. تخزين النماذج بكفاءة حيث تسهل ملفات GGUF تخزين جميع المعلومات المتعلقة بالنموذج في ملف واحد، مما يبسط عملية تحميل وتشغيل النماذج في بيئات مختلفة
  2. تدعم صيغة GGUF أنواعًا مختلفة من التكميم مثل F32، Q4_K، و Q6_K، مما يساعد على تقليل حجم النماذج مع الحفاظ على أدائها
  3. تتكامل مع مكتبات التحويل حيث يمكن استخدام ملفات GGUF مع مكتبة المحولات transformers لتحميل النماذج والمرمزين مباشرةً، مما يسهل عملية الاستدلال أو التدريب المخصص

دعم صيغة GGUF ضمن مكتبة المحولات Transformers

لقد أُضفيت القدرة على تحميل ملفات gguf ضمن مكتبة المحوِّلات transformers لتقديم مزيد من إمكانات التدريب أو الصقل Fine-tuning لنماذج gguf قبل تحويل هذه النماذج مرةً أخرى إلى صيغة gguf لاستخدامها ضمن نظام ggml البيئي، ويجب إلغاء تكميم النموذج إلى صيغة fp32 عند تحميله قبل تحميل الأوزان المُراد استخدامها في إطار عمل PyTorch.

ملاحظة: لا يزال الدعم في مراحله الأولى والمساهمات مرحَّبٌ بها لترسيخ هذا الدعم على أنواع التكميم وبنى النماذج المختلفة.

سنوضّح فيما يلي بنى النماذج وأنواع التكميم المدعومة حاليًا.

أنواع التكميم المدعومة

تُحدَّد أنواع التكميم المدعومة الأولية وفقًا لملفات التكميم الشائعة التي جرت مشاركتها على مستودع Hub وهي:

  • F32
  • Q2_K
  • Q3_K
  • Q4_0
  • Q4_K
  • Q5_K
  • Q6_K
  • Q8_0

اطّلع على مثال من محلّل بايثون Python الممتاز ‎99991/pygguf‎ لإلغاء تكميم Dequantize الأوزان.

ملاحظة: التكميم هو عملية ضغط تقلل من حجم النموذج عن طريق تقريب القيم داخل النموذج إلى نطاقات أقل دقة، مما يقلل من متطلبات التخزين والذاكرة.

بنى النماذج المدعومة

بنى النماذج المدعومة حاليًا هي البنى الشائعة جدًا على مستودع Hub، وهي:

  • LLaMa
  • Mistral
  • Qwen2

مثال لاستخدام صيغة ملفات GGUF

يمكننا تحميل ملفات gguf في مكتبة transformers من خلال تحديد الوسيط gguf_file لتوابع from_pretrained لكلٍّ من المرمِّزات والنماذج. وفيما يلي كيفية تحميل المرمِّز والنموذج، حيث يمكن تحميلهما من الملف نفسه:

from transformers import AutoTokenizer, AutoModelForCausalLM

model_id = "TheBloke/TinyLlama-1.1B-Chat-v1.0-GGUF"
filename = "tinyllama-1.1b-chat-v1.0.Q6_K.gguf"

tokenizer = AutoTokenizer.from_pretrained(model_id, gguf_file=filename)
model = AutoModelForCausalLM.from_pretrained(model_id, gguf_file=filename)

وبهذا يمكننا الآن الوصول إلى الإصدار الكامل غير المكمَّم من النموذج في نظام PyTorch البيئي، والذي يمكن دمجه مع مجموعة كبيرة من الأدوات الأخرى. يُوصَى باستخدام ملف convert-hf-to-gguf.py من نموذج llama.cpp للتحويل مرةً أخرى إلى ملف gguf.

نوضّح فيما يلي كيفية إكمال السكربت السابق لحفظ النموذج وتصديره مرةً أخرى إلى صيغة gguf:

tokenizer.save_pretrained('directory')
model.save_pretrained('directory')

!python ${path_to_llama_cpp}/convert-hf-to-gguf.py ${directory}

ترجمة -وبتصرّف- للقسم GGUF and interaction with Transformers من توثيقات Hugging Face.

اقرأ أيضًا


تفاعل الأعضاء

أفضل التعليقات

لا توجد أية تعليقات بعد



انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...