بحث
مقال
أخرى

مقال

تاريخ النشر: آخر تحديث: 25 مشاهدة 0 تعليق 30 دقائق قراءة
25 مشاهدة
0 إعجاب
0 تعليق
موثوق 95%

تكتسب نماذج اللغة الصغيرة أهمية متزايدة مع سعي المستخدمين للحصول على نماذج قادرة يمكن نشرها بكفاءة. لقد أنتجت المجتمع مجموعة مثيرة من النماذج الصغيرة القادرة، حيث تدفع كل منها حدود الممكن في هذا النطاق. مع SmolLM3، نحن متحمسون للمساهمة بنموذج جديد تنافسي مفتوح بالكامل بحجم 3B:

يجلس SmolLM3 في منطقة الكفاءة المثلى. نموذجنا بحجم 3B يتفوق على Llama-3.2-3B و Qwen2.5-3B بينما يبقى تنافسياً مع البدائل الأكبر بحجم 4B (Qwen3 و Gemma3). بعيداً عن أرقام الأداء، نحن نشارك بالضبط كيف بنيناه باستخدام مجموعات بيانات عامة وأطر تدريب.


ملخص النموذج:

  • نموذج 3B تم تدريبه على 11T من الرموز، وهو الأفضل في فئته بحجم 3B وتنافسي مع نماذج 4B
  • نموذج التعليم مع تفكير مزدوج، يدعم أوضاع think/no_think
  • دعم متعدد اللغات لست لغات: الإنجليزية، الفرنسية، الإسبانية، الألمانية، الإيطالية، والبرتغالية
  • سياق طويل يصل إلى 128k باستخدام NoPE و YaRN

الوصفة الكاملة: نحن نطلق SmolLM3 مع مخططنا الهندسي. يتضمن تفاصيل الهيكل، ومزيج البيانات الدقيق الذي يظهر كيف نعزز الأداء تدريجياً عبر المجالات في نهج تدريب مسبق من ثلاث مراحل، والمنهجية لبناء نموذج تفكير هجين. عادةً، سيتطلب تحقيق هذه النتائج شهوراً من الهندسة العكسية. بدلاً من ذلك، نحن نقدم المنهجية الكاملة.


سواء كنت تبني نماذجك الخاصة أو ترغب في فهم ما يدفع الأداء في هذا النطاق، فإن هذا المخطط يظهر القصة الهندسية وراء الأداء التنافسي بحجم 3B.

دعونا نلقي نظرة على مرحلة التدريب المسبق.

التدريب المسبق

لقد غير SmolLM3 كل من الهيكل ومزيج البيانات مقارنة بسابقيه. دعونا نلقي نظرة على الهيكل وتكوينات التدريب أولاً!

تفاصيل الهيكل والتدريب


يتبع SmolLM3 هيكل محول مفكك مع ربط التضمين مشابه لـ SmolLM2، حيث يبني على هيكل Llama مع بعض التعديلات الرئيسية المحسنة للكفاءة وأداء السياق الطويل.

الانتباه المجمع (GQA): لقد استبدلنا الانتباه متعدد الرؤوس بانتباه مجمع باستخدام 4 مجموعات. أظهرت تجاربنا على نموذج 3B تم تدريبه على 100B من الرموز من FineWeb-Edu أن GQA يطابق أداء الانتباه متعدد الرؤوس بينما يقلل بشكل كبير من حجم ذاكرة التخزين المؤقت KV أثناء الاستدلال.

NoPE: قمنا بتنفيذ NoPE من "RoPE إلى NoRoPE والعودة مرة أخرى: استراتيجية انتباه هجينة جديدة" (Yang et al.، 2025)، من خلال إزالة التضمينات الموضعية الدوارة من كل طبقة رابعة. يحسن هذا النهج أداء السياق الطويل دون التأثير على قدرات السياق القصير، كما أكدت تجاربنا.

تغطية الوثائق الداخلية: بناءً على "تحليل تأثير تكوين التسلسل على تدريب نماذج اللغة"، نستخدم خلال التدريب تقنية حجب الانتباه لضمان عدم تفاعل الرموز من مستندات مختلفة في نفس تسلسل التدريب مع بعضها البعض. يشبه ذلك ما تم استخدامه في Llama 3، مما يساعد على تسريع التدريب على السياقات الطويلة بشكل أكثر استقرارًا مع الحفاظ على أداء جيد في السياقات القصيرة.

