ترکیب کارشناسان (MoE)
Type: Build
Languages: Python
Prerequisites: Phase 7 · 05 (Full Transformer), Phase 7 · 07 (GPT)
Time: ~45 minutes
مشکل
FLOPs یک ترانسفارمر کثیف در نتیجه برابر تعداد پارامتر آن است (برابر 2 برای گذر جلو). یک مدل کثیف را مقیاس بندی کنید و هر توکن صورتحساب را پرداخت می کند. تا سال 2024 مرز به یک دیوار محاسباتی ضربه می زد: برای اینکه به طور معنی دارانه هوشمندتر باشید، شما به طور نمایاں به FLOPs بیشتر در هر توکن نیاز دارید.
مخلوط کارشناسان این پیوند را شکسته است.Eکارشناسان مستقل + روتر انتخاب کننده kکارشناسان به هر توکن.E × FFN_size. پارامترهای فعال در هر توکن = k × FFN_size. کنفigurاسیون معمول 2026: E=256،k=8. ترازو ذخیره سازی با E، مقیاس های کامپیوتری را با k. .
مرز 2026 تقریباً به طور کامل MoE است: DeepSeek-V3 (671B کل / 37B فعال) ، Mixtral 8×22B ، Qwen2.5-MoE ، Llama 4 ، Kimi K2 ، gpt-oss. در لیست مستقل تجزیه و تحلیل مصنوعی ، 10 مدل منبع باز برتر همه MoE هستند.
مفهوم
!MoE layer: router selects k of E experts per token
مبادله FFN
بلوک تراسمور کثافت:
h = x + attn(norm(x))
h = h + FFN(norm(h))بلاک MoE:
h = x + attn(norm(x))
scores = router(norm(h)) # (N_tokens, E)
top_k = argmax_k(scores) # pick k of E per token
h = h + sum_{e in top_k}(
gate(scores[e]) * Expert_e(norm(h))
)هر متخصص یک FFN مستقل (معمولا SwiGLU) است. روتر یک لایه خطی واحد است. هر توکن خودش را انتخاب می کند.kمتخصصین و یک ترکیب بسته از خروجی خود را دریافت می کند.
مشکل تعادل بار
اگه روتر 90 درصد از توکن ها رو از طریق متخصص 3 بفرستد، کارشناسان دیگه گرسنه میشن
- Auxiliary load-balancing loss(تبديل کننده سوئیچ، مخلوطترال) ، مجازات متناسب با تفاوت در استفاده متخصص اضافه کنید. کار می کند، اما یک پارامتر فوق العاده و سیگنال گرادینت دوم اضافه می کند.
- Expert capacity + token droppingهر متخصص به حداکثر پروسه ای
C × N/Eتوکن ها، توکن های بیش از حد از لایه عبور می کنند. کیفیت آسیب می رساند. - Auxiliary-loss-free balancing(DeepSeek-V3). یک تعصب آموخته شده به هر متخصص اضافه کنید که انتخاب top-k روتر را تغییر می دهد. تعصب خارج از از دست دادن تمرین به روز می شود. هیچ مجازات در هدف اصلی نیست. باز کردن بزرگ سال 2024 .
رویکرد DeepSeek-V3: پس از هر مرحله آموزش، برای هر متخصص، بررسی کنید که آیا استفاده از آن بالاتر از هدف یا پایین تر از هدف است.±γ. استفاده های انتخابscores + biasاحتمالات متخصصي که براي گاتينگ استفاده ميکنن خام هستندscoresبدون تغییر. رویتینگ از عبارت جدا می شود.
کارشناسان مشترک
DeepSeek-V2/V3 همچنین کارشناسان را به shared و routed تقسیم می کند. هر توکن از طریق تمام کارشناسان مشترک عبور می کند. کارشناسان روت شده از طریق top-k انتخاب می شوند. کارشناسان مشترک دانش مشترک را ضبط می کنند؛ کارشناسان روت شده تخصص دارند. V3 1 متخصص مشترک را به همراه با top-8 از 256 روت شده اجرا می کند.
کارشناسان با غلات نازک
کلاسیکی MoE (GShard، Switch): هر متخصص به اندازه یک FFN کامل است. Eکوچک است (864), kکوچک است (12).
MoE جدید ذرات نازک (DeepSeek-V3، Qwen-MoE): هر متخصص باریک تر است (1/8 اندازه FFN). Eبزرگ است (256+)kاندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه ی اندازه یC(256, 8) = 400 trillionهر توکن به احتمال زیاد "ماهربان" میرسد. کیفیت بالا میره، تاخیر ثابت می ماند.
مشخصات هزینه
هر توکن، هر لایه:
| Config | Active params / token | Total params |
|---|---|---|
| Mixtral 8×22B | ~39B | 141B |
| Llama 3 70B (dense) | 70B | 70B |
| DeepSeek-V3 | 37B | 671B |
| Kimi K2 (MoE) | ~32B | 1T |
DeepSeek-V3 در تقریباً هر نقطه ی مرجع در حال انجام کار Llama 3 70B را شکست می دهدfewer active FLOPs per tokenپارامترهای بیشتر = دانش بیشتر FLOPs فعال تر = محاسبه بیشتر در هر توکن. MoE آنها را جدا می کند.
گرفتگی: حافظه
تمام کارشناسان بدون توجه به اینکه کدام یک از آنها می توانند از GPU استفاده کنند، زندگی می کنند. یک مدل 671B برای وزن fp16 به ~ 1.3 TB VRAM نیاز دارد. انتشار Frontier MoE نیاز به موازیات متخصص دارد.
آن را بسازید
ببینcode/main.pyیک لایه کامپکت MoE در stdlib خالص با:
n_experts=8کارشناسان SwiGLU (هر یک خطی برای مثال)- مسیر بالا k=2
- وزن های گیتینگ نرمال شده نرم حداکثر
- تعادل بدون ضرر کمک کننده از طریق تعصب هر متخصص
مرحله اول: روتر
pythondef route(hidden, W_router, top_k, bias):
scores = [sum(h * w for h, w in zip(hidden, W_router[e])) for e in range(len(W_router))]
biased = [s + b for s, b in zip(scores, bias)]
top_idx = sorted(range(len(biased)), key=lambda i: -biased[i])[:top_k]
# softmax over ORIGINAL scores of the chosen experts
chosen = [scores[i] for i in top_idx]
m = max(chosen)
exps = [math.exp(c - m) for c in chosen]
s = sum(exps)
gates = [e / s for e in exps]
return top_idx, gatesتعصب بر انتخاب تاثیر می گذارد نه وزن دروازه. این ترفند DeepSeek-V3 است. تعصب بدون هدایت پیش بینی های مدل، عدم تعادل بار را اصلاح می کند.
مرحله دوم: 100 توکن را از طریق روتر اجرا کنید
ردیابی کنید که چه کارشناسان چه میزان بار می کشند. بدون تعصب، استفاده منحرف است. با یک حلقه به روز رسانی تعصب (-γبرای کارشناسان بیش از حد استفاده شده+γبرای استفاده کم) استفاده به یک توزیع یکسانی در چند تکرار تبدیل می شود.
مرحله 3: مقایسه تعداد پارام
"معادل کثافت" یک پیکربندی MoE را چاپ کنید. DeepSeek-V3- شکل: 256 روت + 1 مشترک، 8 فعال، d_model=7168. تعداد پارامترهای کل چشمگیر است. تعداد فعال هفتمین یک Llama 3 70B کثافت است.
ازش استفاده کن
حمل کردن صورت
pythonfrom transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("mistralai/Mixtral-8x22B-v0.1")نتیجه گیری تولید 2026: vLLM از مسیر MoE به صورت بومی پشتیبانی می کند. SGLang سریع ترین مسیر موازی متخصص را دارد. هر دو به طور خودکار انتخاب top-k و موازی تخصص را اداره می کنند.
When to pick MoE:
- شما می خواهید کیفیت مرزی با هزینه پایین تر نتیجه گیری در هر توکن.
- شما زیرساخت VRAM / متخصص متوازی دارید.
- بار کاری شما از توکن ها سنگین است (چات، کد) نه از زمینه سنگین (دستنامه های طولانی).
When NOT to pick MoE:
- انتشار کناری شما برای هر FLOP فعال ذخیره سازی کامل را پرداخت می کنید.
- استفاده از یک کاربر برای خدمات رویتینگ متخصص اضافه هزینه های عمومی می کند.
- مدل های کوچک (<7B) مزیت کیفیت MoE فقط بالاتر از یک حد محاسبه (~6B پارام فعال) ظاهر می شود.
-باده
ببینoutputs/skill-moe-configurator.mdمهارت انتخاب E، k و طرح مشترک متخصص برای یک پارامتر جدید بودجه، توکن های آموزش و هدف انتشار داده شده توسط وزارت خارجه.
تمرینات
- Easy.فرار کن
code/main.pyببینین که چطور به روز رسانی بی ضرر و بدون ضرر، استفاده از متخصصین را بیش از ۵۰ تکرار برابر می کند. - Medium.روتر آموخته را با روتر مبتنی بر هش (تعریف، بدون یادگیری) جایگزین کنید. کیفیت و تعادل را مقایسه کنید. چرا روتر آموخته بهتر است؟
- Hard.پیاده سازی "روتینگ تطابق راه اندازی" (ترک DeepSeek-V3.2): ثبت کنید که کارشناسان در هنگام نتیجه گیری از آن استفاده می کنند، همان روتینگ را در طول محاسبه گرادیانت مجبور کنید. تأثیر را بر تنظیمات سیاست گرادیانت اسباب بازی اندازه گیری کنید.
اصطلاحات کلیدی
| Term | What people say | What it actually means |
|---|---|---|
| Expert | "One FFN among many" | An independent feed-forward network; parameters dedicated to a sparse slice of the FFN computation. |
| Router | "The gate" | A tiny linear layer that scores each token against each expert; top-k selection. |
| Top-k routing | "k active experts per token" | Each token's FFN computation goes through exactly k experts, weighted by gate. |
| Auxiliary loss | "Load-balance penalty" | Extra loss term that penalizes skewed expert usage. |
| Auxiliary-loss-free | "DeepSeek-V3's trick" | Balance via per-expert bias on the router's selection only; no extra gradient. |
| Shared expert | "Always on" | Extra expert through which every token passes; captures common knowledge. |
| Expert parallelism | "Shard by expert" | Distribute different experts to different GPUs; route tokens across the network. |
| Sparsity | "Active params < total params" | The ratio k × expert_size / (E × expert_size); 37/671 ≈ 5.5% for DeepSeek-V3. |
خواندن بیشتر
- Shazeer et al. (2017). Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer ایده
- Fedus, Zoph, Shazeer (2022). Switch Transformer: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity سوئیچ، کلاسیکی MoE
- Jiang et al. (2024). Mixtral of Experts مخلوط 8×7B
- DeepSeek-AI (2024). DeepSeek-V3 Technical Report MLA + MoE بدون ضرر معاون + MTP.
- Wang et al. (2024). Auxiliary-Loss-Free Load Balancing Strategy for Mixture-of-Experts کاغذ تعادل مبتنی بر تعصب.
- Dai et al. (2024). DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models دانشکده های دقیق + متخصص مشترک استفاده های روتر این درس را تقسیم می کنند.
- Kim et al. (2022). DeepSpeed-MoE: Advancing Mixture-of-Experts Inference and Training مقاله اصلی مشترک متخصص.
This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.
Browse the complete course catalog or open this lesson on GitHub.