XTuner - مجموعة أدوات الضبط الدقيق الفعالة للنماذج اللغوية الكبيرة
نظرة عامة على المشروع
XTuner هي مجموعة أدوات ضبط دقيق للنماذج اللغوية الكبيرة، تتسم بالكفاءة والمرونة والشمولية، تم تطويرها بواسطة فريق InternLM. يهدف هذا المشروع إلى تزويد المستخدمين بأداة سهلة الاستخدام وقوية لضبط دقة مجموعة متنوعة من النماذج اللغوية الكبيرة، بما في ذلك InternLM و Llama و Qwen و ChatGLM و Baichuan وغيرها من النماذج السائدة.
الميزات الأساسية
1. الكفاءة (Efficient)
- متطلبات موارد منخفضة: يدعم الضبط الدقيق للنماذج اللغوية الكبيرة ذات 7 مليارات معلمة على وحدة معالجة رسومية واحدة بسعة 8 جيجابايت.
- توسع متعدد العقد: يدعم الضبط الدقيق متعدد العقد لأكثر من 70 مليار معلمة.
- تحسين الأداء: جدولة تلقائية للمشغلين ذوي الأداء العالي، مثل FlashAttention و Triton kernels، لتحسين إنتاجية التدريب.
- تكامل DeepSpeed: متوافق مع إطار عمل DeepSpeed، مما يتيح سهولة استخدام تقنيات تحسين ZeRO المختلفة.
2. المرونة (Flexible)
- دعم نماذج متعددة: يدعم مجموعة متنوعة من النماذج اللغوية الكبيرة.
- سلسلة InternLM (InternLM، InternLM2، InternLM2.5، InternLM3)
- سلسلة Meta Llama (Llama 2، Llama 3)
- نماذج سائدة أخرى: Mixtral-8x7B، ChatGLM، Qwen، Baichuan، Gemma، DeepSeek، إلخ.
- دعم متعدد الوسائط: يدعم نماذج اللغة المرئية (VLM)، وخاصة النماذج القائمة على بنية LLaVA.
- خطوط أنابيب البيانات: خطوط أنابيب بيانات مصممة بعناية، تدعم مجموعة متنوعة من تنسيقات مجموعات البيانات.
- خوارزميات تدريب متعددة: يدعم QLoRA و LoRA والضبط الدقيق للمعلمات الكاملة وغيرها من استراتيجيات التدريب المتعددة.
3. الشمولية (Full-featured)
- أوضاع تدريب متعددة:
- التدريب المسبق المستمر
- الضبط الدقيق للتعليمات
- الضبط الدقيق للوكيل الذكي
- وظيفة المحادثة: يدعم استخدام القوالب المعرفة مسبقًا للمحادثة مع النماذج الكبيرة.
- تكامل سلس: يمكن دمج نماذج الإخراج بسلاسة مع مجموعات أدوات النشر والخدمات (LMDeploy) ومجموعات أدوات التقييم واسعة النطاق (OpenCompass، VLMEvalKit).
النماذج المدعومة
يدعم XTuner مجموعة واسعة من عائلات النماذج، بما في ذلك على سبيل المثال لا الحصر:
سلسلة النماذج |
نموذج محدد |
الميزات |
InternLM |
InternLM، InternLM2، InternLM2.5، InternLM3 |
مُحسّن للغة الصينية، أداء ممتاز |
Llama |
Llama 2، Llama 3 |
نموذج مفتوح المصدر من Meta |
Qwen |
Qwen 1.5، إلخ. |
نموذج مفتوح المصدر من Alibaba |
ChatGLM |
ChatGLM3-6B، إلخ. |
نموذج مفتوح المصدر من جامعة Tsinghua |
Baichuan |
Baichuan2، إلخ. |
نموذج مفتوح المصدر من Baichuan Intelligence |
Mixtral |
Mixtral 8x7B |
نموذج خبير مختلط من Mistral AI |
أخرى |
Gemma، DeepSeek، MiniCPM، إلخ. |
نماذج مفتوحة المصدر من شركات كبرى |
قدرات متعددة الوسائط
يتفوق XTuner في مجال الوسائط المتعددة، وخاصة في نماذج اللغة المرئية:
- دعم بنية LLaVA: دعم كامل للتدريب المسبق والضبط الدقيق لبنية LLaVA-v1.5.
- أداء ممتاز: أداء نموذج LLaVA-InternLM2-20B متميز.
- مجموعات متعددة: يدعم مجموعات متعددة من المشفرات المرئية والنماذج اللغوية.
- أحدث الإصدارات:
- LLaVA-Llama-3-8B
- LLaVA-Llama-3-8B-v1.1
- LLaVA-Phi-3-mini
التثبيت والاستخدام
تجهيز البيئة
# إنشاء بيئة افتراضية لـ Python 3.10
conda create --name xtuner-env python=3.10 -y
conda activate xtuner-env
طرق التثبيت
الطريقة الأولى: التثبيت عبر pip
pip install -U xtuner
الطريقة الثانية: دمج DeepSpeed
pip install -U 'xtuner[deepspeed]'
الطريقة الثالثة: التثبيت من المصدر
git clone https://github.com/InternLM/xtuner.git
cd xtuner
pip install -e '.[all]'
بداية سريعة
1. تجهيز ملف التكوين
# عرض جميع التكوينات المتاحة
xtuner list-cfg
# نسخ ملف التكوين للتخصيص
xtuner copy-cfg ${CONFIG_NAME} ${SAVE_PATH}
2. بدء الضبط الدقيق
# الضبط الدقيق لوحدة معالجة رسومية واحدة
xtuner train internlm2_5_chat_7b_qlora_oasst1_e3 --deepspeed deepspeed_zero2
# الضبط الدقيق لوحدات معالجة رسومية متعددة
NPROC_PER_NODE=${GPU_NUM} xtuner train internlm2_5_chat_7b_qlora_oasst1_e3 --deepspeed deepspeed_zero2
3. تحويل النموذج
# تحويل نموذج PTH إلى تنسيق Hugging Face
xtuner convert pth_to_hf ${CONFIG_NAME_OR_PATH} ${PTH} ${SAVE_PATH}
4. اختبار المحادثة
# التحدث مع النموذج الذي تم ضبطه بدقة
xtuner chat ${NAME_OR_PATH_TO_LLM} --adapter ${NAME_OR_PATH_TO_ADAPTER}
وظائف متقدمة
1. التوازي التسلسلي
- يدعم تدريب التسلسلات الطويلة جدًا
- طريقة تدريب فعالة وقابلة للتطوير
- مناسبة للمشاهد التي تتطلب معالجة نصوص طويلة
2. تدريب DPO/ORPO
- يدعم Direct Preference Optimization (DPO)
- يدعم Odds Ratio Preference Optimization (ORPO)
- يدعم تدريب نموذج المكافأة
- يدعم البيانات المعبأة والتوازي التسلسلي
3. تحسين الاستدلال الرياضي
- يدعم OREAL (طريقة جديدة للتعلم المعزز)
- مُحسّن خصيصًا لمهام الاستدلال الرياضي
الأداء
سرعة التدريب
- Llama2 7B: يتميز بسرعة تدريب ممتازة على وحدة معالجة رسومية واحدة.
- Llama2 70B: يدعم التدريب المتوازي لوحدات معالجة رسومية متعددة، ويتميز بأداء سرعة ممتاز.
- DeepSeek V2: زيادة سرعة التدريب بمقدار الضعف مقارنة بالإصدار السابق.
كفاءة الذاكرة
- متطلبات ذاكرة منخفضة: ذاكرة وحدة معالجة رسومية بسعة 20 جيجابايت كافية للضبط الدقيق لـ QLoRA.
- الضبط الدقيق للمعلمات الكاملة: يمكن إجراء الضبط الدقيق للمعلمات الكاملة باستخدام 4 وحدات معالجة رسومية بسعة 80 جيجابايت.
- تحسين الذاكرة: تقليل كبير في استخدام الذاكرة من خلال تقنيات التحسين المختلفة.
تكامل النظام البيئي
باعتباره جزءًا مهمًا من النظام البيئي لـ InternLM، يتكامل XTuner بإحكام مع الأدوات الأخرى:
- LMDeploy: مجموعة أدوات نشر النموذج والخدمات
- OpenCompass: مجموعة أدوات التقييم واسعة النطاق
- VLMEvalKit: مجموعة أدوات تقييم نماذج اللغة المرئية
- Lagent: إطار عمل الوكيل الذكي
- AgentLego: مكتبة واجهة برمجة تطبيقات (API) متعددة الوظائف
سيناريوهات التطبيق
1. البحث الأكاديمي
- أبحاث الضبط الدقيق للنماذج اللغوية الكبيرة
- تطوير نماذج متعددة الوسائط
- التحقق من صحة الخوارزميات الجديدة
2. التطبيقات الصناعية
- روبوتات محادثة مخصصة
- تطوير نماذج خاصة بالمجال
- مساعدو الذكاء الاصطناعي على مستوى المؤسسات
3. التعليم والتدريب
- تدريس دورات الذكاء الاصطناعي
- بناء بيئات تجريبية
- التدريب على المهارات
الخلاصة
XTuner هي مجموعة أدوات ضبط دقيق للنماذج اللغوية الكبيرة، تتسم بالشمولية والأداء المتميز. لا تدعم فقط مجموعة واسعة من النماذج وخوارزميات التدريب، بل توفر أيضًا سلسلة أدوات كاملة، من إعداد البيانات إلى نشر النموذج، مما يوفر للمستخدمين حلاً شاملاً. سواء كان البحث الأكاديمي أو التطبيقات الصناعية، يمكن لـ XTuner تلبية الاحتياجات في سيناريوهات مختلفة، وهو الخيار الأمثل لإجراء الضبط الدقيق للنماذج اللغوية الكبيرة.