NETBYTE
ابدأ مشروعًا

بحث

Helix، الجزء 1: ندرّب نموذجًا لغويًا أوروبيًا

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

بقلم Marcus Weitschat 8 دقائق للقراءة

مصفوفة نقاط تبيّن ما يمكن لكل رمز في Helix أن ينتبه إليه: شريط أزرق للنافذة المحلية، ونقاط صفراء لكتلته الخاصة، ونقاط برتقالية متناثرة للاستدعاء عبر المسافات الطويلة.

لماذا يدرّب استوديو ألعاب نموذجًا لغويًا

تصنع NETBYTE ألعابًا وتطبيقات ومواقع ويب. وتزداد النماذج اللغوية حضورًا داخل هذه المنتجات: شخصيات تردّ، ومساعدة تفهم السؤال، وأدوات تنجز شيئًا. معظم النماذج المفتوحة تفكر بالإنجليزية أولًا، وتأتي الإستونية أو الأيرلندية أو المالطية في الهامش. أردنا أن نفهم السلسلة كلها بأنفسنا – البيانات والمُرمِّز والبنية والتدريب – وأن نعرف أين يذهب المال فعلًا.

مُعامِل
320 مليون
لغة رسمية في الاتحاد الأوروبي
24
رمز تدريب
6.5 مليار
لوحدات GPU المستأجرة
≈ 12 دولارًا

بدأ Helix نموذجًا أوليًا للبحث. كل ما يلي قرار شكّله، وكل قرار مدعوم بقياس – ومعه الأخطاء التي كلّفتنا أكثر وقت.

أربع أفكار، وواحدة صمدت

استهدف النموذج الأولي أربع نقاط ضعف معروفة في مولّدات النصوص الحالية. فهو يكتب في كتل من 16 رمزًا بدلًا من رمز واحد في كل مرة، ويمكنه المرور على نواة مشتركة من الطبقات عدة مرات، ويتنبأ لكل كتلة بـ«خطة» مدمجة، ويمزج انتباهًا محليًا رخيصًا مع انتباه خطي للمسافات الطويلة.

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

الشكل 1 الاستدعاء عبر المسافات الطويلة نسبة الإجابات الصحيحة في مهمة استدعاء يقع دليلها خارج النافذة المحلية. نموذج مرجعي صغير، والميزانية نفسها لكل صيغة.
  1. النافذة المحلية فقط 23.1‎%‎
  2. + انتباه خطي وخطة وحلقات 23.1‎%‎
  3. + رأسان عامّان دقيقان 49.4‎%‎
  4. انتباه كامل (للمقارنة) 49.0‎%‎
عرض البيانات
الصيغةصحيح
النافذة المحلية فقط23.1‎%‎
+ انتباه خطي وخطة وحلقات23.1‎%‎
+ رأسان عامّان دقيقان49.4‎%‎
انتباه كامل (للمقارنة)49.0‎%‎
الصدفة (25%)25.0‎%‎

لم يحلّها إلا الانتباه الدقيق عبر المسافة كلها. بقي الانتباه الخطي والخطة والحلقات عند مستوى الصدفة، بل إن المُحسِّن خفّض الذاكرة الخطية إلى عمر نصف أقل من رمز واحد. وكفى رأسان عامّان دقيقان لمجاراة الانتباه الكامل.

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

الشكل 2 إلامَ تنظر كل طبقة عشرة رؤوس انتباه لكل طبقة، واثنتا عشرة طبقة. لكل طبقة ثمانية رؤوس محلية؛ وتضيف الطبقات الفردية رأسين عامّين دقيقين، والزوجية رأسين للانتباه الخطي ذي البوابة.
  • محلي، نافذة من 256 رمزًا
  • انتباه عام دقيق
  • انتباه خطي ذو بوابة
عرض البيانات
نوع الرأسالطبقاتالرؤوس لكل طبقة
محلي، نافذة من 256 رمزًا1–128
انتباه عام دقيق1, 3, 5, 7, 9, 112
انتباه خطي ذو بوابة2, 4, 6, 8, 10, 122

