في الأوراق البحثية الخاصة بنماذج GIT، تم توضيح أنه تم استخدام مشفر رؤية قوي وتم اعتماد معلمات عشوائية لنموذج اللغة. هذه المرة، نظرًا لأن الهدف هو استخدام نموذج لغة فئة 7B في النهاية، فسيتم تطبيق نموذج مُدرب مسبقًا على نموذج اللغة. سيتم فحص الوحدات التالية من أجل الضبط الدقيق. ال إسقاط الجهاز الهضمينظرًا لكونها وحدة تمت تهيئتها، يتم تضمينها دائمًا. قد تبدو بعض المجموعات زائدة عن الحاجة، ولكن يتم استكشافها دون الاهتمام كثيرًا بهذه التجربة.
يتم إعطاء الوحدات المخصصة للتدريب تدرجات، في حين يتم تعديل الباقي بحيث لا تحتوي على تدرجات.
# تحديد المعلمات المراد تدريبها (التدريب الكل سيزيد من استخدام الذاكرة)
للاسم، p في model.model.named_parameters():
إذا كان np.any([k في اسم k في Keys_finetune]):
p.requires_grad = صحيح
آخر:
p.requires_grad = خطأ
إن Vision Encoder و LLM المستخدم في هذا الفحص هما:
- openai/clip-vit-base-patch16
- الفيسبوك/opt-350m
يستخدم التدريب مجموعة بيانات COCO ويستمر لمدة 5 فترات.
فيما يلي الوحدات المستهدفة التي تم تدريبها خلال كل تجربة:
- المشروع: إسقاط الجهاز الهضمي. تتم تهيئته بشكل عشوائي، لذلك يتم تدريبه دائمًا.
- لورا: وتم تطبيق الاستعلام والمفتاح وقيمة الاهتمام الذاتي في النموذج اللغوي.
- يختار، يقرر: تم تدريب جميع الطبقات.
- فيتامين: تم تدريب جميع الطبقات.
- رأس: تم تدريب lm_head النهائي لـ OPT.
(ملاحظة: على الرغم من أنه يمكن تطبيق LoRA على ViT، ولكن لتجنب جعل التجارب معقدة للغاية، لم يتم تضمينه هذه المرة.)
كما هو موضح في مخطط خسارة التدريب، من الواضح أن بعض المجموعات لا تؤدي أداءً جيدًا. كان هذا هو الحال عندما يتم تضمين التدريب العملي الاختياري في التدريب. على الرغم من أن جميع التجارب أجريت في ظل ظروف مماثلة إلى حد ما، إلا أن التعديلات الأكثر تفصيلاً، مثل معدل التعلم، قد تكون ضرورية عند ضبط نموذج اللغة. سيتم بعد ذلك فحص النتائج، باستثناء النماذج التي يتم تضمين التدريب العملي الاختياري فيها.
انخفضت خسارة التدريب والتحقق بشكل أكبر مع الإسقاط + لورا نموذج. الضبط النهائي رأس وأظهرت الطبقة نتائج متطابقة تقريبا. إذا تم تدريب ViT أيضًا، فستظهر الخسارة أعلى قليلاً وتبدو النتائج غير مستقرة. حتى عند إضافة LoRA أثناء تدريب ViT، فإن الخسارة لا تزال مرتفعة. ولضبط هذه البيانات، يبدو أن استخدام نموذج ViT المُدرب مسبقًا دون تحديث معلماته يؤدي إلى نتائج أكثر استقرارًا. تم الاعتراف بفعالية LoRA في أماكن مختلفة، ومن الواضح من هذه التجربة أن إضافة LoRA إلى LLM أدى إلى تحسين التدريب وفقدان التحقق من الصحة.
مراجعة نتائج الاستدلال على بعض بيانات الاختبار:
عند تدريب OPT نفسه، تكون النتائج سيئة مثل نتيجة الخسارة، مما يجعل النموذج في حيرة من أمره بالنسبة للكلمات. بالإضافة إلى ذلك، عند تدريب ViT، يكون الإخراج منطقيًا من الناحية الدلالية، ولكنه يصف شيئًا مختلفًا تمامًا عن الصورة المحددة. ومع ذلك، يبدو أن النتائج الأخرى تلتقط ميزات الصور إلى حد ما. على سبيل المثال، تشير الصورة الأولى إلى "قطة" و"موزة"، أما الصورة الثانية فتشير إلى "إشارة المرور". بمقارنة النتائج مع LoRA وبدونه، يميل الأخير إلى استخدام كلمات متشابهة بشكل متكرر، ولكن يبدو أن استخدام LoRA يجعله أكثر طبيعية قليلاً. تدريب ال رأس يؤدي إلى نتائج مثيرة للاهتمام، مثل استخدام "اللعب" بدلاً من "الأكل" للصورة الأولى. ورغم وجود بعض العناصر غير الطبيعية في هذه النتائج، إلا أنه يمكن استنتاج أن التدريب كان ناجحًا في التقاط ميزات الصورة.
ولضبط الظروف في التجارب السابقة، تم استخدام نموذج لغة أصغر قليلاً، OPT-350m. الآن، الهدف هو تبديل نموذج اللغة إلى نموذج 7B. لن يقتصر الأمر على القبول بـ OPT فحسب، بل سيتم أيضًا تقديم شهادات LLM وLLaMA وMPT أقوى.
يمكن دمج هذين النموذجين بطريقة مماثلة لـ OPT. بالإشارة إلى الوظائف الأمامية لـ LlamaModel و MPTModel، قم بدمج متجهات الصورة المسقطة مع الرموز النصية، وقم بتغيير القناع من قناع الانتباه السببي ل قناع انتباه الجهاز الهضمي. هناك شيء واحد يجب ملاحظته: بالنسبة لـ MPT، فإن القناع ليس (0, -inf)، بل (False, True). ويمكن تنفيذ العمليات اللاحقة بالمثل.
لاستخدام الطراز 7B مع OPT، ما عليك سوى تغيير اسم النموذج من facebook/opt-350m إلى facebook/opt-6.7b.
بالنسبة لـ LLaMA، مع توفر LLaMA2، سيكون هذا هو النموذج المفضل. لاستخدام هذا النموذج المُدرب مسبقًا، يلزم الحصول على موافقة كل من Meta وHugging Face. الحساب ضروري لـ Hugging Face، لذا تأكد من إعداده. تأتي الموافقات عادة في غضون ساعات قليلة. بعد ذلك، قم بتسجيل الدخول إلى Hugging Face على المحطة حيث يتم تنفيذ التدريب.
Huggingface-cli تسجيل الدخول
يمكنك تسجيل الدخول باستخدام الرمز المميز الذي تم إنشاؤه في حساب Hugging Face → الإعدادات → رمز الوصول.
تظل معلمات التدريب متسقة، باستخدام مجموعة بيانات COCO وتستمر لمدة 3 عصور. استنادا إلى نتائج التجربة 1، تم تعيين الوحدات للضبط الدقيق الإسقاط + لورا.
دعونا نلقي نظرة على النتائج.
بمراجعة الخسارة، من الواضح أن النماذج التي تستخدم LLaMA2 وMPT كـ LLM تظهر انخفاضًا مرضيًا أكثر. دعونا نلاحظ أيضا نتائج الاستدلال.
فيما يتعلق بالصورة الأولى، بالنسبة لجميع الطرازات، تبدو التعبيرات أكثر طبيعية مقارنة بـ OPT-350m. لا توجد تعبيرات غريبة مثل "موزة بموزة"، مما يسلط الضوء على قوة LLM. بالنسبة للصورة الثانية، لا تزال هناك بعض الصعوبة في استخدام عبارات مثل "إشارة المرور" أو "المبنى". بالنسبة لمثل هذه الصور المعقدة، قد تكون هناك حاجة إلى النظر في ترقية نموذج ViT.
أخيرًا، دعونا نجري استنتاجًا على الصور التي أصبحت شائعة مع GPT-4.
على الرغم من أنه كان من المتوقع الحصول على استجابات بطلاقة منذ استخدام LLM، إلا أن النتائج بسيطة للغاية. قد يكون هذا بسبب تدريب النموذج على COCO فقط.
ونظرًا للنتائج المخيبة للآمال للتجربة السابقة، فقد تقرر دمج بيانات أخرى غير COCO للتدريب. تعد مجموعة بيانات M3IT المستخدمة حاليًا شاملة تمامًا، ويمكنها التعامل مع كمية كبيرة من البيانات بنفس تنسيق COCO.
الغرض منه هو استخدام البيانات من هذا المصدر باستثناء الفئتين "الصينية" و"الفيديو". في الأصل، كانت مجموعة بيانات التدريب COCO تحتوي على 566,747 قطعة من البيانات. ومن خلال دمجها مع مصادر إضافية، ارتفع هذا إلى 1,361,650. على الرغم من أن الحجم قد تضاعف تقريبًا، يُعتقد أن مجموعة البيانات أصبحت ذات جودة أعلى بسبب زيادة تنوع المهام.
يمكن التعامل بسهولة مع مجموعات بيانات Pytorch المتعددة باستخدام ConcatDataset.
قائمة البيانات = [
datasets.load_dataset("MMInstruction/M3IT"، i) for i في m3it_name_list
]
Train_dataset = torch.utils.data.ConcatDataset([d["train"] for d in dataset_list])
تم إجراء التدريب لمدة حقبة واحدة، وتم استخدام نموذج LLaMA2 لضبط الإسقاط وLoRA، على غرار التجربة 2.
نظرًا لعدم وجود خسارة للمقارنة بهذا الوقت، فلنتعمق مباشرة في نتائج الاستدلال.
وإلى جانب حل المشكلات البسيطة، يتعامل النموذج الآن مع تحديات أكثر تعقيدًا. ومن خلال إضافة مجموعات بيانات لمهام أكثر تعقيدًا من مجرد التسميات التوضيحية، توسعت الإمكانات بشكل كبير. كان تحقيق هذا المستوى من الدقة خلال فترة واحدة فقط من التدريب أمرًا مفاجئًا.
دعونا نختبر ذلك مع الصورة المثال التالية. ونظرًا للتنوع المتزايد في مجموعة البيانات، تم تعديل طريقة عرض الأسئلة بشكل طفيف.
على الرغم من أن وصف "المظلة" لا يزال شائعًا، إلا أنه يبدو وكأنه يتحسن. لمزيد من التحسين، هناك حاجة إلى زيادة عدد فترات التدريب، وإضافة المزيد من أنواع أو أحجام مجموعات البيانات، والاستفادة من ViT أو LLM الأكثر قوة. ومع ذلك، فمن المثير للإعجاب أن مثل هذا النموذج يمكن تطويره في نصف يوم فقط بالنظر إلى الموارد الحسابية والبيانية.
اترك رد