مقدمة | التثبيت | ابدأ | التوثيق | المجتمع | الترخيص | نقلا عن المشعل
مهم
تحديث 25 سبتمبر 2024: يدعم torchtune نماذج Llama 3.2 11B Vision و Llama 3.2 3B و Llama 3.2 1B ! جربها باتباع تعليمات التثبيت الخاصة بنا هنا، ثم قم بتشغيل أي من تكوينات النص هنا أو تكوينات الرؤية هنا.
torchtune هي مكتبة PyTorch لسهولة تأليف وضبط وتجريب LLMs.
توفر الشعلة:
تطبيقات PyTorch لبرامج LLM الشهيرة من عائلات Llama وGemma وMistral وPhi وQwen النموذجية
وصفات تدريب قابلة للاختراق للضبط الكامل، LoRA، QLoRA، DPO، PPO، QAT، والتقطير المعرفي، والمزيد
كفاءة الذاكرة المبتكرة وتحسينات الأداء والتوسع باستخدام أحدث واجهات برمجة تطبيقات PyTorch
تكوينات YAML لتكوين وصفات التدريب أو التقييم أو التكميم أو الاستدلال بسهولة
دعم مدمج للعديد من تنسيقات مجموعات البيانات الشائعة والقوالب السريعة
يدعم torchtune حاليًا النماذج التالية.
نموذج | الأحجام |
---|---|
اللاما3.2-الرؤية | 11 ب [النماذج، التكوينات] |
اللاما3.2 | 1ب، 3ب [النماذج، التكوينات] |
اللاما3.1 | 8B، 70B، 405B [النماذج والتكوينات] |
اللاما3 | 8B، 70B [النماذج والتكوينات] |
اللاما2 | 7B، 13B، 70B [النماذج والتكوينات] |
كود-Llama2 | 7B، 13B، 70B [النماذج والتكوينات] |
ميسترال | 7 ب [النماذج والتكوينات] |
جيما | 2ب، 7ب [النماذج، التكوينات] |
مايكروسوفت فاي3 | ميني [النماذج والتكوينات] |
كوين2 | 0.5B، 1.5B، 7B [النماذج والتكوينات] |
نقوم دائمًا بإضافة نماذج جديدة، ولكن لا تتردد في تقديم مشكلة إذا كان هناك نموذج جديد ترغب في رؤيته في torchtune.
يوفر Torchtune وصفات الضبط التالية للتدريب على جهاز واحد أو أكثر.
طريقة الضبط الدقيق | الأجهزة | وصفة | مثال على التكوين (التكوينات) |
---|---|---|---|
ضبط كامل | 1-8 | full_finetune_single_device full_finetune_distributed | Llama3.1 8B جهاز واحد اللاما 3.1 70B موزعة |
ضبط لورا | 1-8 | lora_finetune_single_device lora_finetune_distributed | Qwen2 0.5B جهاز واحد تم توزيع جيما 7 ب |
ضبط QLoRA | 1-8 | lora_finetune_single_device lora_finetune_distributed | جهاز واحد Phi3 Mini تم توزيع اللاما 3.1 405B |
ضبط DoRA/QDoRA | 1-8 | lora_finetune_single_device lora_finetune_distributed | Llama3 8B QDoRA جهاز واحد تم توزيع Llama3 8B DoRA |
التدريب المدرك للكمية | 4-8 | qat_distributed | لاما 3 8 بي قات |
تحسين التفضيل المباشر | 1-8 | lora_dpo_single_device lora_dpo_distributed | Llama2 7B جهاز واحد تم توزيع Llama2 7B |
تحسين السياسة القريبة | 1 | ppo_full_finetune_single_device | ميسترال 7 ب |
تقطير المعرفة | 1 | Knowledge_Distillation_single_device | Qwen2 1.5B -> 0.5B |
التكوينات المذكورة أعلاه هي مجرد أمثلة للبدء. إذا رأيت نموذجًا أعلاه غير مدرج هنا، فمن المحتمل أننا لا نزال ندعمه. إذا لم تكن متأكدًا مما إذا كان هناك شيء مدعوم، فيرجى فتح مشكلة في الريبو.
فيما يلي مثال لمتطلبات الذاكرة وسرعة التدريب لنماذج Llama 3.1 المختلفة.
ملحوظة
لسهولة المقارنة، تم توفير جميع الأرقام أدناه لحجم الدفعة 2 (بدون تراكم التدرج)، ومجموعة بيانات معبأة بطول تسلسل 2048، وتم تمكين ترجمة الشعلة.
إذا كنت مهتمًا بالتشغيل على أجهزة مختلفة أو باستخدام نماذج مختلفة، فراجع وثائقنا حول تحسينات الذاكرة هنا للعثور على الإعداد المناسب لك.
نموذج | طريقة الضبط الدقيق | تشغيل قابل للتشغيل | ذروة الذاكرة لكل GPU | الرموز المميزة/ثانية * |
---|---|---|---|---|
اللاما 3.1 8 ب | دقة كاملة | 1 × 4090 | 18.9 جيجا بايت | 1650 |
اللاما 3.1 8 ب | دقة كاملة | 1 × ايه 6000 | 37.4 جيجا بايت | 2579 |
اللاما 3.1 8 ب | لورا | 1 × 4090 | 16.2 جيجا بايت | 3083 |
اللاما 3.1 8 ب | لورا | 1 × ايه 6000 | 30.3 جيجا بايت | 4699 |
اللاما 3.1 8 ب | كلورا | 1 × 4090 | 7.4 جيجا بايت | 2413 |
اللاما 3.1 70 ب | دقة كاملة | 8x ايه100 | 13.9 جيجا ** | 1568 |
اللاما 3.1 70 ب | لورا | 8x ايه100 | 27.6 جيجا بايت | 3497 |
اللاما 3.1 405 ب | كلورا | 8x ايه100 | 44.8 جيجابايت | 653 |
*= تم قياسه خلال فترة تدريب كاملة
**= يستخدم إلغاء تحميل وحدة المعالجة المركزية مع مُحسِّن مدمج
تم اختبار torchtune باستخدام أحدث إصدار ثابت من PyTorch بالإضافة إلى نسخة المعاينة الليلية. تعمل torchtune على تعزيز torchvision من أجل ضبط LLMs متعدد الوسائط وtorchao للحصول على أحدث تقنيات التكميم؛ يجب عليك تثبيت هذه كذلك.
# تثبيت PyTorch المستقر، torchvision، torchao إصدار ثابتspip تثبيت الشعلة torchvision torchao نقطة تثبيت torchtune
# تثبيت PyTorch، torchvision، torchao nightliespip install --pre --upgrade torch torchvision torchao --index-url https://download.pytorch.org/whl/nightly/cu121 # الخيارات الكاملة هي تثبيت cpu/cu118/cu121/cu124pip --pre --upgrade torchtune --extra-index-url https://download.pytorch.org/whl/nightly/cpu
يمكنك أيضًا الاطلاع على وثائق التثبيت الخاصة بنا للحصول على مزيد من المعلومات، بما في ذلك تثبيت torchtune من المصدر.
للتأكد من تثبيت الحزمة بشكل صحيح، يمكنك تشغيل الأمر التالي:
لحن --مساعدة
ويجب أن ترى الإخراج التالي:
الاستخدام: لحن [-h] {ls,cp,download,run,validate} ... مرحبًا بك في torchtune CLI!الخيارات: -h, --help في إظهار رسالة المساعدة هذه والخروج...
للبدء في استخدام torchtune، راجع برنامجنا التعليمي الأول لـ Finetune. سيوضح لك البرنامج التعليمي الشامل لسير العمل كيفية تقييم الاستدلال وقياسه وتشغيله باستخدام نموذج اللاما. سيوفر باقي هذا القسم نظرة عامة سريعة على هذه الخطوات مع Llama3.1.
اتبع الإرشادات الموجودة في مستودع meta-llama
الرسمي لضمان حصولك على أوزان نموذج اللاما الرسمية. بمجرد تأكيد الوصول، يمكنك تشغيل الأمر التالي لتنزيل الأوزان على جهازك المحلي. سيؤدي هذا أيضًا إلى تنزيل نموذج الرمز المميز ودليل الاستخدام المسؤول.
لتنزيل Llama3.1، يمكنك تشغيل:
لحن تنزيل meta-llama/Meta-Llama-3.1-8B-Instruct --output-dir /tmp/Meta-Llama-3.1-8B-Instruct --تجاهل الأنماط "original/consolidated.00.pth" --hf-token
نصيحة
قم بتعيين متغير البيئة الخاص بك HF_TOKEN
أو قم بتمرير --hf-token
إلى الأمر للتحقق من صحة وصولك. يمكنك العثور على الرمز المميز الخاص بك على https://huggingface.co/settings/tokens
يمكنك ضبط Llama3.1 8B مع LoRA على وحدة معالجة رسومات واحدة باستخدام الأمر التالي:
قم بضبط التشغيل lora_finetune_single_device --config llama3_1/8B_lora_single_device
للتدريب الموزع، يتكامل Tune CLI مع torchrun. لتشغيل مجموعة كاملة من Llama3.1 8B على وحدتي معالجة رسوميات:
تشغيل اللحن --nproc_per_node 2 full_finetune_distributed --config llama3_1/8B_full
نصيحة
تأكد من وضع أي أوامر torchrun قبل مواصفات الوصفة. ستتجاوز أي وسيطات CLI بعد ذلك التكوين ولن تؤثر على التدريب الموزع.
هناك طريقتان يمكنك من خلالهما تعديل التكوينات:
تجاوزات التكوين
يمكنك الكتابة مباشرة فوق حقول التكوين من سطر الأوامر:
قم بتشغيل اللحن lora_finetune_single_device --config llama2/7B_lora_single_device Batch_size=8 Enable_activation_checkpointing=صحيح max_steps_per_epoch=128
تحديث نسخة محلية
يمكنك أيضًا نسخ التكوين إلى دليلك المحلي وتعديل المحتويات مباشرة:
لحن cp llama3_1/8B_full ./my_custom_config.yaml تم النسخ إلى ./my_custom_config.yaml
بعد ذلك، يمكنك تشغيل وصفتك المخصصة عن طريق توجيه أمر tune run
إلى ملفاتك المحلية:
قم بتشغيل اللحن full_finetune_distributed --config ./my_custom_config.yaml
تحقق من tune --help
لجميع أوامر وخيارات CLI الممكنة. لمزيد من المعلومات حول استخدام التكوينات وتحديثها، قم بإلقاء نظرة على التعمق في التكوين.
يدعم Torchtune الضبط الدقيق لمجموعة متنوعة من مجموعات البيانات المختلفة، بما في ذلك نمط التعليمات ونمط الدردشة ومجموعات بيانات التفضيلات والمزيد. إذا كنت تريد معرفة المزيد حول كيفية تطبيق هذه المكونات لضبط مجموعة البيانات المخصصة الخاصة بك، فيرجى مراجعة الروابط المتوفرة بالإضافة إلى مستندات API الخاصة بنا.
يركز Torchtune على التكامل مع الأدوات والمكتبات الشائعة من النظام البيئي. هذه مجرد أمثلة قليلة، وهناك المزيد قيد التطوير:
معانقة Face Hub للوصول إلى أوزان النماذج
EleutherAI's LM Eval Harness لتقييم النماذج المدربة
مجموعات بيانات الوجه المعانقة للوصول إلى مجموعات بيانات التدريب والتقييم
PyTorch FSDP2 للتدريب الموزع
torcao لأنواع dtypes ذات الدقة الأقل وتقنيات التكميم بعد التدريب
الأوزان والتحيزات لتسجيل المقاييس ونقاط التفتيش وتتبع التقدم المحرز في التدريب
المذنب كخيار آخر للتسجيل
ExecuTorch للاستدلال على الجهاز باستخدام النماذج الدقيقة
وحدات البت والبايت لمُحسِّنات الذاكرة المنخفضة لوصفاتنا الخاصة بالجهاز الواحد
PEFT للاستمرار في الضبط الدقيق أو الاستدلال باستخدام نماذج المشعل في نظام Hugging Face البيئي
نحن نقدر حقًا مجتمعنا والمساهمات التي يقدمها مستخدمونا الرائعون. سوف نستخدم هذا القسم لذكر بعض هذه المساهمات. إذا كنت ترغب في المساعدة أيضًا، فيرجى الاطلاع على دليل المساهمة.
@SalmanMohammadi على إضافة وصفة شاملة وشاملة لتحسين التعلم المعزز من ردود الفعل البشرية (RLHF) باستخدام PPO لضبط الشعلة
@fyabc لإضافة نماذج Qwen2 والرمز المميز وتكامل الوصفة إلى torchtune
@solitude-alive لإضافة نموذج Gemma 2B إلى torchtune، بما في ذلك تغييرات الوصفة والتحقق الرقمي من النماذج وصحة الوصفة
@yechenzhi لإضافة تحسين التفضيل المباشر (DPO) إلى torchtune، بما في ذلك الوصفة والتكوين بالإضافة إلى عمليات التحقق من الصحة
كود Llama2 الموجود في هذا المستودع مستوحى من كود Llama2 الأصلي.
نريد أن نوجه تحية كبيرة إلى EleutherAI وHugging Face وWeights & Biases لكونهم متعاونين رائعين ولعملهم معنا على بعض عمليات التكامل هذه داخل torchtune.
نريد أيضًا أن نشيد ببعض المكتبات والأدوات الرائعة من النظام البيئي:
gpt-fast لتقنيات الاستدلال LLM عالية الأداء والتي اعتمدناها خارج الصندوق
وصفات اللاما للصعود إلى مجتمع اللاما 2
bitsandbytes لجلب العديد من التقنيات القائمة على الذاكرة والأداء إلى نظام PyTorch البيئي
@winglian وaxolotl للحصول على تعليقات مبكرة وتبادل الأفكار حول تصميم torchtune ومجموعة الميزات.
lit-gpt لدفع مجتمع LLM إلى الأمام.
HF TRL لتسهيل الوصول إلى نماذج المكافآت لمجتمع PyTorch.
تم إصدار torchtune بموجب ترخيص BSD 3. ومع ذلك، قد تكون لديك التزامات قانونية أخرى تحكم استخدامك للمحتوى الآخر، مثل شروط الخدمة لنماذج الطرف الثالث.
إذا وجدت مكتبة torchtune مفيدة، يرجى الاستشهاد بها في عملك على النحو التالي.
@software{torchtune، العنوان = {torchtune: مكتبة PyTorch's Finetuning}، المؤلف = {مشرفو ومساهمو Torchtune}، عنوان url = {https://github.com/pytorch/torchtune}، الترخيص = {BSD-3-Clause}، شهر = أبريل، السنة = {2024}}