قِس ولا تفترض

اختبرنا كل حيلة تدريب على نموذج من 94 مليون مُعامِل بالميزانية نفسها لكل تشغيل: 29.5 مليون رمز، والبذرة نفسها، وترتيب البيانات نفسه. يختلف تشغيلان للإعداد نفسه بمقدار ±0.03، فكل ما هو أصغر من ذلك ضجيج.

الشكل 3 ما الذي ساعد – وما الذي كان ضجيجًا التغير في خسارة التحقق مقارنة بخط الأساس مع AdamW. نموذج من 94 مليون مُعامِل، و29.5 مليون رمز لكل تشغيل. ما دون الصفر أفضل؛ والشريط الرمادي هو الضجيج بين التشغيلات (±0.03).
  1. Muon + جدول WSD ‎-0.587
  2. مُحسِّن Muon ‎-0.347
  3. شبكة أعمق وأنحف ‎-0.099
  4. جدول WSD ‎-0.080
  5. بقايا القيم ‎-0.007
  6. z-loss ‎+0.029
  7. انتباه بالاستعلامات المجمّعة ‎+0.088
عرض البيانات
التغييرΔ الخسارة (نات)
Muon + جدول WSD‎-0.587
مُحسِّن Muon‎-0.347
شبكة أعمق وأنحف‎-0.099
جدول WSD‎-0.080
بقايا القيم‎-0.007
z-loss‎+0.029
انتباه بالاستعلامات المجمّعة‎+0.088

كان مُحسِّن Muon الرافعة الكبيرة الوحيدة، ويتكامل مع جدول لمعدل التعلّم من نوع warmup-stable-decay. وإعادة طبقة التضمين وطبقة الإخراج إلى AdamW، كما يوصي مؤلفو Muon، أضافت 0.12 أخرى وجعلت التدريب أسرع بنسبة 5%. التركيبات لا تُجمع ببساطة: الشبكة الأعمق والأنحف ساعدت مع AdamW وأضرّت مع Muon. لهذا حصلت كل تركيبة واعدة على تشغيل خاص بها.

24 لغة و6.5 مليار رمز

يقرأ Helix نصوص الويب من FineWeb-Edu للإنجليزية ومن FineWeb-2 للغات الثلاث والعشرين الأخرى – وللغات الأكبر من العُشر الأعلى المُرشَّح حسب الجودة. وتكمل الشيفرة والرياضيات وتيار صغير من المحادثات الاصطناعية المزيج. تحصل الإنجليزية على الثلث. وتُوزن اللغات الأخرى بحسب كمية النصوص المتاحة، مع تنعيم يمنع غرق الأيرلندية والمالطية، ولا يتكرر أي مصدر أكثر من أربع مرات – فحتى هذا الحد يكون التكرار قريبًا من جودة البيانات الجديدة.

الشكل 4 ما الذي يقرؤه Helix حصة رموز التدريب لكل مجموعة مصادر. مدوّنة من 6.5 مليار رمز في 34 تيارًا؛ وتشمل الشيفرة ولغات الترميز Python وJavaScript وC وC++ وJava وHTML وCSS وMarkdown.
  1. 23 لغة أخرى في الاتحاد الأوروبي 51.6‎%‎
  2. الإنجليزية 33.0‎%‎
  3. الشيفرة ولغات الترميز 10.0‎%‎
  4. الرياضيات 3.0‎%‎
  5. محادثات وأدوات اصطناعية 2.4‎%‎
عرض البيانات
المصدرالحصة
23 لغة أخرى في الاتحاد الأوروبي51.6‎%‎
الإنجليزية33.0‎%‎
الشيفرة ولغات الترميز10.0‎%‎
الرياضيات3.0‎%‎
محادثات وأدوات اصطناعية2.4‎%‎

