چیتشیت
مخلوطی از متخصصان (MoE) و معماریهای هیبریدی
Mixture of Experts and Hybrid Architectures
مسیریابها، متخصصان، تعادل بدون زیان کمکی، MLA، محاسبات DeepSeek-V3 و مدلهای هیبریدی Jamba SSM. فرمولها و ماشینحسابهای stdlib.
فهرست مطالب
یک لایهی MoE
معماریحلقهی توازن بدون نیاز به زیان کمکی
گامبهگام- مقداردهی اولیه
bias = [0.0] * n_experts. استفادهی هدف برابر است باn_tokens * top_k / n_experts. - مسیریابیانتخاب k برتر بر اساس
scores + bias. - گیتسافتمکس روی امتیازهای اصلی متخصصان انتخابشده.
- شمارشتابع
run_epochدفعات فعالشدن هر متخصص را میشمارد. - بهروزرسانیبیشتر از هدف،
bias[e] -= gamma. کمتر از هدف،bias[e] += gamma. - تکرارنسخهٔ نمایشی از
gamma=0.15در 10 تکرار استفاده میکند. - بررسیآنتروپی به سمت
ln(n_experts)، یعنی حداکثر یکنواختی، افزایش مییابد.
پیادهسازی مسیریاب در کد
کدpython
def route(hidden, W_router, top_k, bias):
E = len(W_router)
scores = [sum(h * w for h, w in zip(hidden, W_router[e])) for e in range(E)]
biased = [s + b for s, b in zip(scores, bias)] # بایاس انتخاب را تغییر میدهد
top_idx = sorted(range(E), key=lambda i: -biased[i])[:top_k]
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] # مجموع گیتهای سافتمکس برابر با 1 است
return top_idx, gates
ماشینحسابهای درون درسها
کار و کد| وظیفه | کد |
|---|---|
| گزارش DeepSeek-V3 | print_report(name, cfg, ctx=131_072) |
| متوازنسازی متخصصان | update_bias(bias, usage, target, gamma=0.15) |
| ارزیابی توازن مسیریابی | entropy(counts) |
| شمارش هر config.json | analyze(name, config) |
| نامگذاری اتنشن | attention_scheme(config) |
| آمارهای کل DeepSeek-V3 | compute_totals(cfg, ctx=None) |
| وضعیت SSM هیبریدی | ssm_state_bytes(cfg, bytes_per_elem) |
| کش کلید-مقدار هیبریدی | kv_cache_bytes(cfg, ctx, bytes_per_elem) |
فرمولها
مفهومها- پارامترهای MoE
- کل برابر با $E \times$ اندازهٔ FFN. فعال برای هر توکن برابر با $k \times$ اندازهٔ FFN.
- تنک بودن
- فعال تقسیم بر کل. 37/671 ≈ 5.5٪ در DeepSeek-V3.
- دانهبندی دقیق
- $\binom{256}{8} \approx 400$ تریلیون ترکیب متخصص برای هر توکن.
- کش کلید-مقدار
2 * num_layers * num_kv_heads * head_dim * max_seq_len * bytes_per_element- کش MLA
num_layers * kv_lora_rank * max_seq_len * bytes_per_element- مدل SSM
- $h_t = A h_{t-1} + B x_t$ و $y_t = C h_t$. حافظه برای هر توکن ثابت است.
- عرض SwiGLU
ff_dim = (2/3) * 4 * hidden = 8/3 * hidden- ترکیب Jamba
- مقدار
l = 8یعنی 1 لایهی اتنشن بهازای هر 7 لایهی Mamba. مقدارe = 2یعنی MoE در یکدرمیان لایهها.
پیکربندی DeepSeek-V3
کدtext
hidden_size: 7168 # بعد امبدینگ
intermediate_size: 18432 # MLP چگال، در 3 لایهی اول
moe_intermediate_size: 2048 # MLP برای هر متخصص
num_hidden_layers: 61 # 3 لایه چگال + 58 لایه MoE
first_k_dense_layers: 3 # MLP چگال برای پایداری
num_attention_heads: 128 # هدهای پرسوجو
kv_lora_rank: 512 # متغیر نهفتهی MLA بهازای هر توکن در هر لایه
num_experts: 256 # متخصصان مسیریابیشده در هر بلوک
num_experts_per_tok: 8 # مسیریابی top-8
shared_experts: 1 # پایهی چگالِ همیشهروشن
mtp_module: 1 # پیشبینی توکن t+2، با 14B پارامتر
مقایسهی پهلوبهپهلوی مدلها
مقایسه| فاکتور | Llama 3 70B | Mixtral 8x7B | DeepSeek V3 | Jamba |
|---|---|---|---|---|
| خانواده | ترنسفورمر چگال | ترنسفورمر MoE | ترنسفورمر MoE | Mamba + اتنشن + MoE |
| کل / فعال | 70B / 70B | 47B / 13B | 671B / 37B | 52B / 12B |
| متخصصان | ندارد | 8 متخصص، top-2 | 256 + 1 متخصص مشترک، top-8 | MoE در لایههای یکدرمیان |
| اتنشن | اتنشن پرسوجوی گروهبندیشده (64/8) | اتنشن پرسوجوی گروهبندیشده | اتنشن چندسر نهفته | 1 لایه بهازای هر 7 لایهی Mamba |
| زمینه | 128k | 32k | 128k | 256k روی یک پردازندهی گرافیکی 80GB |
ارقام حافظه
مفهومها- مدل Llama 3 8B در زمینهٔ 128k
- کش کلید-مقدار برابر 17.2 GB. وزنهای BF16 برابر 16 GB.
- مدل DeepSeek-V3 در زمینهٔ 128k
- کش MLA برابر 7.6 GB. خط مبنا با GQA به 30.5 GB نیاز دارد.
- 32 لایه در زمینهٔ 256k
- ساختار MHA کامل نیازمند 128 GB. نسبت 1:7 در Jamba فقط 4 لایهی اتنشن را کش میکند، یعنی 16 GB.
- وضعیت SSM در Jamba
- در مجموع 3.7 MB. با افزایش طول توالی رشد نمیکند.
- مدل 671B با فرمت fp16
- حدود 1.3 TB از حافظهی گرافیکی. همهی متخصصان روی GPU میمانند.
- ماژول MTP
- برابر با 14B افزون بر 671B. سربار 2.1%.
پیشفرضهای ماشینحساب
پیشفرضها| تنظیم | پیشفرض | نکته |
|---|---|---|
kv_lora_rank | 512 | متغیر نهفتهی MLA زمانی که در پیکربندی قید نشده باشد |
activation | gelu | swiglu و geglu یک ماتریس گیت اضافه میکنند |
norms_per_layer | 2 | برای RMSNorm هر کدام h، برای LayerNorm برابر 2 * h |
head_dim | hidden_size / num_attention_heads | مدل Gemma 2 9B عدد 256 تعیین میکند |
layer_types | full_attention | هر لایه تمام زمینه را کش میکند |
rope_theta | 10k | مدل Llama 3 آن را به 500k میرساند |
عیبیابی
عیبیابی90% توکنها به یک متخصص هدایت میشوند
- علت
- عدم توازن مسیریاب
- راهحل
- افزودن بایاس بهازای هر متخصص، بهروزرسانی خارج از تابع زیان (loss)
کاهش کیفیت زیر بار ترافیکی
- علت
- سرریز ظرفیت و دور ریختن توکنها
- راهحل
- استفاده از توازن مبتنی بر بایاس، بهجای حذف توکنها
تابع زیان وظیفهٔ اصلی بدتر میشود
- علت
- زیان کمکی توازن بار
- راهحل
- استفاده از راهکار بدون زیان کمکی
بایاس خروجی پیشبینیها را منحرف میکند
- علت
- محاسبهی گیتهای کنترلی از روی امتیازهای دارای بایاس
- راهحل
- اعمال گیت با امتیازهای خام
scores
تاخیر بالا در چند GPU
- علت
- ترافیک تبادل all-to-all بین متخصصان
- راهحل
- پرهیز از MoE در سرویسدهیهای حساس به تاخیر
کش کلید-مقدار بزرگتر از وزنهای مدل است
- علت
- استفاده از MHA کامل در بافتهای طولانی
- راهحل
- استفاده از اتنشن پرسوجوی گروهبندیشده یا اتنشن چندسر نهفته
شکست مدل هیبریدی در بازیابی درونزمینه
- علت
- لایههای اتنشن بسیار اندک، نسبت 1:15
- راهحل
- استفاده از نسبت 1:7 یا 1:8
تعداد پارامترها 525M کم دارد
- علت
- هد غیرمتصل LM شمرده نشده است
- راهحل
- بررسی فلگ
tie_word_embeddings
زمان استفاده از هر معماری
نکتهها- از MoE برای رسیدن به کیفیت در لبهی فناوری با هزینهی استنتاج کمتر برای هر توکن استفاده کنید.
- از MoE زمانی استفاده کنید که حافظهی گرافیکی و زیرساخت موازیسازی متخصصان را دارید.
- از MoE در پردازش لبه، برای سرویسدهی تککاربره با تاخیر بحرانی، یا در مقیاس کمتر از 7B استفاده نکنید.
- از مدل هیبریدی در بافت 64k+ یا با بودجهی حافظهی یک GPU استفاده کنید.
- از مدل هیبریدی در بافت کمتر از 16k یا در اتنشن تمامبهتمام استفاده نکنید.
- در مدلهای بالای حدود 13B پارامتر از اتنشن پرسوجوی گروهبندیشده یا اتنشن چندسر نهفته استفاده کنید.
- در پیکربندیهای پنجرهی لغزان، ابتدا نسبت لایههای کامل به لایههای لغزان را بررسی کنید.
کوتهنوشتها
اصطلاحها- MoE
- مخلوطی از متخصصان. N شبکهی MLP در هر بلوک؛ مسیریاب top-k را برای هر توکن برمیگزیند.
- GQA
- اتنشن پرسوجوی گروهبندیشده. تعداد G گروه از هدهای پرسوجو یک K و یک V مشترک دارند.
- MQA
- اتنشن چندپرسوجو. یک K و یک V مشترک برای تمام هدها.
- MLA
- اتنشن چندسر نهفته. فشردهسازی K و V در یک فضای نهفتهی کمرتبه.
- MTP
- پیشبینی چندتوکنی. پیشبینی توکن $t+2$؛ تولید پیشنویس گمانهزنانه و بدون هزینه.
- SSM
- مدل فضای حالت. ساختاری بازگشتی با وضعیتی با اندازهٔ ثابت.
- MIMO
- چندورودی چندخروجی. تصاویر ماتریسی در Mamba-3.
پرسشها
پرسش و پاسخ- چرا بایاس فقط روی انتخاب تاثیر دارد؟
- توازن بار را بدون دستکاری پیشبینیها تصحیح میکند.
- متخصصان مشترک چه کاری انجام میدهند؟
- دانش عمومی را ثبت میکنند. متخصصانِ مسیریابیشده تخصصی عمل میکنند.
- چرا 3 لایهی نخست V3 چگال هستند؟
- لایههای آغازین برای حفظ پایداری، مسیریاب را دور میزنند.
- علت استفاده از نسبت 1:7 در Jamba چیست؟
- اتنشن بازخوانی دقیق را انجام میدهد؛ Mamba پردازش ارزان بخش عمده را بر عهده دارد.
- چه معماری در مقیاس تریلیونی برنده است؟
- ترنسفورمر خالص + اتنشن چندسر نهفته + MoE، به سبک DeepSeek-V3.