نظرة مفصلة على مشروع bitsandbytes
نظرة عامة على المشروع
bitsandbytes هي مكتبة Python مفتوحة المصدر يتم صيانتها بواسطة مؤسسة bitsandbytes، وهي مخصصة لتسهيل الوصول إلى نماذج اللغة الكبيرة ونشرها من خلال تقنيات التكميم k-bit. المشروع عبارة عن غلاف Python خفيف الوزن حول وظائف CUDA المخصصة، مع التركيز بشكل خاص على مُحسِّنات 8 بت، وضرب المصفوفات (LLM.int8())، ووظائف التكميم 8 بت و 4 بت.
عنوان المشروع: https://github.com/bitsandbytes-foundation/bitsandbytes
الوثائق الرسمية: https://huggingface.co/docs/bitsandbytes/main
الميزات والوظائف الأساسية
1. تقنيات التكميم
- تكميم 8 بت: استخدام تقنيات التكميم على مستوى الكتلة، مع الحفاظ على أداء قريب من 32 بت مع تقليل كبير في استخدام الذاكرة.
- تكميم 4 بت: توفير طرق تكميم متقدمة 4 بت مثل NF4 (Normal Float 4-bit) و FP4 (Float Point 4-bit).
- تكميم ديناميكي: اعتماد خوارزميات التكميم الديناميكي على مستوى الكتلة لتحسين كفاءة التخزين.
2. دعم المُحسِّن
- مُحسِّنات 8 بت: توفير مُحسِّنات 8 بت مختلفة من خلال وحدة
bitsandbytes.optim
.
- كفاءة الذاكرة: تقليل كبير في استهلاك الذاكرة مقارنة بالمُحسِّنات التقليدية 32 بت.
- الحفاظ على الأداء: الحفاظ على تأثير التدريب مع تقليل استخدام الذاكرة.
3. طبقات خطية مُكمَّمة
- Linear8bitLt: تطبيق طبقة خطية 8 بت.
- Linear4bit: تطبيق طبقة خطية 4 بت.
- التوصيل والتشغيل: يمكن استبدال الطبقات الخطية القياسية في PyTorch مباشرة.
المزايا التقنية
كفاءة الذاكرة
تقلل bitsandbytes بشكل كبير من استخدام ذاكرة النموذج من خلال تقنيات التكميم. على سبيل المثال، بالنسبة لنموذج يحتوي على مليار معلمة، يتطلب مُحسِّن Adam التقليدي 8 جيجابايت من الذاكرة لتخزين حالة المُحسِّن، بينما يمكن تقليل هذا المطلب بشكل كبير باستخدام تكميم 8 بت.
توافق الأجهزة
يبذل المشروع جهودًا لدعم المزيد من الخلفيات للأجهزة:
- CUDA GPU (الدعم الرئيسي)
- Intel CPU + GPU
- AMD GPU
- Apple Silicon
- NPU (وحدة معالجة عصبية)
التكامل مع QLoRA
غالبًا ما يتم استخدام تقنية التكميم 4 بت في bitsandbytes مع QLoRA (Quantized Low-Rank Adaptation) لتحقيق:
- تكميم النموذج المستهدف إلى 4 بت وتجميده.
- استخدام تقنية LoRA لضبط النموذج المجمد 4 بت بدقة.
- تقليل تكاليف الضبط الدقيق بشكل كبير مع الحفاظ على الأداء.
سيناريوهات التطبيق
1. استدلال نماذج اللغة الكبيرة
- نشر نماذج كبيرة على ذاكرة GPU محدودة.
- تحسين سرعة وكفاءة الاستدلال.
- تقليل تكاليف النشر.
2. الضبط الدقيق للنماذج
- إجراء ضبط دقيق فعال باستخدام QLoRA.
- تدريب نماذج كبيرة على أجهزة المستهلك.
- تطوير النماذج الأولية والتجارب بسرعة.
3. الحوسبة الطرفية
- تشغيل نماذج الذكاء الاصطناعي على الأجهزة ذات الموارد المحدودة.
- نشر على الأجهزة المحمولة والأنظمة المدمجة.
- تطبيقات الاستدلال في الوقت الفعلي.
المبادئ التقنية
التكميم على مستوى الكتلة
تستخدم bitsandbytes تقنية التكميم الديناميكي على مستوى الكتلة لتقسيم مصفوفة الأوزان إلى كتل صغيرة، حيث يتم تكميم كل كتلة بشكل مستقل. تحقق هذه الطريقة ضغطًا فعالًا مع الحفاظ على الدقة.
خوارزمية LLM.int8()
هذه إحدى الخوارزميات الأساسية في bitsandbytes، وهي تطبيق لضرب المصفوفات 8 بت مصمم خصيصًا لنماذج اللغة الكبيرة، مما يقلل بشكل كبير من استخدام الذاكرة مع الحفاظ على أداء النموذج.
معالجة الدقة المختلطة
بالنسبة لبعض الطبقات الهامة (مثل طبقات الانتباه الحساسة بشكل خاص)، تدعم المكتبة معالجة الدقة المختلطة، وإيجاد التوازن الأمثل بين التكميم والدقة الكاملة.
مقارنة مع طرق التكميم الأخرى
مقارنة بـ GPTQ
- سهولة الاستخدام: تستخدم bitsandbytes أوزان HuggingFace، مما يجعل التنفيذ أبسط.
- السرعة: أبطأ من طرق التكميم الأخرى.
- التوافق: تكامل أعلى مع النظام البيئي الحالي.
مقارنة بـ AWQ
- التنوع: يدعم نطاقًا أوسع من هياكل النماذج.
- كفاءة الذاكرة: استخدام الذاكرة أكثر تحسينًا في بعض السيناريوهات.
- مرونة النشر: يدعم العديد من الخلفيات للأجهزة.
التثبيت والاستخدام
التثبيت الأساسي
pip install bitsandbytes
مثال للاستخدام
import bitsandbytes as bnb
from transformers import AutoModelForCausalLM
# تحميل نموذج مُكمَّم 4 بت
model = AutoModelForCausalLM.from_pretrained(
"model_name",
load_in_4bit=True,
device_map="auto"
)
المجتمع والدعم
فريق الصيانة
يتم صيانة المشروع بواسطة مؤسسة bitsandbytes، ويتلقى الدعم من العديد من الرعاة، مما يضمن التطوير والتحسين المستمر للمشروع.
تكامل النظام البيئي
- HuggingFace: تكامل عميق في مكتبة Transformers.
- vLLM: يدعم استدلال نقاط التفتيش المُكمَّمة مسبقًا.
- أطر الضبط الدقيق المختلفة: متوافق مع أدوات مثل QLoRA و Unsloth.
ملخص
bitsandbytes هي أداة مهمة في مجال الذكاء الاصطناعي، حيث تجعل نشر واستخدام نماذج اللغة الكبيرة أسهل وأكثر اقتصادا من خلال تقنيات التكميم المتقدمة. سواء كانوا باحثين أو مطورين أو مستخدمين من الشركات، يمكنهم استخدام هذه المكتبة بكفاءة في بيئات محدودة الموارد لاستخدام أحدث نماذج الذكاء الاصطناعي. طبيعتها مفتوحة المصدر ودعم المجتمع النشط يجعلها واحدة من الحلول المفضلة في مجال تكنولوجيا التكميم.