تيار المحادثة استخلاصي: تُنسخ الإجابات من فقرات حقيقية، وتُحسب نتائج الأدوات بدل أن تُختلق. إنه يعلّم الصيغة لا المعرفة. المُرمِّز هو BPE على مستوى البايت بـ64,000 مدخل، ويضع بين 3.3 و4 بايتات من النص في رمز واحد لكل لغة تُكتب بالحروف اللاتينية.

ثلاثة أخطاء تستحق أن تُروى

  • النموذج الذي قرأ الإجابة. في أحد مسارات الشيفرة تجاهلت الرؤوس العامة القناع السببي وصار بإمكانها رؤية الرموز المستقبلية. هبطت الخسارة من 6.85 إلى 1.71 في 75 خطوة، وذهب تشغيل استمر 16 ساعة سدى. الخسارة الجيدة على نحو مريب تقرير عن خطأ، واختبار انحدار يحرس هذه الحالة تحديدًا الآن.
  • الأحرف ليست بايتات. كان الضغط يُحسب بالأحرف بدل بايتات UTF-8. اختلق ذلك «ضعفًا» في الصينية وجعل اليونانية والبلغارية تبدوان أسوأ بنحو الضعف مما هما عليه.
  • مستندات مقطوعة عند كل سطر فارغ. كان المُشفِّر يفصل المستندات عند كل سطر فارغ – والأسطر الفارغة موجودة في منتصف كل ملف شيفرة تقريبًا. ضاع ما يصل إلى 35% من نصوص الشيفرة والرياضيات. أصلحنا الفاصل وأعدنا بناء المدوّنة كلها في 31 أكتوبر، واستغرق ذلك ساعتين و12 دقيقة.

من المكتب إلى جهاز مستأجر

جرى أول 1.66 مليار رمز على بطاقة AMD Radeon RX 7800 XT واحدة. أمران جعلا ذلك ممكنًا: خيار في نواة الانتباه يكون معطّلًا افتراضيًا – ومن دونه كان الانتباه أبطأ 12 مرة – وتجميع كل طبقة باستخدام torch.compile. وبوسيط 11,800 رمز في الثانية كان الباقي سيستغرق قرابة خمسة أيام أخرى.

فكتبنا طيارًا آليًا. يستأجر وحدات GPU على Vast.ai، ويرفع الشيفرة والمدوّنة ونقطة الحفظ، ويدرّب، ويعيد نقطة حفظ إلى البيت كل ثلاث ساعات، ويتوقف قبل نفاد الرصيد. في 2 نوفمبر مرّ بثلاثة أجهزة لم يشغّلها مزوّدوها قط، ثم استقر على بطاقتي RTX 4070 Ti Super في ألمانيا مقابل 0.363 دولار في الساعة. استغرق رفع 15.4 GiB أربعين دقيقة.

الشكل 5 سرعة التدريب الرموز في الثانية لنموذج 320 مليون مُعامِل بطول تسلسل 1,024 (الوسيط). محليًا: بطاقة AMD Radeon RX 7800 XT واحدة. مستأجر: بطاقتا NVIDIA RTX 4070 Ti Super.
  1. محلي، قبل التحسين 8,319
  2. محلي، بعد التجميع 11,830
  3. مستأجر، وحدتا GPU 41,367
عرض البيانات
الإعدادرمز/ثانية
محلي، قبل التحسين8,319
محلي، بعد التجميع11,830
مستأجر، وحدتا GPU41,367

41,400 رمز في الثانية تعادل 3.5 أضعاف المكتب. والجزء المستأجر – 4.8 مليار رمز في نحو 33 ساعة – يكلّف قرابة 12 دولارًا.

أين يقف Helix اليوم

الشكل 6 التدريب حتى الآن الخسارة بالنات لكل رمز، والأدنى أفضل. المحجوز: نص لا يتدرّب عليه النموذج أبدًا. التدريب: متوسط لكل 50 مليون رمز؛ وينخفض أسرع في مرحلة التبريد، جزئيًا لأن مزيج البيانات يتغير. ينتهي المحور عند 6.5 مليار رمز المخطط لها.
  • المحجوز
  • التدريب

الخسارة (نات لكل رمز)

الرموز المقروءة بالمليارات