استقرار التدريب: بناءً على OLMo 2، قمنا بإزالة تآكل الوزن من طبقات التضمين لتحسين استقرار التدريب. ساهم هذا التعديل في ديناميكيات تدريب أكثر استقرارًا، حيث استقرت معايير التضمين بشكل طبيعي عند قيم أكثر صحة خلال التدريب دون التأثير على الأداء العام في تجاربنا.

تم التحقق من جميع هذه التغييرات من خلال التجارب باستخدام نفس بنية 3B المدربة على 100B رموز من FineWeb-Edu، مما يضمن أن كل تعديل إما حسّن الأداء أو حافظ عليه مع تقديم فوائد أخرى.

تكوين التدريب: نستخدم حجم دفعة عالمي يبلغ 2.36M رموز مع طول تسلسل 4096، ومعدل تعلم يبلغ 2e-4، ومُحسّن AdamW (بيتا1: 0.9، بيتا2: 0.95) مع تآكل وزن قدره 0.1 وتقليم تدرج قدره 1. نستخدم جدولة WSD (التسخين - الاستقرار - التآكل)، مع 2000 خطوة تسخين، وتآكل خطي إلى 0 في آخر 10% من خطوات التدريب. استخدمنا إطار عمل nanotron للتدريب، وdatatrove لمعالجة البيانات، وlighteval للتقييم. تم تدريب النموذج على 384 وحدة معالجة رسومية من نوع H100 لمدة 24 يومًا. يمكنك رؤية إعداد التدريب الموزع في الشكل التالي.


بالإضافة إلى تغييرات البنية، قمنا أيضًا بتحسين وصفة التدريب. دعونا نلقي نظرة أقرب.

خليط البيانات ومراحل التدريب

استنادًا إلى نهج SmolLM2 متعدد المراحل، نقوم بتدريب SmolLM3 على 11.2T رموز باستخدام استراتيجية تدريب من ثلاث مراحل تمزج بين بيانات الويب والرياضيات والبرمجة بنسب متطورة. أجرينا تجارب واسعة على نماذج 3B المدربة على 50B إلى 100B رموز لتحديد خليط البيانات والنسب.


