الليلة الماضية قمت بتعليم nanochat d32 كيفية عد "r" في الفراولة (أو أشكال مماثلة). اعتقدت أن هذا سيكون مثالا جيدا / ممتعا لكيفية إضافة إمكانات إلى nanochat وكتبت دليلا كاملا هنا: يتم ذلك من خلال مهمة تركيبية جديدة "SpellingBee" تقوم بإنشاء أمثلة لمستخدم يسأل عن هذا النوع من المشكلات ، وحلا مثاليا من مساعد. ثم نقوم بضبط منتصف / SFT على هذه لمنح LLM القدرة ، أو تدريب إضافي مع RL لجعلها أكثر قوة. هناك العديد من التفاصيل التي يجب الحصول عليها بشكل صحيح خاصة في أحجام النماذج الأصغر وخطوات الدليل من خلالها. كنظرة عامة موجزة: - يجب عليك ضمان التنوع في مطالبات / استفسارات المستخدم - بالنسبة للنماذج الصغيرة مثل nanochat على وجه الخصوص ، عليك أن تكون حذرا حقا مع تفاصيل الترميز لتسهيل المهمة على LLM. على وجه الخصوص ، عليك توخي الحذر مع المسافات البيضاء ، ومن ثم عليك نشر حساب التفكير عبر العديد من الرموز المميزة للحل الجزئي: أولا نقوم بتوحيد الكلمة في علامات اقتباس ، ثم نوضجها (لتفكيك الرموز المميزة) ، ثم نكرر ونحتفظ بعداد صريح ، إلخ. - أنا أشجع النموذج على حل النموذج بطريقتين منفصلتين: طريقة يدوية (الحساب الذهني في رأسه) وأيضا عبر استخدام أداة مترجم Python الذي يمكن ل nanochat الوصول إليه. هذا "دخان ومرايا" قليلا لأن كل جهاز صراف آلي للحل "نظيف" ، بدون أخطاء. يمكن للمرء إما ضبط المهمة لمحاكاة الأخطاء وإظهار عمليات الاسترداد بالمثال ، أو تشغيل RL. على الأرجح ، يعمل مزيج من الاثنين بشكل أفضل ، حيث يعمل الأول كسابق ل RL ويمنحه أشياء للعمل معها. إذا كان nanochat نموذجا أكبر بكثير ، فأنت تتوقع أو تأمل في أن تكون هذه القدرة "تنبثق" بسهولة أكبر في مرحلة ما. ولكن نظرا لأن nanochat d32 "الدماغ" هو حجم ~ نحلة العسل ، إذا أردنا أن يحسب r في الفراولة ، فعلينا القيام بذلك عن طريق الإفراط في تمثيله في البيانات ، لتشجيع النموذج على تعلمه في وقت مبكر. لكنها تعمل! :)