عرض البيانات
الرموز المقروءة بالملياراتالمحجوزالتدريب
0.064.5714.261
0.553.7763.574
1.043.6943.469
1.543.5963.421
2.033.4263.238
2.523.3293.143
3.013.2913.113
3.503.2633.076
3.993.2253.079
4.493.2443.076
4.983.2183.036
5.353.1232.884

حتى 3 نوفمبر 2026 قرأ Helix ‏5.35 من أصل 6.5 مليار رمز. ومنذ 5.2 مليار دخل مرحلة التبريد: ينخفض معدل التعلّم ويتحوّل المزيج نحو الرياضيات والشيفرة والمحادثة. وعلى نصوص محجوزة من كل التيارات تبلغ خسارته 3.12 نات لكل رمز.

الشكل 7 أين تقف كل لغة البتات لكل بايت على نص محجوز بعد 5.35 مليار رمز، والأدنى أفضل. تبدو اليونانية والبلغارية أفضل جزئيًا لأن كل حرف فيهما يشغل بايتين.
  1. اليونانية 0.721
  2. البلغارية 0.844
  3. الفرنسية 1.065
  4. الإنجليزية 1.086
  5. الإسبانية 1.135
  6. البرتغالية 1.219
  7. الألمانية 1.257
  8. الهولندية 1.268
  9. الإيطالية 1.277
  10. البولندية 1.355
  11. الدانمركية 1.364
  12. الهنغارية 1.407
  13. السلوفاكية 1.412
  14. المالطية 1.415
  15. الرومانية 1.416
  16. السويدية 1.418
  17. الأيرلندية 1.422
  18. السلوفانية 1.431
  19. التشيكية 1.444
  20. الليتوانية 1.450
  21. اللاتفية 1.451
  22. الكرواتية 1.507
  23. الفنلندية 1.508
  24. الإستونية 1.727
عرض البيانات
اللغةبت لكل بايت
اليونانية0.721
البلغارية0.844
الفرنسية1.065
الإنجليزية1.086
الإسبانية1.135
البرتغالية1.219
الألمانية1.257
الهولندية1.268
الإيطالية1.277
البولندية1.355
الدانمركية1.364
الهنغارية1.407
السلوفاكية1.412
المالطية1.415
الرومانية1.416
السويدية1.418
الأيرلندية1.422
السلوفانية1.431
التشيكية1.444
الليتوانية1.450
اللاتفية1.451
الكرواتية1.507
الفنلندية1.508
الإستونية1.727

يظهر معنى ذلك عمليًا على أفضل وجه في عيّنة غير معدّلة من نقطة حفظ عند نحو 4.9 مليار رمز. البداية منّا، والباقي من Helix:

عيّنة بالإنجليزية، نقطة حفظ عند 4.9 مليار رمز، دون تعديل

بداية النص: The history of the printing press begins in the fifteenth century, when Johannes Gutenberg introduced movable type to Europe. Before that, books مخرجات النموذج: for printing were usually in the form of texts, usually in the format of illustrations. In its introduction to the printing press, Gutenberg uses one line-of-action model to illustrate a series of printed pieces of a book.

القواعد واختيار الكلمات والموضوع صامدة، أما الحقائق فلا. وهذا تقريبًا ما يمكن توقّعه من 320 مليون مُعامِل و6.5 مليار رمز: نموذج طليق يختلق الأشياء.

ما الخطوة التالية

ينتهي التدريب المسبق خلال ساعات قليلة. بعد ذلك تأتي مرحلة السياق الطويل بكتب من Project Gutenberg ونصوص قانونية أوروبية من EUR-Lex، ثم ضبط دقيق للمحادثة واستخدام الأدوات، ونموذج مسودة صغير يسرّع التوليد.

العودة إلى كل المقالات

الخطوة التالية

ماذا نصنع بعد ذلك؟

حدّثنا عن لعبتك أو تطبيقك أو موقعك أو مشروعك في الذكاء الاصطناعي. رسالة قصيرة تكفي للبدء.