ضبط LLAMA-3.1 بشكل دقيق بكفاءة باستخدام Unsloth: تحسين البيانات والسرعة والتكلفة
قم بتحسين نموذج LLAMA-3.1 الخاص بك باستخدام تقنيات الضبط الدقيق الفعالة من Unsloth. تعرف على كيفية الاستفادة من LoRA و QLoRA لتدريب أسرع وأقل متطلبات VRAM وتحسين أداء النموذج. اكتشف تأثير المعلمات الفائقة على النموذج المضبوط دقيقًا الخاص بك. استكشف واجهة المحادثة الخاصة بـ Unsloth للتفاعل السلس مع LLMs المخصصة الخاصة بك.
١٤ فبراير ٢٠٢٥

افتح قوة الضبط الدقيق باستخدام LLAMA-3.1، الطريقة الأسهل لتكييف نماذج اللغة مع احتياجاتك المحددة. اكتشف كيفية تدريب نموذج LLAMA-3.1 الخاص بك بكفاءة باستخدام تقنيات Unsloth المتطورة، بما في ذلك LoRa و QLoRa، للحصول على نتائج ملحوظة باستخدام أقل قدر من موارد GPU. يوفر هذا المنشور دليلاً خطوة بخطوة لمساعدتك على تعظيم إمكانات بياناتك وإنشاء نموذج لغة مخصص يلبي متطلباتك الفريدة.
مراحل التدريب المختلفة: ما قبل التدريب، الضبط الدقيق المشرف، ومحاذاة التفضيل
تقنيات الضبط الدقيق المشرف: الضبط الدقيق الكامل، LoRA، و QLoRA
إعداد مُتبنّي LoRA: الرتبة، LoRA ألفا، و LoRA الانقطاع
إعداد البيانات: قالب المطالبة ورمز نهاية التسلسل
تدريب النموذج باستخدام مدرب SFT
الاستنتاج والبث المباشر
حفظ وتحميل وضبط دقيق للنماذج
واجهة المحادثة الجديدة لـ Unsloth
مراحل التدريب المختلفة: ما قبل التدريب، الضبط الدقيق المشرف، ومحاذاة التفضيل
مراحل التدريب المختلفة: ما قبل التدريب، الضبط الدقيق المشرف، ومحاذاة التفضيل
هناك عادة ثلاث مراحل مختلفة للتدريب على نماذج اللغة الكبيرة:
-
التدريب المسبق: في هذه المرحلة، يتم تدريب النموذج على مجموعة كبيرة من بيانات النص الخام لتعلم كيفية التنبؤ بالرمز أو الكلمة التالية. النتيجة هي نموذج أساسي اكتسب الكثير من المعرفة العامة من النص، ولكن لا يزال غير مفيد للمهام المحددة.
-
الضبط الدقيق المشرف: لجعل النموذج الأساسي أكثر فائدة، المرحلة الثانية هي الضبط الدقيق المشرف. في هذه المرحلة، يتم تدريب النموذج على أزواج من الأسئلة والإجابات أو أزواج من التعليمات والإجابات. المدخل هو سؤال أو تعليمة، والمخرج هو الاستجابة أو الإجابة المرغوبة. تسمح هذه المرحلة للنموذج بتعلم المعرفة والقدرات المحددة للمهمة.
-
محاذاة التفضيل: المرحلة الثالثة الاختيارية هي محاذاة التفضيل، حيث يتم تدريب النموذج على تعلم ما يفضله المستخدم من حيث الاستجابات، أو محاذاة النموذج إلى مبادئ معينة. يتم غالبًا القيام بذلك باستخدام تقنيات مثل التعلم بالتعزيز من التغذية الراجعة البشرية (RLHF) أو تحسين سياسة المناظرة (DPO).
الهدف من هذا الفيديو هو التركيز على مرحلة الضبط الدقيق المشرف، وتحديدًا كيفية ضبط دقة نموذج Llama 3.1 باستخدام مكتبة Unsloth. سيغطي الفيديو تقنيات الضبط الدقيق المختلفة، مثل الضبط الدقيق الكامل، و LoRA، و QLoRA، ومناقشة المقايضات بينها من حيث الأداء ومتطلبات الذاكرة.
تقنيات الضبط الدقيق المشرف: الضبط الدقيق الكامل، LoRA، و QLoRA
تقنيات الضبط الدقيق المشرف: الضبط الدقيق الكامل، LoRA، و QLoRA
هناك ثلاث خيارات شائعة للضبط الدقيق المشرف:
-
الضبط الدقيق الكامل: في هذا النهج، تأخذ النموذج الأصلي وتقوم بتحديث الأوزان باستخدام مجموعة بيانات التدريب على التعليمات. سيؤدي هذا إلى أفضل أداء، ولكن متطلبات VRAM ستكون عالية.
-
LoRA (التكيف منخفض الرتبة): بدلاً من تحديث الأوزان مباشرةً، تقوم بإضافة محولات خارجية إلى النموذج. يمكن التحكم في عدد المعلمات في هذه المحولات الخارجية. يتم إجراء تحديثات الأوزان لهذه المحولات بدقة 16 بت، ثم دمجها مرة أخرى في أوزان النموذج الأصلي. يوفر هذا النهج تدريبًا سريعًا، ولكن لا يزال مكلفًا بسبب عمليات 16 بت.
-
QLoRA (LoRA المكمم): هذا مشابه لـ LoRA، ولكن تتم تحديثات الأوزان بدقة 4 بت، ويتم الاحتفاظ بأوزان النموذج أيضًا في 4 بت. هذا يتطلب VRAM أقل، ولكن الأداء قد لا يكون بنفس جودة LoRA أو الضبط الدقيق الكامل.
يدعم Unsloth كل من LoRA و QLoRA للضبط الدقيق. رتبة محولات LoRA، و LoRA ألفا، و LoRA الانقطاع هي معلمات رئيسية تتحكم في عدد المعلمات ومساهمة المحولات في أوزان النموذج النهائية.
إعداد مُتبنّي LoRA: الرتبة، LoRA ألفا، و LoRA الانقطاع
إعداد مُتبنّي LoRA: الرتبة، LoRA ألفا، و LoRA الانقطاع
لإعداد محولات LoRA، هناك عدة معلمات رئيسية يجب مراعاتها:
-
الرتبة: رتبة محولات LoRA تتحكم في عدد المعلمات التي سيتم تحديثها أثناء الضبط الدقيق. رتبة أقل تعني معلمات أقل، مما يقلل من متطلبات VRAM ولكن قد يحد أيضًا من قدرة النموذج على التكيف. وبالعكس، فإن رتبة أعلى تسمح بمزيد من المرونة ولكن تتطلب المزيد من VRAM.
-
LoRA ألفا: هذه المعلمة تتحكم في مساهمة محولات LoRA في أوزان النموذج النهائية. قيمة LoRA ألفا الأعلى تعني أن محولات LoRA ستكون لها تأثير أقوى، بينما القيمة الأقل تعني أنها ستكون لها تأثير أضعف.
-
LoRA الانقطاع: هذه المعلمة تتحكم في معدل الانقطاع المطبق على محولات LoRA أثناء التدريب. زيادة معدل الانقطاع يمكن أن تساعد في منع التعلم الزائد، ولكن قد يؤدي أيضًا إلى تقليل أداء النموذج.
من خلال ضبط هذه المعلمات، يمكنك إيجاد التوازن الصحيح بين متطلبات VRAM، وسرعة التدريب، وأداء النموذج لحالة استخدامك المحددة.
إعداد البيانات: قالب المطالبة ورمز نهاية التسلسل
إعداد البيانات: قالب المطالبة ورمز نهاية التسلسل
لإعداد البيانات للضبط الدقيق، نحتاج إلى إعداد قالب المطالبة وتحديد رمز نهاية التسلسل.
قالب المطالبة أمر حاسم، حيث يحدد تنسيق بيانات الإدخال التي سيتم تدريب النموذج عليها. بالنسبة لعائلة Llama 3.1، سنستخدم قالب مطالبة Alpaca، والذي يتضمن تعليمة ومدخلاً يوفر سياقًا إضافيًا. ويتوقع من النموذج بعد ذلك إنشاء استجابة مناسبة.
# قالب مطالبة Alpaca
prompt_template = "Below is an instruction that describes a task paired with an input that provides further context. Respond with a relevant output.\n\nInstruction: {instruction}\nInput: {input}\nOutput:"
بالإضافة إلى ذلك، نحتاج إلى تحديد رمز نهاية التسلسل لمنع النموذج من إنشاء نص بلا نهاية. هذه خطوة مهمة واجه العديد من الناس مشاكل معها عند استخدام الإصدارات المكممة من النماذج مع LamaCPP.
# تعيين رمز نهاية التسلسل
end_token = "</s>"
من خلال إعداد قالب المطالبة ورمز نهاية التسلسل، نضمن تنسيق البيانات بشكل صحيح لعملية الضبط الدقيق، وهي خطوة حاسمة لتحقيق نتائج جيدة.
تدريب النموذج باستخدام مدرب SFT
تدريب النموذج باستخدام مدرب SFT
لتدريب النموذج، سنستخدم مدرب SFT (الضبط الدقيق المشرف) من حزمة TRL، والتي تم إنشاؤها والحفاظ عليها بواسطة Hugging Face.
أولاً، نقدم نموذجنا ومميز الرموز ومجموعة البيانات إلى مدرب SFT. في هذه الحالة، نستخدم عمود "text" من مجموعة البيانات، حيث قمنا بإعداد قالب المطالبة الخاص بنا لاستخدام هذا الحقل.
كما نقوم أيضًا بتعيين الحد الأقصى لطول التسلسل، والذي يجب أن يكون مبنيًا على الأمثلة في بيانات التدريب الخاصة بك. تذكر أن الطول التسلسلي الأعلى سيزيد من متطلبات VRAM.
بعد ذلك، نقوم بتكوين حجج التدريب، مثل الجهاز (في هذه الحالة، GPU T4 على Google Colab بحوالي 15 جيجابايت من VRAM) وعدد خطوات التدريب.
أخيرًا، نقوم بتشغيل المدرب، ويمكنك ملاحظة انخفاض الخسارة، وهو مؤشر جيد على تقدم التدريب.
aستغرق التدريب حوالي 8 دقائق، وكان الذروة المحجوزة للذاكرة حوالي 8 جيجابايت، وهو ما يمثل حوالي 53% من VRAM المتاح على GPU T4. هذا يوضح كفاءة نهج Unsloth، والذي يسمح بالضبط الدقيق مع متطلبات VRAM نسبيًا منخفضة.
الاستنتاج والبث المباشر
الاستنتاج والبث المباشر
للقيام بالاستنتاج، يمكننا استخدام فئة أو طريقة for_inference
على فئة FastLanguageModel
. نحتاج إلى توفير النموذج المدرب وحقيقة المطالبة في تنسيق Alpaca. يمكننا أيضًا تعيين الحد الأقصى لعدد الرموز المراد إنشاؤها.
# إجراء الاستنتاج
input_prompt = alpaca_prompt(instruction, input)
output = model.for_inference(input_prompt, max_new_tokens=256)
print(output)
لتمكين البث، يمكننا إنشاء كائن Streamer
وتمريره إلى طريقة for_inference
. سيؤدي هذا إلى عرض الاستجابات رمزًا واحدًا في كل مرة.
# تمكين البث
streamer = Streamer()
output = model.for_inference(input_prompt, max_new_tokens=256, streamer=streamer)
بهذه الطريقة، يمكنك الآن إجراء الاستنتاج على نموذجك المضبوط دقيقًا وحتى تمكين البث لتجربة تفاعلية أكثر.
حفظ وتحميل وضبط دقيق للنماذج
حفظ وتحميل وضبط دقيق للنماذج
لحفظ النموذج المضبوط دقيقًا والمميز الرمزي، يمكنك استخدام وظيفة save_pretrained()
على النموذج والمميز الرمزي:
model.save_pretrained("path/to/save/model")
tokenizer.save_pretrained("path/to/save/tokenizer")
سيؤدي هذا إلى حفظ أوزان النموذج ومميز الرموز إلى الدليل المحدد كمجموعة من ملفات JSON.
لتحميل النموذج والمميز الرمزي المحفوظين، يمكنك استخدام نفس فئة FastLanguageModel
وتوفير الدلائل المحلية:
model = FastLanguageModel.from_pretrained("path/to/save/model")
tokenizer = FastLanguageModel.from_pretrained("path/to/save/tokenizer")
سيؤدي هذا إلى تحميل النموذج والمميز الرمزي من الملفات المحفوظة.
ميزة رائعة أخرى لـ Unsloth هي القدرة على حفظ النماذج في تنسيقات مختلفة، مثل الدقة العائمة 16 بت لـ VLLM أو مباشرة في تنسيق GGUF لـ LamaCPP. هذا يسمح بالنشر والتكامل السهل مع منصات ومجموعات مختلفة.
كما يقدم Unsloth واجهة مستخدم جديدة مبنية على Gradio، والتي تسمح لك بتشغيل النماذج المدربة
التعليمات
التعليمات