يتكون التدريب المسبق من هذه المراحل، كما هو موضح في الشكل أعلاه:

  • المرحلة 1: المرحلة المستقرة (0T → 8T رموز) تؤسس هذه المرحلة الأساسية قدرات عامة قوية مع خليط بياناتنا الأساسي:
    • الويب: 85% (12% متعدد اللغات) - FineWeb-Edu، DCLM، FineWeb2 وFineWeb2-HQ
    • البرمجة: 12% - The Stack v2 (16 لغة برمجة)، طلبات StarCoder2، دفاتر Jupyter وKaggle، مشاكل GitHub، وStackExchange.
    • الرياضيات: 3% - FineMath3+ وInfiWebMath3+
    • المرحلة 2: المرحلة المستقرة (8T → 10T رموز) نقدم مجموعات بيانات رياضية وبرمجية عالية الجودة مع الحفاظ على تغطية جيدة للويب:
      • الويب: 75% (12% متعدد اللغات)
      • البرمجة: 15% - إضافة Stack-Edu
      • الرياضيات: 10% - تقديم FineMath4+، InfiWebMath4+، وMegaMath (بما في ذلك Qwen Q&A، إعادة كتابة Pro الاصطناعية، وكتل النص والرمز المتداخلة)
      • المرحلة 3: مرحلة التآكل (10T → 11.1T رموز) المرحلة النهائية تزيد من بيانات الرياضيات والبرمجة:
        • الويب: 63% (12% متعدد اللغات)
        • البرمجة: 24% - زيادة بيانات البرمجة عالية الجودة
        • الرياضيات: 13% - زيادة بيانات الرياضيات وتقديم مجموعات بيانات التعليم والتفكير مثل OpenMathReasoning

        مع هذه المراحل والخليط، حققنا أداءً تنافسياً للغاية للنموذج الأساسي. المزيد عن ذلك في قسم التقييم. يمكن العثور على تكوينات تدريب nanotron مع أوزان البيانات الدقيقة هنا. سنشارك أيضًا سجلات تدريبنا جنبًا إلى جنب مع نقاط التحقق الوسيطة.

        بعد التدريب المسبق الرئيسي، قمنا بتحسين النموذج في مرحلة تدريب وسطى لتحسين السياق الطويل والتفكير.

        التدريب الوسيط

        نطلق على تكييف السياق الطويل وتكييف التفكير "التدريب الوسيط". هما أقصر بكثير من التدريب المسبق الرئيسي ولكنهما لا يزالان عامًا إلى حد ما ويهدفان إلى تحسين النموذج في هذين المجالين. دعونا نلقي نظرة أولاً على تدريب السياق الطويل.

        تمديد السياق الطويل


        بعد التدريب المسبق الرئيسي، قمنا بتدريب SmolLM3 على 100B رموز إضافية لتمديد طول السياق. قمنا بتمديد نافذة السياق بشكل متتابع على مرحلتين لكل منهما 50B رموز: أولاً الانتقال من 4k إلى 32k سياق مع زيادة RoPE theta إلى 1.5M، ثم من 32k إلى 64k سياق مع زيادة RoPE theta إلى 5M. زادت كلا المرحلتين من بيانات الرياضيات والبرمجة والتفكير. خلال التجارب، وجدنا أن زيادة بيانات السياق الطويل المحددة مثل مستودعات البرمجة، والكتب، وصفحات الويب الطويلة (تتجاوز العينات الطويلة بشكل طبيعي في خليطنا) لم تعزز الأداء بشكل أكبر على معايير RULER وHELMET. كان استخدام NoPE والتدريب على خليط التآكل مع تسلسلات أطول وزيادة قيم RoPE theta كافياً لتحقيق أداء تنافسي في السياق الطويل يصل إلى 64k.

        استنادًا إلى Qwen2.5، نستخدم YARN لاستقراء ما وراء طول سياق التدريب. خلال الاستدلال، يمكن للنموذج التعامل مع سياق يصل إلى 128k (تمديد 2x يتجاوز طول التدريب 64k).

        التدريب الوسيط للتفكير

        بعد تمديد طول سياق النموذج، قمنا بتدريبه في مرحلة تدريب وسطى لتضمين قدرات التفكير. الفرق الرئيسي بين مرحلة التدريب الوسيط ومرحلتَي التدريب السابقة واللاحقة هو أننا استهدفنا قدرة عامة دون التركيز بعد على مجال معين. في حالتنا، أردنا تدريب النموذج على التفكير دون استهداف مجال معين، مثل الرياضيات أو البرمجة.

        تضمن مجموعة بيانات التدريب الوسيط لدينا 35B رموز مستمدة من Open Thought’s OpenThoughts3-1.2M ومجموعة فرعية من مجموعة بيانات NVIDIA’s Llama-Nemotron-Post-Training-Dataset-v1.1 مع آثار التفكير من R1. استخدمنا قالب دردشة ChatML وعبوات التعبئة لتجنب تقديم هيكل مفرط للنموذج. قمنا بتدريب النموذج لمدة 4 (~140B رموز) دورات واستخدمنا نقطة التحقق للمرحلة التالية من SFT.

        ما بعد التدريب

        أظهرت إطلاق نماذج التفكير مثل DeepSeek R1 وQwen3 القدرات القوية التي تظهر عندما يمكن للنماذج الانخراط في التفكير الصريح. ومع ذلك، لا تزال المجتمع يفتقر إلى وصفات مفتوحة بالكامل مع مجموعات بيانات عامة لبناء نماذج تعليم مزدوجة تدعم كل من أوضاع التفكير وغير التفكير. تتضمن معظم الأساليب الحالية عمليات تعلم تعزيزية معقدة ومجموعات بيانات ملكية، مما يجعل من الصعب على الباحثين إعادة إنتاج هذه النتائج والبناء عليها.

        في هذا القسم، نشرح كيف تعاملنا مع هذه التحديات ونشارك وصفتنا الكاملة لبناء نموذج تعليم مزدوج. نفصل كيف نوازن الأداء بين أوضاع التفكير وغير التفكير من خلال خط أنابيب تدريب مصمم بعناية يتضمن التدريب الوسيط لقدرات التفكير العامة، والتدريب الدقيق الخاضع للإشراف مع توليد بيانات اصطناعية، والمحاذاة باستخدام تحسين التفضيل المربوط (APO) - وهو نوع حديث من DPO.


        بناء قالب الدردشة

        قبل الغوص في منهجية التدريب، من الضروري تحديد كيفية تفاعل المستخدمين مع نموذجنا ثنائي الوضع. يعمل قالب الدردشة كواجهة تتيح التبديل السلس بين أوضاع التفكير وغير التفكير، وتصميمه يؤثر بشكل مباشر على كل من تنسيق بيانات التدريب وسلوك النموذج. يسمح قالب الدردشة في SmolLM3 للمستخدمين بالتحكم في وضع التفكير أثناء المحادثة. يمكن للمستخدمين تفعيل أوضاع التفكير أو غير التفكير من خلال تضمين العلامات /think و/no_think، على التوالي، في موجه النظام. في وضع عدم التفكير، نقوم بملء استجابة النموذج مسبقًا بكتل تفكير فارغة، مشابهة لـ Qwen3، لضمان إجابات مباشرة دون تفكير صريح.

        يدعم SmolLM3 استدعاء الأدوات، ويتضمن قالب الدردشة قسمين متميزين لوصف الأدوات: أدوات XML وأدوات Python. أثبتت هذه التصنيف المحدد فائدته في تجاربنا لتفسير النموذج بدقة لتعريفات الأدوات في كل تنسيق.

        يوفر قالب الدردشة رسالة نظام افتراضية لكلا وضعي التفكير، بالإضافة إلى قسم بيانات التعريف الذي يتضمن التاريخ، وتاريخ قطع المعرفة، ووضع التفكير الحالي. يمكن للمستخدمين استبدال رسالة النظام الافتراضية عن طريق تقديم واحدة مع دور system. يمكن استبعاد قسم بيانات التعريف باستخدام العلامة /system_override في موجه النظام، مما يوفر مرونة لحالات الاستخدام المحددة.

        التدريب الدقيق الخاضع للإشراف

        بعد مرحلة التدريب الوسيط للتفكير، حيث قمنا بتدريب النموذج على 140B رموز من بيانات التفكير العامة، ننتقل إلى التدريب الدقيق الخاضع للإشراف (SFT) لتضمين القدرات عبر كل من أوضاع التفكير وغير التفكير للرياضيات، والبرمجة، والتفكير العام، واتباع التعليمات، ومتعدد اللغات، واستدعاء الأدوات. يتطلب تدريب نموذج ثنائي الوضع موازنة دقيقة لخليط البيانات للحفاظ على أداء قوي في كلا الوضعين عبر جميع المجالات المستهدفة. لتقييم أداء SmolLM3 طوال فترة التدريب، تتبعنا المجالات التالية: الرياضيات، والبرمجة، والتفكير العام، واتباع التعليمات، ومتعدد اللغات.

        كانت التحدي الرئيسي الذي واجهناه عند بناء مجموعة بيانات وضع التفكير هو ندرة مجموعات البيانات التي تحتوي على آثار التفكير لبعض المجالات. لمعالجة هذه الفجوة، قمنا بتوليد بيانات اصطناعية من خلال توجيه Qwen3-32B في وضع التفكير مع توجيهات من مجموعات بيانات غير التفكير الموجودة. سمح لنا ذلك بتحسين الأداء في المجالات التي كان النموذج يعاني فيها في وضع التفكير، مثل المحادثات متعددة الأدوار، ومتعدد اللغات، والمحادثات اليومية.


        كان خليط بياناتنا النهائي نتيجة لتجارب واسعة تفحص النسبة المثلى من الرموز في وضع التفكير إلى الرموز في وضع عدم التفكير والتكوين داخل كل وضع. تحتوي مجموعة بيانات SFT الناتجة على 1.8B رموز: 1B في وضع عدم التفكير و0.8B في وضع التفكير، وتتكون من 12 مجموعة بيانات غير تفكير و10 مجموعات بيانات مع آثار التفكير. قمنا بالتدريب لمدة 4 دورات (~8B رموز) باستخدام تعبئة BFD (الأفضل تناسبًا) مع إخفاء الخسارة على أدوار المستخدم والنتائج من استدعاءات الأدوات.

        سنقوم بإصدار هذا الخليط من البيانات جنبًا إلى جنب مع نصوص تدريبنا الكاملة لتمكين المجتمع من إعادة إنتاج وبناء على عملنا.

        محاذاة النموذج خارج السياسة باستخدام تحسين التفضيل المربوط (APO)

        بعد خطوة SFT، قمنا بإجراء جولة من محاذاة النموذج باستخدام مجموعة بيانات تفضيل Tulu3 لوضع عدم التفكير ومجموعات تفضيل اصطناعية جديدة لوضع التفكير، التي قمنا بتوليدها من Qwen3-32B وQwen3-0.6B. لضمان تغطية كاملة لجميع المجالات في مجموعة بيانات عدم التفكير، قمنا بتوليد أزواج تفضيل وضع التفكير المكمّلة. اخترنا الأجيال من Qwen3-32B كـ "مُختار" والردود من Qwen3-0.6B كـ "مرفوض" من أجل المحاذاة باستخدام تحسين التفضيل المربوط.


        تحسين التفضيل المربوط (APO) هو نوع من تحسين التفضيل المباشر (DPO) الذي يوفر هدف تحسين أكثر استقرارًا. في DPO، تقيس دالة المكافأة r_θ(x,y) نسبة اللوغاريتم للاحتمالية التسلسلية خلال التدريب مقارنة بالنموذج في بداية التدريب، النموذج المرجعي:


        هنا β يتحكم في مقدار التغيير الذي يمكن أن يحدث للنموذج الذي يتم تحسينه بالنسبة للنموذج المرجعي. تعمل خسارة DPO على تحسين ثلاثيات من التوجيهات x، المختار y_w والردود المرفوضة y_l:


        أظهر هدف APO أنه أكثر استقرارًا، كما لاحظنا أيضًا أداءً أعلى في المهام اللاحقة في تجاربنا الداخلية.


        بينما أظهرت التقييمات اللاحقة تحسينات عبر الرياضيات، والعلوم، واتباع التعليمات، والترميز، والدردشة، والمهام متعددة اللغات، لاحظنا تدهور الأداء في معايير السياق الطويل مثل RULER. تتبعنا هذا التدهور إلى مرحلة التدريب الوسيط للتفكير، حيث أثر التركيز على قدرات التفكير على أداء السياق الطويل. بالإضافة إلى ذلك، كانت بيانات تدريب APO محدودة بـ 24k رموز حيث كانت الغالبية العظمى من مجموعة بيانات التفكير لدينا تقع تحت هذا الطول.

        للتخفيف من هذا الانخفاض في الأداء، استكشفنا دمج النماذج كحل.

        دمج النماذج

        دمج النماذج هو تقنية شائعة وقوية تسمح بدمج نقاط القوة لنماذج مختلفة دون الحاجة إلى عبء حسابي إضافي أو الحاجة إلى تدريب إضافي. استخدمنا مكتبة MergeKit لأداء دمج النماذج، حيث تتضمن عدة طرق للدمج، بما في ذلك الدمج الخطي وغير الخطي.

        تتكون وصفتنا للدمج من خطوتين:

        1. أخذ كل نقطة تحقق APO وإنشاء "حساء" نموذج.
        2. دمج حساء النموذج مع نقطة تحقق تدريب وسطى تتمتع بأداء قوي في المحتوى الطويل. حقق الدمج الخطي بأوزان 0.9 و0.1 لنموذج APO وحساء نقطة التحقق التدريبية الوسطى، على التوالي، أفضل أداء. تمكنا من استعادة درجة RULER للنموذج الأساسي على سياقات تصل إلى 128k رموز.

        النموذج الناتج هو نقطة التحقق التي نطلقها اليوم. يحافظ على الأداء عبر مجموعة واسعة من المهام. لذا دعونا ننتقل إلى نتيجة التقييم لكل من هذا النموذج وكذلك النموذج الأساسي.

        التقييم

        نقوم بتقييم النماذج الأساسية ونموذج التعليم في كل من وضع التفكير ووضع عدم التفكير. دعونا نغطي أولاً أداء النموذج الأساسي!

        النموذج الأساسي

        يوضح الرسم البياني أدناه معدل فوز SmolLM3 عبر 12 معيارًا شائعًا تقييم المعرفة، والتفكير، والرياضيات، والقدرات البرمجية. يتفوق SmolLM3 باستمرار على النماذج الأخرى ذات 3B ويحقق أداءً تنافسياً مع نماذج أكبر ذات 4B بما في ذلك Qwen3-4B وGemma3-4B.

        معايير التقييم المستخدمة لمعدل الفوز تشمل: HellaSwag، ARC، Winogrande، CommonsenseQA، MMLU-CF، MMLU Pro CF، PIQA، OpenBookQA، GSM8K، MATH، HumanEval+، MBPP+


        يحقق SmolLM3 المركز الأول أو الثاني في معايير المعرفة والتفكير (HellaSwag، ARC، BoolQ)، مما يُظهر أداءً قويًا في هذه القدرات الأساسية. أداء النموذج في الرياضيات والترميز تنافسي ضمن فئة 3B. كما يظهر الأداء في السياقات الطويلة على Ruler 64k أن النموذج قادر على التعامل مع تسلسلات ممتدة بشكل فعال.


        يظهر النموذج أداءً قويًا متعدد اللغات عبر خمس لغات أوروبية رئيسية عند تقييمه على معايير متعددة اللغات بما في ذلك Global MMLU، MLMM HellaSwag، Flores-200، Belebele، حيث يتم اختبار المعرفة، والتفكير العام، وفهم النص، والترجمة. وهذا يُظهر أن SmolLM3 يحافظ على أداء متسق يتجاوز اللغة الإنجليزية.


        باختصار، يُظهر النموذج الأساسي أداءً قويًا جدًا عبر العديد من المجالات. دعونا نرى كيف يترجم ذلك إلى أداء نموذج التعليمات.

        نموذج التعليمات / التفكير المزدوج

        نظرًا لأن SmolLM3 يمتلك وضع التعليمات ووضع التفكير، نحتاج إلى تقييم النموذج في كلا الوضعين ومقارنته بالنماذج ذات القدرات المماثلة.

        تقييم التفكير غير الممتد

        نقوم بتقييم SmolLM3 مقابل نماذج 3B غير التفكير ومقارنته بنماذج Qwen3 في وضع عدم التفكير عبر عدة معايير. كما هو موضح في مخطط الأداء، يتفوق SmolLM3 على نماذج 3B غير التفكير الأخرى بما في ذلك Llama3.2 3B Instruct وQwen2.5 3B Instruct، ويقع في نقطة كفاءة جيدة بين نماذج التفكير، متفوقًا بشكل كبير على Qwen3 1.7B بينما يقترب من أداء نموذج 4B بتكلفة حسابية أقل.


        لذا، فإن نموذج التعليمات يقع في المقدمة من حيث الأداء والتكلفة. دعونا نرى كيف يعمل نموذج التفكير!

        تقييم التفكير الممتد

        عند تقييم قدرات التفكير في SmolLM3 مع تفعيل التفكير الممتد، يظهر النموذج تحسنًا كبيرًا عبر معظم المعايير مقارنة بنظيره غير التفكير. نلاحظ مكاسب ملحوظة في المهام الصعبة مثل AIME 2025 (36.7% مقابل 9.3%)، والبرمجة التنافسية على LiveCodeBench (30.0% مقابل 15.2%)، والتفكير على مستوى الدراسات العليا في GPQA Diamond (41.7% مقابل 35.7%).

        بينما يحقق Qwen3 4B عمومًا أعلى الدرجات عبر كل من وضعي التفكير وعدم التفكير، يُظهر SmolLM3 أداءً تنافسيًا ضمن فئة 3B، مع تميز خاص في التفكير الرياضي ومهام حل المشكلات المعقدة. تتيح قدرة النموذج على العمل في وضعين للمستخدمين اختيار بين استنتاج أسرع بدون تفكير أو تحليل أكثر شمولاً مع التفكير الممتد.


        لذا، السؤال الأخير هو: كيف يمكنك استخدام النموذج؟

        كيفية التشغيل محليًا

        كود النموذج لـ SmolLM3 متاح في transformers v4.53.0، لذا تأكد من تحديث إصدار transformers لديك. يمكنك أيضًا تحميل النموذج مع أحدث vllm الذي يستخدم transformers كخلفية.

        pip install -U transformers

        from transformers import AutoModelForCausalLM, AutoTokenizer model_name = "HuggingFaceTB/SmolLM3-3B" device = "cuda" # لاستخدام GPU أو "cpu" لاستخدام وحدة المعالجة المركزية # تحميل المحول والنموذج tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained( model_name, ).to(device) # إعداد مدخلات النموذج prompt = "أعطني شرحًا موجزًا للجاذبية بعبارات بسيطة." messages_think = [ {"role": "user", "content": prompt} ] text = tokenizer.apply_chat_template( messages_think, tokenize=False, add_generation_prompt=True, ) model_inputs = tokenizer([text], return_tensors="pt").to(model.device) # توليد المخرجات generated_ids = model.generate(**model_inputs, max_new_tokens=32768) # الحصول على وفك تشفير المخرجات output_ids = generated_ids[0][len(model_inputs.input_ids[0]) :] print(tokenizer.decode(output_ids, skip_special_tokens=True)) 

        نوصي بتعيين temperature=0.6 و top_p=0.95 في معلمات العينة.

        تفعيل وتعطيل وضع التفكير الممتد

        نقوم بتفعيل التفكير الممتد بشكل افتراضي، لذا فإن المثال أعلاه يولد المخرجات مع تتبع التفكير. لاختيار بين التفعيل، يمكنك توفير العلامات /think و /no_think من خلال موجه النظام كما هو موضح في الشيفرة أدناه لتعطيل التفكير الممتد. سيكون كود توليد الاستجابة مع التفكير الممتد هو نفسه باستثناء أن موجه النظام يجب أن يحتوي على /think بدلاً من /no_think.

        prompt = "أعطني شرحًا موجزًا للجاذبية بعبارات بسيطة." messages = [ {"role": "system", "content": "/no_think"}, {"role": "user", "content": prompt} ] text = tokenizer.apply_chat_template( messages, tokenize=False, add_generation_prompt=True, ) 

        الاستخدام الوكلي

        يدعم SmolLM3 استدعاء الأدوات! فقط مرر قائمة الأدوات الخاصة بك تحت الوسيطة xml_tools (للاستدعاء القياسي للأدوات)، أو python_tools (لاستدعاء أدوات مثل دوال بايثون في شيفرة <code> ).

        from transformers import AutoModelForCausalLM, AutoTokenizer checkpoint = "HuggingFaceTB/SmolLM3-3B" tokenizer = AutoTokenizer.from_pretrained(checkpoint) model = AutoModelForCausalLM.from_pretrained(checkpoint) tools = [ { "name": "get_weather", "description": "احصل على الطقس في مدينة", "parameters": {"type": "object", "properties": {"city": {"type": "string", "description": "المدينة التي تريد الحصول على الطقس لها"}}}} ] messages = [ { "role": "user", "content": "مرحبًا! كيف هو الطقس اليوم في كوبنهاغن؟" } ] inputs = tokenizer.apply_chat_template( messages, enable_thinking=False, # صحيح، يمكنك الاختيار! xml_tools=tools, add_generation_prompt=True, tokenize=True, return_tensors="pt" ) outputs = model.generate(inputs) print(tokenizer.decode(outputs[0])) 

        الخاتمة

        نقدم SmolLM3، وهو نموذج صغير، طويل السياق، متعدد اللغات، ومفكر بقدرة تصل إلى 128k سياق. بالإضافة إلى نقطة تفتيش النموذج، نقدم وصفة التدريب الكاملة بما في ذلك التدريب المسبق، والتدريب المتوسط، والتدريب اللاحق، وتوليد البيانات الاصطناعية، بالإضافة إلى مجموعات البيانات (ستكون متاحة قريبًا). نأمل أن يكون هذا النموذج مفيدًا للمجتمع وأن تسمح الوصفة لمجموعات أخرى بتحسينه.

        الموارد

        • مجموعة النماذج مع نقاط تفتيش مضغوطة: الرابط
        • مستودع SmolLM على GitHub مع تكوينات التدريب المسبق وكود التقييم: https://github.com/huggingface/smollm
        • منظمتنا على HuggingFace: https://huggingface.co/HuggingFaceTB

        الاقتباس

        @misc{bakouch2025smollm3, title={{SmolLM3: smol, multilingual, long-context reasoner}}, author={Bakouch, Elie and Ben Allal, Loubna and Lozhkov, Anton and Tazi, Nouamane and Tunstall, Lewis and Patiño, Carlos Miguel and Beeching, Edward and Roucher, Aymeric and Reedi, Aksel Joonas and Gallouédec, Quentin and Rasul, Kashif and Habib, Nathan and Fourrier, Clémentine and Kydlicek, Hynek and Penedo, Guilherme and Larcher, Hugo and Morlon, Mathieu and Srivastav, Vaibhav and Lochner, Joshua and Nguyen, Xuan-Son and Raffel, Colin and von Werra, Leandro and Wolf, Thomas}, year={2025}, howpublished={\url{https://huggingface.co/blog/smollm3}} }

        مقالات أخرى من مدونتنا

        llmnlpcommunity

        mmBERT: ModernBERT goes Multilingual

        • +2