LMFlow - مجموعة أدوات الضبط الدقيق والاستدلال للنماذج الأساسية الكبيرة
نظرة عامة على المشروع
LMFlow هو مشروع مفتوح المصدر تم تطويره بواسطة فريق OptimalScale، وهو عبارة عن مجموعة أدوات قابلة للتطوير وسهلة الاستخدام وفعالة لضبط النماذج الكبيرة للتعلم الآلي. تم تصميم هذا المشروع ليكون سهل الاستخدام وسريعًا وموثوقًا، ويهدف إلى جعل تقنية النماذج اللغوية الكبيرة متاحة للمجتمع بأكمله، وتحقيق رؤية "جعل النماذج الكبيرة تخدم الجميع".
عنوان المشروع: https://github.com/OptimalScale/LMFlow
الميزات الأساسية
1. دعم طرق تدريب متنوعة
- الضبط الدقيق الكامل للمعلمات: تحديث جميع المعلمات لضبط النموذج اللغوي بدقة.
- LoRA (Low-Rank Adaptation): خوارزمية ضبط دقيق فعالة للمعلمات، أكثر كفاءة من الضبط الدقيق الكامل للمعلمات.
- LISA (Layerwise Importance Sampling): خوارزمية ضبط دقيق فعالة للذاكرة، قادرة على تدريب نماذج 7B في ذاكرة GPU بسعة 24 جيجابايت دون الحاجة إلى التفريغ.
2. دعم واسع النطاق للنماذج
يدعم مجموعة متنوعة من النماذج اللغوية الكبيرة السائدة، بما في ذلك:
- سلسلة DeepSeek: deepseek, deepseek_v2, deepseek_r1، إلخ.
- سلسلة LLaMA: llama2, llama3, llama3_for_tool
- سلسلة Qwen: qwen2, qwen2_for_tool, qwen2_5، إلخ.
- Gemma, Phi, Yi, InternLM2 والعديد من هياكل النماذج الأخرى.
3. تقنيات تحسين الأداء
تحسين الذاكرة
- FlashAttention-2: يدعم أحدث تقنيات FlashAttention، مما يحسن بشكل كبير سرعة التدريب والاستدلال.
- نقاط تفتيش التدرج: تحسين استخدام الذاكرة من خلال استراتيجية حساب مقابل الذاكرة.
- DeepSpeed Zero-3: يدعم التدريب الموزع للنماذج واسعة النطاق.
تسريع الاستدلال
- تكامل vLLM: يدعم الاستدلال والخدمات السريعة وسهلة الاستخدام للنماذج اللغوية الكبيرة.
- فك التشفير التخميني: يدعم تقنية فك التشفير التخميني لتسريع الاستدلال.
- الاستدلال على وحدة المعالجة المركزية: يدعم تشغيل نماذج LLaMA على وحدة المعالجة المركزية (من خلال التكميم بـ 4 بت).
4. ميزات وظيفية غنية
دعم قوالب المحادثة
- تم إعداد قوالب المحادثة الأحدث لـ Llama-3 و Phi-3 مسبقًا.
- يدعم العديد من القوالب الشائعة مثل chatml.
- قوالب محادثة قابلة للتخصيص للحصول على أداء أفضل.
دعم متعدد الوسائط
- يدعم إدخال الوسائط المتعددة للصور والنصوص.
- يوفر وظائف روبوتات الدردشة متعددة الوسائط.
- خدمة العرض التوضيحي عبر الإنترنت متاحة.
معالجة السياق الطويل
- يدعم استيفاء الموضع (القياس الخطي و NTK) لنماذج LLaMA.
- توسيع قدرة معالجة السياق للنماذج.
5. التقييم والاختبار المعياري
LMFlow Benchmark هو إطار عمل تقييم تلقائي مصمم خصيصًا للنماذج اللغوية الكبيرة مفتوحة المصدر، ويستخدم احتمالية السجل السلبية (NLL) كمقياس لتقييم قدرة النموذج في الجوانب التالية:
- محادثة الدردشة
- الاستدلال المنطقي
- اتباع التعليمات
الابتكار التقني
خوارزمية RAFT
يقترح المشروع خوارزمية محاذاة جديدة: Reward rAnked FineTuning (RAFT)، هذه الطريقة أكثر كفاءة من RLHF التقليدية القائمة على PPO.
محسن مخصص
يدعم مجموعة متنوعة من التدريب على المحسنات المخصصة، بما في ذلك:
- RMSprop, LION-32bit, Adam, AdamW
- AdaFactor, Adan, RAdam وأكثر من 20 مُحسِّنًا آخر.
- يمكن اختيار أنسب استراتيجية تحسين وفقًا للمهمة المحددة.
حالات الاستخدام العملي
اختراقات في المجال الطبي
أظهرت النماذج التي تم تدريبها بواسطة LMFlow أداءً ممتازًا في المجال الطبي، حيث تجاوز أداء نماذج ضبط المهام أداء ChatGPT في المجال الطبي، مما يدل على إمكانات هائلة في تطبيقات المجال الرأسي.
سلسلة نماذج Robin
أصدر المشروع العديد من نماذج Robin عالية الأداء:
- Robin-33B-V2: حقق درجة ممتازة بلغت 64.1 نقطة في لوحة المتصدرين Huggingface LLM.
- يوفر نقاط تفتيش متعددة بأحجام 7B و 13B و 33B و 65B وما إلى ذلك.
التثبيت والاستخدام
المتطلبات البيئية
- تم اختباره بشكل أساسي على نظام التشغيل Linux (Ubuntu 20.04).
- يدعم إصدارات CUDA 10.3-11.7.
- بيئة Python 3.9.
التثبيت السريع
git clone -b v0.0.9 https://github.com/OptimalScale/LMFlow.git
cd LMFlow
conda create -n lmflow python=3.9 -y
conda activate lmflow
conda install mpi4py
pip install -e .
تثبيت PyPI
pip install lmflow-finetune
التأثير التقني
أحدث مشروع LMFlow تأثيرًا كبيرًا في الأوساط الأكاديمية والصناعية:
- تم نشر الأوراق ذات الصلة في المؤتمرات الأكاديمية الكبرى.
- حصل على الكثير من الاهتمام والاستخدام على GitHub.
- قدم مساهمة كبيرة في النظام البيئي للنماذج اللغوية الكبيرة مفتوحة المصدر.
ملخص
بصفته مجموعة أدوات شاملة للنماذج اللغوية الكبيرة، لا يوفر LMFlow حلولًا كاملة لتدريب النماذج والاستدلال فحسب، بل أجرى أيضًا ابتكارات في جوانب متعددة مثل تحسين الذاكرة وتسريع الأداء وتقييم النماذج. إنه يقلل من حاجز استخدام النماذج اللغوية الكبيرة، مما يسمح لمزيد من الباحثين والمطورين ببناء ونشر نماذجهم اللغوية بسهولة، وتحقيق هدف "جعل النماذج الكبيرة تخدم الجميع" حقًا.