على مدى السنوات القليلة الماضية، أدى توسيع نطاق نماذج اللغة الكثيفة إلى تحقيق معظم التقدم في ماجستير إدارة الأعمال. بدءًا من النماذج المبكرة مثل ULMFiT الأصلي (~30 مليون معلمة) أو GPT-2 (معلمات 1.5B، والتي كانت تعتبر في ذلك الوقت “خطيرة للغاية بحيث لا يمكن إصدارها” 🧌)، وفي النهاية إلى أنظمة اليوم التي تحتوي على مائة مليار معلمة، كانت الوصفة بسيطة:
المزيد من البيانات + المزيد من المعلمات يعطي أداء أفضل.
عززت قوانين القياس هذا الاتجاه، لكن القياس الكثيف له حدود عملية:
- ويصبح التدريب باهظ الثمن على نحو متزايد.
- الكمون الاستدلال ينمو.
- يتطلب النشر ذاكرة وأجهزة كبيرة.
هذا هو المكان الذي يدخل فيه خليط الخبراء (MoEs) إلى الصورة.
إذا كنت على دراية بـ MoEs بالفعل وترغب في الانتقال مباشرة إلى العمل الهندسي المنجز في المحولات، فيمكنك التوجه مباشرة إلى Transformers وMoEs.
من كثيفة إلى متفرقة: ما هي وزارة التربية والتعليم؟
يحافظ نموذج خليط من الخبراء على العمود الفقري للمحول، ولكنه يستبدل بعض طبقات التغذية الأمامية الكثيفة بمجموعة من خبراء. “الخبير” ليس وحدة متخصصة في الموضوع (على سبيل المثال، “خبير الرياضيات”، “خبير الكود”). إنها ببساطة شبكة فرعية قابلة للتعلم. لكل رمز، أ جهاز التوجيه يختار مجموعة فرعية صغيرة من الخبراء لمعالجتها.
تعمل الرموز المميزة المختلفة على تنشيط خبراء مختلفين، بناءً على تمثيلاتهم المخفية.
تعتمد سعة النموذج على إجمالي المعلمات، لكن سرعة الاستدلال تعتمد على المعلمات النشطة.
هذه هي الفكرة الرئيسية.
على سبيل المثال، خذ gpt-oss-20b. يحتوي على 21 مليار معلمة إجمالية، ولكنه يستخدم 4 خبراء نشطين لكل رمز، من إجمالي 32 خبيرًا. مع الأخذ في الاعتبار المكونات المشتركة بالإضافة إلى الخبراء النشطين، يستخدم هذا النموذج حوالي 3.6 مليار معلمة نشطة لكل رمز مميز. عند تشغيل هذا الطراز على جهاز M3 Ultra Mac، الذي يبلغ عرض النطاق الترددي للذاكرة حوالي 800 جيجابايت، يمكننا تقدير سرعة الإنشاء على النحو ~ 800 / (3.6 * 2) في bfloat16حيث تأخذ كل معلمة 2 بايت. هذا ينتج حوالي 111 رمزًا في الثانية. رقم الأداء الفعلي الذي حصلنا عليه هو ~115 tok/s، وهو قريب جدًا من الحساب التقريبي.
تؤكد هذه السرعة الفائقة أن النموذج يعمل تقريبًا كمعلمة 3.6B، ولكنه يتمتع بنفس السعة (أو الجودة) مثل نموذج المعلمة 21B.
(ملاحظة: ستكون السرعة أسرع إذا استخدمنا النواة لتكميم mxfp4 الأصلي الذي يستخدمه النموذج).
تعتبر وزارة التربية والتعليم جذابة للأسباب التالية:
-
كفاءة حسابية أفضل
ونظرًا لميزانية FLOP الثابتة للتدريب، غالبًا ما تتفوق وزارة التربية والتعليم على نظيراتها الكثيفة.
وهذا يعني تكرارًا أسرع وكفاءة توسيع أفضل.
-
محور التوازي الطبيعي
يقدم الخبراء حدودًا هيكلية في الرسم البياني الحسابي. نظرًا لأن الرموز المميزة المختلفة تشرك خبراء مختلفين، فيمكننا التوازي بين الخبراء (سنناقش هذا لاحقًا في توازي الخبراء).
-
اعتماد الصناعة
تشمل الإصدارات الرئيسية الأخيرة لوزارة التعليم للنماذج المفتوحة التي حدثت في الأسابيع القليلة الماضية Qwen 3.5، أو MiniMax M2، أو GLM-5، أو Kimi K2.5.
تسارع هذا الاتجاه بعد نجاح DeepSeek R1 في يناير 2025، بناءً على أنظمة سابقة مثل DeepSeek V2. ومن بين MoE المبكر الآخر كان Mixtral-8x7B، الذي تم إصداره في ديسمبر 2023.
الشكل 3: الجدول الزمني لمدة عامين لإضافة نموذج وزارة التربية والتعليم إلى transformersمكتبة. يمثل DeepSeek R1 نقطة انعطاف واضحة.تستخدم المختبرات المغلقة وزارة التعليم أيضًا. لقد كان ChatGPT منذ فترة طويلة يشاع لاستخدام بنية متفرقة، ومن المؤكد أن نماذج gpt-oss المفتوحة تفعل ذلك.
إذا كنت تريد معرفة المزيد عن وزارة التعليم بشكل عام، فإننا نقترح عليك بشدة قراءة هذه المدونة ومشاهدة مقطع الفيديو الأخير على YouTube حول التوجيه.
المحولات ووزارة التربية
معظم الأدوات في النظام البيئي، بما في ذلك تحميل النماذج، ووضع الأجهزة، والتكميم، والتنفيذ الخلفي تم تصميمها في الأصل من أجلها كثيفة نماذج. وتتحدى وزارة التربية والتعليم هذه الافتراضات.
جعل وزارة التربية والتعليم مواطنون من الدرجة الأولى في transformers يعني إعادة تصميم أجزاء من خط أنابيب التحميل، ونموذج التنفيذ، والتجريدات الموزعة، وليس فقط إضافة فئات نموذجية جديدة. سنركز على كيفية transformers تطورت المكتبة لدعم البنى المتفرقة عبر:
عامل إعادة تحميل الوزن
AutoModelForCausalLM.from_pretrained("model_id") يقوم بتنزيل وتحميل أوزان النماذج في نموذج PyTorch. بالنسبة للنماذج الكثيفة، يكون التحميل واضحًا نسبيًا حيث يقوم كل موتر في نقطة التفتيش بتعيين واحد لواحد لمعلمة في وحدة وقت التشغيل.
أما بالنسبة لوزارة التعليم، فالأمر أكثر تعقيدًا. في معظم نقاط التفتيش التابعة لوزارة التربية والتعليم، يتم إجراء تسلسل لكل خبير بشكل مستقل. إذا ألقيت نظرة خاطفة داخل فهرس نقطة تفتيش DeepSeek-V3، فسترى مفاتيح مثل:
model.layers.3.mlp.experts.0.gate_proj.weight
...
model.layers.3.mlp.experts.255.gate_proj.weight
كل خبير لديه مجموعته الخاصة من مصفوفات الوزن، وهي في الأساس 256 (من 0 إلى 255 إجمالاً، مع أخذ DeepSeek-V3 كمثال) وشبكات تغذية أمامية صغيرة محفوظة جنبًا إلى جنب. ومع ذلك، في وقت التشغيل، تقوم وحدات معالجة الرسومات بتنفيذ نواة محسنة. تم تصميم نواة وزارة التربية الحديثة مثل GEMMs المجمعة وتطبيقات وزارة التربية المدمجة للمعالجة جميع الخبراء في عملية واحدة، وليس عن طريق التكرار عليها واحدة تلو الأخرى.
للقيام بذلك بكفاءة، يحتاجون إلى تجميع أوزان احترافية في قطعة واحدة موتر متجاورة.
لذلك لدينا عدم تطابق:
- نقطة تفتيش: 256 موتر منفصل
- وقت التشغيل: 1 موتر معبأة
إن سد هذه الفجوة بشكل منهجي هو ما يتيحه عامل إعادة تحميل الوزن.
مع إدخال برنامج WeightConverter العام، تحول النموذج العقلي من:
تتطابق نقطة التفتيش بالفعل مع تخطيط وقت التشغيل الخاص بي؛ التحميل هو في الغالب نسخة مفتاح بمفتاح.
ل:
نقطة التفتيش هي مجرد مصدر متسلسل للموترات. التحميل هو أ خط أنابيب التحويل الذي يحولها إلى تخطيط وقت التشغيل الذي نريده.
تحميل الوزن الديناميكي مع WeightConverter
التجريد المركزي الذي قدمه هذا المعاد تصنيعه هو تحميل الوزن الديناميكي عبر أ WeightConverter.
WeightConverter يتيح لنا تحديد:
source key patterns → target key(s) + operations
العمليات البدائية (قطعة، سلسلة، وما إلى ذلك) قابلة للتركيب. اثنان مفيدان بشكل خاص لوزارة التربية والتعليم:
-
MergeModulelistيدمج قائمة من الموترات في موتر واحد. على سبيل المثال، يمكنك أن تؤلفMergeModulelistمعConcatenateلتكديس الخبراء في وزارة البيئة وتجميعهم في موتر واحد.WeightConverter( ["block_sparse_moe.experts.*.w1.weight", "block_sparse_moe.experts.*.w3.weight",], "mlp.experts.gate_up_proj", operations=[ MergeModulelist(dim=0), Concatenate(dim=1), ], ) -
SplitModulelistيقسم الموتر مرة أخرى إلى قائمة الموترات. على سبيل المثال، يمكنك تقسيم مجموعة من الخبراء مرة أخرى إلى خبراء فرديين.WeightConverter( "mlp.experts.down_proj", "block_sparse_moe.experts.*.w2.weight", operations=[SplitModulelist(dim=0)], )
تجسيد كسول لل Tensors
يتحسن refactor ليس فقط ماذا التحويلات موجودة، ولكن كيف لقد تمت جدولتهم.
يقوم المُحمل بمسح مفاتيح نقاط التفتيش مرة واحدة، ومطابقتها مع أنماط المحولات، وتجميع الموترات لكل محول. بمجرد تحديد المفتاح حسب الحاجة، يتم تسجيله كملف مستقبل وتتحقق عبر تجمع الخيوط. يتم تشغيل عمليات التحويل فقط عندما تصبح تبعياتها جاهزة. على سبيل المثال، MergeModulelist ينتظر حتى يتم تحميل جميع الخبراء للطبقة.
وهذا يتجنب عمليات الفحص المتكررة ويقلل من ذروة الذاكرة.
المعيار: تحسينات خطوط أنابيب تحميل الوزن
لتقييم التحسينات التي أدخلها خط أنابيب تحميل الوزن الجديد، قمنا بقياس إصدارات v4 مقابل v5 من transformers. وينصب التركيز على سرعة تحميل نماذج وزارة التعليم الكبيرة، والتي غالبًا ما تمثل عنق الزجاجة في التدريب والاستدلال.
لقد قمنا بمقارنة الإصدار 4 مقابل الإصدار 5 باستخدام:
مثال:
from transformers import AutoModelForCausalLM
model_id = "Qwen/Qwen1.5-110B-Chat"
model = AutoModelForCausalLM.from_pretrained(model_id)
اثنين من متغيرات البيئة ذات الصلة:
نتائج
نموذج: Qwen/Qwen1.5-110B-Chat
وحدة معالجة الرسومات: 1 × A100 (80 جيجابايت)
| إصدار | استراتيجية | وضع التحميل | وقت |
|---|---|---|---|
| v4.57.6 | device_map="auto" |
ثريدبول | 66.24 ثانية |
| v4.57.6 | device_map="auto" |
تسلسلي | 67.29 ثانية |
| v4.57.6 | TP | — | أوم |
| الإصدار 5 | device_map="auto" |
غير متزامن (افتراضي) | 20.71 ثانية |
| الإصدار 5 | device_map="auto" |
مزامنة | 45.3 ثانية |
| الإصدار 5 | TP | غير متزامن | 10.1 ثانية |
| الإصدار 5 | TP | مزامنة | 19.28 ثانية |
![]() |
|---|
| الشكل 4: تحميل المعايير (الإصدار 4 مقابل الإصدار 5) |
التسريع ليس مجرد “المزيد من المواضيع”.
انها مزيج من التوجيه بتمريرة واحدة, تجسيد غير متزامن، و جدولة التحويل المدركة والتي تعمل معًا على تجنب التجسيد غير الضروري وذروات الذاكرة مع تمكين التعبئة المتخصصة ودمج العرض في وقت التحميل.
حيث يناسب التكميم
باستخدام أداة إعادة البناء هذه، يمكننا الآن إنشاء بنية وحدة وقت التشغيل أولاً ثم تحويل الأوزان إلى البنية. يمكننا الآن ربط التكميم بشكل اختياري ضمن مسار التحويل، مما يجعل التكميم جزءًا من خط أنابيب تحميل الوزن نفسه. وهذا أمر بالغ الأهمية لأن القياس الكمي “لكل خبير” لا يكون منطقيًا إلا عندما يتواجد الخبراء في تخطيط مكتظ يمكن التنبؤ به.
لم يكن خط الأنابيب هذا ممكنًا في وقت سابق، والآن يتعلق الأمر بالمستخدمين كواجهة برمجة تطبيقات مكشوفة.
خلفية خبيرة
بمجرد تجميع الخبراء في موتر وقت تشغيل واحد، يظهر سؤال آخر:
كيف يمكنك فعلا توجيه من خلالهم بكفاءة؟
في نموذج خليط الخبراء، يتم توجيه كل رمز مميز إلى خبراء مختلفين. وهذا يعني أن وقت التشغيل يجب أن يرسل الرموز المميزة إلى أوزان الخبراء المحددة، وينفذ التوقعات بكفاءة، ويطبق أوزان التوجيه، ثم يجمع النتائج ويعيد ترتيبها.
هذا ما يعالجه نظام Experts Backend (المقدم في PR #42697). تقدم الواجهة الخلفية للخبراء أ بنية التنفيذ القابلة للتوصيل الذي يفصل حساب الخبراء عن تنفيذ النموذج. بدلاً من ترميز استراتيجية إرسال واحدة داخل كل نموذج لوزارة التعليم، يسمح النظام لطبقات الخبراء بتحديد الواجهة الخلفية ديناميكيًا في وقت التشغيل.
يتم تنفيذ ذلك عبر نمط الديكور:
@use_experts_implementation
يقوم مصمم الديكور بتغليف فئات الخبراء وإرسال العمليات الحسابية إلى الواجهة الخلفية المحددة تلقائيًا.
يتم حاليًا توفير ثلاث واجهات خلفية:
-
eagerوالذي يدور حول الخبراء المختارين ويطبق التوقعات لكل خبير. يتم استخدام هذا للإشارة إلى الصحة وتصحيح الأخطاء. -
batched_mmيستخدمtorch.bmmواجهة برمجة التطبيقات. يقوم هذا بتكرار أوزان الخبراء المحددة لكل رمز مميز ويقوم بتنفيذ GEMM دفعة واحدة. تعتبر هذه الواجهة الخلفية مناسبة تمامًا لأحمال العمل ذات الدفعات الصغيرة والمثقلة بوحدة معالجة الرسومات حيث تتوفر الذاكرة. -
grouped_mmالاستخداماتtorch._grouped_mmواجهة برمجة التطبيقات. نقوم هنا بفرز الرموز المميزة حسب معرف الخبير، وتجميعها، ثم إجراء GEMM مجمعة واحدة. تتألق هذه الواجهة الخلفية مع دفعات كبيرة أو إعدادات محدودة الذاكرة.
![]() |
|---|
| الشكل: رسم توضيحي للواجهة الخلفية المتخصصة |
التوازي الخبراء
يمكن أن تحتوي نماذج خليط الخبراء (MoE) على مئات المليارات من المعلمات (أكثر بكثير مما يناسب وحدة معالجة الرسومات واحدة). يعالج توازي الخبراء (EP) هذه المشكلة من خلال توزيع الخبراء عبر أجهزة متعددة. يقوم كل جهاز بتحميل مجموعة الخبراء الفرعية المخصصة له فقط، ويقوم بحساب هؤلاء الخبراء ثم يشارك في تجميع النتائج. يقوم هذا النهج بتوسيع نطاق النماذج إلى أعداد معلمات أكبر بكثير دون زيادة تكلفة الحساب لأن كل رمز مميز ينشط عددًا قليلاً من الخبراء فقط.
يتم تمكين التوازي الخبراء عبر enable_expert_parallel:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers.distributed.configuration_utils import DistributedConfig
distributed_config = DistributedConfig(enable_expert_parallel=True)
model = AutoModelForCausalLM.from_pretrained(
"openai/gpt-oss-120b",
dtype="auto",
distributed_config=distributed_config,
)
ابدأ مع:
torchrun --nproc-per-node N script.py
أين N يقسم العدد الإجمالي للخبراء بالتساوي، وربما يطابق عدد وحدات معالجة الرسومات في العقدة الخاصة بك.
متى enable_expert_parallel=True، يتحول النموذج من خطة الموتر الموازية القياسية (TP) إلى خطة المتوازية الخبيرة (EP) مع استراتيجيات التقسيم المتخصصة.
المكونات الأساسية لـ EP تكمن في:
-
GroupedGemmParallel: يؤدي هذا إلى تقسيم أوزان الخبراء على طول بُعد الخبراء (dim=0). هنا يتم تحميل كل جهاز فقطnum_experts / num_devices. -
RouterParallel: يؤدي هذا إلى إعادة تعيين مؤشرات الخبراء العالمية للمؤشرات المحلية، وإخفاء الخبراء غير المعينين في الترتيب الحالي، وضمان قيام كل جهاز بالحوسبة فقط مع خبرائه المحليين واستخدام تقليل كامل لدمج المخرجات الجزئية عبر الأجهزة.
تدريب وزارة التربية على المحولات
تعد وزارة التربية والتعليم ممتازة في توسيع نطاق الاستدلال، لكن تدريبها أكثر تعقيدًا بشكل ملحوظ.
لدى وزارة التربية والتعليم عدد كبير من المعلمات، كما أن اتصالات الخبراء الموزعة معقدة، وهناك اختلالات في التوجيه تحتاج إلى التعامل معها. ولمعالجة هذا الأمر، تعاونا مع غير كسلان لتمكين تدريب مزيج من الخبراء بشكل أسرع:
- ~12× تدريب أسرع لوزارة التربية والتعليم
- > تخفيض بنسبة 35% في ذاكرة VRAM
- ~6 × سياق أطول
- 12–30× تسريع إجمالي مقارنة بالإصدار 4
نحن نستفيد من تجريد Expert Backend، ونوحد معايير PyTorch torch._grouped_mm API واستخدام حبات Triton المجمعة-GEMM + LoRA المخصصة. يعتمد Unsloth على تحسينات Transformers (و TRL) لدفع الأداء بشكل أكبر.
للحصول على التفاصيل الكاملة، نوصي بقراءة: دليل Unsloth الرسمي
خاتمة
مع استمرار تطور البنى المتفرقة، نريد أن تتطور مكتبة المحولات معها. إذا كنت تقوم بالبناء مع وزارة التربية والتعليم أو تجرب أفكارًا متفرقة جديدة، فنحن نحب أن نسمع منك. أخبرنا ما هي التجريدات أو النوى أو مسارات العمل التي ترغب في رؤيتها بعد ذلك transformers.

