مدلهای زبانی بزرگ تا مدتها صرفاً با مقیاسبندی معماریهای استاندارد مثل Llama پیش میرفتند؛ اما DeepSeek-V3 قواعد بازی را تغییر داد. این مدل با اتکا به نوآوریهایی نظیر اتنشن چندسر نهفته (MLA)، معماری متخصصان تنک (MoE) با موازنهی بار بدون تابع زیان کمکی و پایپلاین پیشرفتهی DualPipe توانست در عین بهرهوری شگفتانگیز محاسباتی، به مرز توانمندی مدلهای پیشرو برسد. برای هر مهندسی که به دنبال درک روندهای مدرن هوش مصنوعی است، شناخت زیروبم این معماری ضروری است.
در این درس کانفیگ رسمی DeepSeek-V3 را سطر به سطر بازخوانی میکنیم و فرمولهای محاسباتی پارامترهای فعال (37B) و کل (671B) را به دست میآوریم. همچنین بررسی میکنیم که چگونه فشردهسازی بردار نهفته در MLA مصرف حافظهی کش کلید-مقدار را در زمینههای طولانی تا چندین برابر کاهش میدهد و استنتاج مدلهای عظیم را اقتصادیتر میکند.
در درس 14 از فاز 10، با شش پیچ تنظیم معماری که هر مدل متنبازی آنها را تغییر میدهد آشنا شدید. مدل DeepSeek-V3 (دسامبر 2024، در مجموع 671B پارامتر، 37B فعال) نهتنها هر شش پیچ را میچرخاند، بلکه چهار پیچ جدید هم به آنها اضافه میکند: اتنشن چندسر نهفته (Multi-Head Latent Attention یا MLA)، موازنهی بار بدون تابع زیان کمکی (auxiliary-loss-free load balancing)، پیشبینی چندتوکنی (Multi-Token Prediction یا MTP) و آموزش با پایپلاین دوطرفهی DualPipe. در این درس، معماری DeepSeek-V3 را از بالا تا پایین بررسی میکنیم و تکتک تعداد پارامترها را از روی کانفیگ منتشرشده به دست میآوریم. در پایان، میتوانید توضیح دهید که چرا نسبت 671B به 37B بهترین انتخاب است و چرا ترکیب MLA و MoE در مرز فناوری از هر کدام بهتنهایی عملکرد بهتری دارد.
اهداف یادگیری
- خواندن کامل کانفیگ DeepSeek-V3 از بالا تا پایین و توضیح هر فیلد بر اساس شش پیچ تنظیم GPT-2 بهعلاوهی چهار نوآوری اختصاصی DeepSeek.
- محاسبهی تعداد کل پارامترها (671B)، پارامترهای فعال (37B) و اجزای تشکیلدهندهی هر کدام.
- محاسبهی ردپای حافظهی کش کلید-مقدار (KV cache) در MLA با طول زمینهی 128k توکن و مقایسهی آن با هزینهی یک مدل متراکم فرضی با پارامتر فعال یکسان و معماری GQA.
- نام بردن چهار نوآوری اختصاصی DeepSeek (شامل MLA، MTP، مسیریابی بدون زیان کمکی و DualPipe) و مشخص کردن بخشی از استک معماری یا آموزش که هدف گرفتهاند.
صورت مسئله
مدل DeepSeek-V3 نخستین مدل متنباز در مرز فناوری است که معماری آن تفاوت معناداری با خانوادهی Llama دارد. مدل Llama 3 405B در واقع همان «GPT-2 با شش پیچ چرخیده» است؛ اما DeepSeek-V3 همان GPT-2 است با همهی آن شش پیچ بهعلاوهی چهار پیچ دیگر. خواندن کانفیگ Llama 3 مثل یک وارمآپ (پیشگرمایش) برای خواندن کانفیگ DeepSeek است؛ اما ساختار عمیق آن — یعنی شکل بلوک اتنشن، منطق مسیریابی و تابع هدف زمان آموزش — آنقدر تفاوت دارد که به یک بررسی جداگانه نیاز است.
فایدهی یادگیری آن: انتشار وزنهای باز DeepSeek-V3 معنای «توانمندی مرز فناوری» را در مدلهای باز دگرگون کرد. این معماری، طرح اولیهای است که بسیاری از فرآیندهای آموزشی سال 2026 از روی آن کپیبرداری میکنند. درک آن پیششرط ورود به هر جایگاه شغلی مرتبط با آموزش یا استنتاج LLMهای پیشرو است.
مفاهیم کلیدی
باز هم همان هستهی تغییرناپذیر
مدل DeepSeek-V3 همچنان خودبازگشتی (autoregressive) است. همچنان بلوکهای دیکودر را روی هم میچیند. هر بلوک هنوز از اتنشن بهعلاوهی MLP و دو نرمالسازی RMSNorm تشکیل شده است. در لایهی MLP همچنان فعالساز SwiGLU به چشم میخورد. هنوز از RoPE، پیشنرمالسازی (Pre-norm) و امبدینگهای متصل (Tied Embeddings) استفاده میکند؛ یعنی دقیقاً همان خط مبنایی (baseline) که در هر مدل Llama یا Mistral میبینید.
وجه تمایز: MLA بهجای GQA
از درس 14 فاز 10 میدانید که GQA با به اشتراک گذاشتن K و V میان گروههایی از سرهای Q، حجم کش کلید-مقدار را کاهش میدهد. اما اتنشن چندسر نهفته (MLA) پا را فراتر میگذارد: K و V درون یک نمایش نهفتهی رتبهپایین مشترک (با پارامتر kv_lora_rank) فشرده میشوند و سپس در لحظه (on the fly) برای هر سر از حالت فشرده خارج میگردند. کش کلید-مقدار فقط این بردار نهفته را ذخیره میکند — یعنی معمولاً 512 عدد ممیز شناور به ازای هر توکن در هر لایه، نه 8 ضرب در 128 مساوی با 1024 عدد ممیز شناور.
در طول زمینهی 128k توکن، ردپای DeepSeek-V3 مجهز به MLA (یک بردار نهفتهی مشترک c^{KV} به ازای هر توکن در هر لایه؛ K و V هر دو از این بردار نهفته و از طریق تصویر کردن به ابعاد بالاتر به دست میآیند که میتوان آن را در ضرب ماتریسی بعدی ادغام کرد):
kv_cache = num_layers * kv_lora_rank * max_seq_len * bytes_per_element
= 61 * 512 * 131072 * 2
= 7.6 GB
در مقابل، یک خط مبنای فرضی مبتنی بر GQA (مشابه ابعاد Llama 3 70B با 8 سرِ KV و بعدِ سرِ 128) چنین هزینهای دارد:
kv_cache = 2 * 61 * 8 * 128 * 131072 * 2
= 30.5 GB
در زمینهی 128k توکن، حافظهی کش در MLA حدود 4 برابر کوچکتر از کش GQA در مدلی با سبک Llama-3-70B است.
هزینهی این بدهبستان: MLA یک مرحلهی بازگشایی از فشردگی را به ازای هر محاسبهی اتنشن (برای هر سر) اضافه میکند. این محاسبات اضافه در مقایسه با پهنای باندی که صرفهجویی میشود ناچیز است؛ در نتیجه دستاورد خالصی برای استنتاج با زمینههای طولانی به همراه دارد.
سازوکار مسیریابی: موازنهی بار بدون تابع زیان کمکی
مسیریابهای MoE تصمیم میگیرند که کدام k متخصص برتر (top-k) هر توکن را پردازش کنند. یک مسیریاب سادهلوح بار کاری بسیار زیادی را روی دوش چند متخصص خاص متمرکز میکند و بقیه را بیکار میگذارد. راهحل استاندارد: افزودن یک عبارتِ زیان کمکی (auxiliary loss) که عدم تعادل در بار کاری را جریمه میکند. این روش کار میکند، اما عملکرد مدل در وظیفهی اصلی را کمی کاهش میدهد.
مدل DeepSeek-V3 یک سازوکار بدون نیاز به زیان کمکی معرفی میکند. در این روش، به لاجیتهای مسیریاب یک عبارت بایاس به ازای هر متخصص اضافه میشود که حین آموزش با یک قاعدهی ساده تنظیم میگردد: اگر بار متخصص e بیش از حد باشد، bias_e کاهش مییابد؛ و اگر کمکار باشد، افزایش پیدا میکند. نیازی به عبارت زیان اضافه نیست. فرآیند آموزش تمیز میماند و بار کاری متخصصان متعادل حفظ میشود.
اثر روی تابع زیان اصلی: بدون افتِ قابل اندازهگیری. اثر روی معماری MoE: تمیزتر و بدون نیاز به تنظیم ابرپارامترِ زیان کمکی.
ماژول MTP: آموزش متراکمتر بهعلاوهی توکن پیشنویس رایگان
از درس 18 فاز 10 میدانید که DeepSeek-V3 یک ماژول MTP با عمق D=1 اضافه کرده که توکنِ دو جایگاه جلوتر را پیشبینی میکند. در زمان استنتاج، از همین ماژول آموزشدیده بهعنوان پیشنویسساز در روش کدگشایی حدسی (speculative decoding) با نرخ پذیرش بالای 80 درصد استفاده میشود. در زمان آموزش، هر وضعیت پنهان (hidden state) روی D+1 = 2 هدف نظارت میشود که سیگنال متراکمتری فراهم میآورد.
تعداد پارامترها: 14B علاوه بر 671B مدل اصلی. سربار: 2.1%.
فرآیند آموزش: DualPipe
از درس 19 فاز 10 میدانید که DualPipe یک پایپلاین دوطرفه است که تکههای forward و backward را با ارتباطات همهبههمه (all-to-all) میان نودها همپوشانی میکند. در مقیاس 2,048 پردازندهی H800 که برای آموزش DeepSeek-V3 به کار رفت، این روش حدود 245k ساعت-GPU را که در روش 1F1B به خاطر حبابهای پایپلاین هدر میرفت، احیا میکند.
کانفیگ، فیلد به فیلد
در ادامه فایل کانفیگ DeepSeek-V3 (نسخهی سادهشده) را میبینید:
hidden_size: 7168
intermediate_size: 18432 (dense MLP hidden size, used on first few layers)
moe_intermediate_size: 2048 (expert MLP hidden size)
num_hidden_layers: 61
first_k_dense_layers: 3 (first 3 layers use dense MLP)
num_attention_heads: 128
num_key_value_heads: 128 (formally equal to num_heads under MLA, but
the real compression is in kv_lora_rank)
kv_lora_rank: 512 (MLA latent dimension)
num_experts: 256 (MoE expert count per block)
num_experts_per_tok: 8 (top-8 routing)
shared_experts: 1 (always-on shared expert per block)
max_position_embeddings: 163840
rope_theta: 10000.0
vocab_size: 129280
mtp_module: 1 (1 MTP module at depth 1)
تحلیل پارامترها:
hidden_size=7168: ابعاد امبدینگ.num_hidden_layers=61: عمق کل بلوکها.first_k_dense_layers=3: در 3 بلوک ابتدایی از لایهی متراکم MLP با اندازهی 18432 استفاده میشود. 58 بلوک باقیمانده از MoE استفاده میکنند.num_attention_heads=128: 128 سرِ پرسش (query head).kv_lora_rank=512: مقادیر K و V در این بعد نهفته فشرده میشوند و برای هر سر مجدداً از حالت فشرده درمیآیند.num_experts=256, num_experts_per_tok=8: هر بلوک MoE شامل 256 متخصص است و 8 متخصص برتر را انتخاب و مسیریابی میکند.shared_experts=1: علاوه بر 256 متخصصِ نیازمند مسیریابی، 1 متخصصِ همیشه فعال وجود دارد که در پردازش همهی توکنها مشارکت میکند؛ شبیه به یک «کف متراکم» که مطمئن شویم هر توکن پردازشی پایدار و قابلاتکا دریافت میکند.moe_intermediate_size=2048: اندازهی پنهان لایهی متراکم MLP هر متخصص؛ کوچکتر از MLP متراکم اولیه در نظر گرفته شده، چون 256 عدد از آنها داریم.
حسابوکتاب پارامترها
محاسبات کامل در فایل code/main.py قرار دارد. سرخط ارقام:
- امبدینگ:
vocab * hidden = 129280 * 7168 = ~0.93B. - 3 بلوک متراکم ابتدایی: اتنشن مجهز به MLA (حدود 84M به ازای هر بلوک در شمارش سادهشدهی ماشینحساب) + لایهی متراکم SwiGLU MLP با ابعاد
3 * 7168 * 18432 = ~396Mبه ازای هر بلوک + لایههای نرمالسازی. در مجموع حدود 1.4B. - 58 بلوک MoE: اتنشن مجهز به MLA (حدود 84M) + 256 متخصص مسیریابیشده (هر کدام
3 * 7168 * 2048 = ~44M) + 1 متخصص مشترک (حدود 44M) + مسیریاب + نرمالسازیها. حدود 11.4B به ازای هر بلوک با در نظر گرفتن همهی متخصصان؛ در حدود 661B برای کل 58 بلوک MoE. - ماژول MTP: ماژول رسمی منتشرشده 14B است. ماشینحساب از یک جایگزین متراکم با اندازهی تقریبی 0.8B استفاده میکند.
مجموع نهایی: خروجی ماشینحساب ما به حدود 664B میرسد، در مقایسه با رقم رسمی 671B برای مدل اصلی. چکپوینت موجود روی Hugging Face حجمی برابر با 685B دارد، چون ماژول 14B مربوط به MTP را به این 671B اضافه کرده است. این اختلاف ناچیز حدود 1 درصدی ناشی از سادهسازیهاست: در این محاسبه از ابعاد مجزای RoPE در MLA، سر خروجی متصلنشده و چند تنسور کوچک دیگر صرفنظر شده است.
پارامترهای فعال در هر گام رفت (forward):
- اتنشن: 84M در هر لایه * 61 = ~5.1B (همهی لایهها فعال میشوند).
- لایههای فعال MLP: سه لایهی اول متراکم هستند (
3 * 396M = ~1.2B)؛ 58 لایهی MoE هر کدام با 8 متخصص مسیریابیشده + 1 متخصص مشترک فعالند (9 * 44M = ~396Mبه ازای هر لایه، در مجموع ~23B). سرجمع حدود 24B. - امبدینگ + نرمالسازیها: حدود 0.9B.
- کل پارامترهای فعال: طبق محاسبات ماشینحساب حدود 30B در مقایسه با 37B رسمی. بخش عمدهی این اختلاف مربوط به اتنشن است: پیادهسازی کامل MLA با ابعاد RoPE و سرهای عریضتر query و key، پارامترهای بیشتری از شمارش سادهشده دارد. ماژول MTP نیز جزو این 37B شمرده نمیشود.
نسبت 671B به 37B
نسبت تنکسازی (sparsity) برابر با 18 برابر است (پارامترهای فعال تنها 5.5% از کل پارامترها هستند). مدل DeepSeek-V3 تنکترین مدل MoE در مرز فناوری است که با وزنهای باز عرضه شده است. مدل Mixtral 8x7B با نسبت 13 به 47 (28%) بسیار متراکمتر است. مدل Llama 4 Maverick با نسبت 17B به 400B (4.25%) در وضعیت مشابهی قرار دارد. برگ برندهی انتخابی DeepSeek: در مقیاسهای پیشرو، متخصصان بیشتر با نرخ فعالسازی پایینتر، کیفیت بهتری به ازای هر فلاپس فعال (active-FLOP) ایجاد میکند.
جایگاه DeepSeek-V3 در مقایسه با رقبا
| مدل | کل پارامترها | پارامترهای فعال | نسبت | اتنشن | نوآوریها |
|---|---|---|---|---|---|
| Llama 3 70B | 70B | 70B | 100% | GQA 64/8 | — |
| Llama 4 Maverick | 400B | 17B | 4.25% | GQA | — |
| Mixtral 8x22B | 141B | 39B | 27% | GQA | — |
| DeepSeek V3 | 671B | 37B | 5.5% | MLA 512 | MLA + MTP + aux-free + DualPipe |
| Qwen 2.5 72B | 72B | 72B | 100% | GQA 64/8 | یا RN extension |
ادامهی مسیر: R1 و V4
مدل DeepSeek-R1 (2025) یک فرآیند آموزش استدلال روی بکبون V3 است. مدل R1 از همان معماری استفاده میکند. آنچه تغییر کرده فرآیند پسآموزش (post-training) است (یادگیری تقویتی در مقیاس بالا روی وظایف قابلاعتبارسنجی)، نه معماری پیشآموزش.
انتظار میرود مدل DeepSeek-V4 (در صورت انتشار) ترکیب MLA + MoE + MTP را حفظ کند و سازوکار DSA (اتنشن تنک دیپسیک یا DeepSeek Sparse Attention) را که ادامهدهندهی NSA از درس 17 فاز 10 است، اضافه کند. این خط تکاملی کاملاً پایدار است: نوآوریهای معماری روی هم انباشته میشوند و هر نسخه، پیچهای جدیدتری را میچرخاند.
استفاده از ابزارهای واقعی
فایل code/main.py ماشینحساب پارامتری است که اختصاصاً برای معماری DeepSeek-V3 تنظیم شده است. آن را اجرا کنید، خروجیاش را با ارقام مقاله مقایسه کنید و روی گونههای فرضی مختلف به کار ببرید (مثلاً 256 متخصص در برابر 512، انتخاب 8 در برابر 16 متخصص، و رتبهی MLA برابر 512 در برابر 1024).
مواردی که باید بررسی کنید:
- تعداد کل پارامترها در مقایسه با رقم رسمی 671B.
- تعداد پارامترهای فعال در مقایسه با 37B منتشرشده.
- حافظهی کش کلید-مقدار در زمینهی 128k — مقایسهی MLA در برابر GQA.
- تفکیک اجزا در هر لایه برای مشاهدهی اینکه بودجهی پارامترها دقیقاً در کجا مصرف میشود.
خروجی این درس
این درس فایل outputs/skill-deepseek-v3-reader.md را تولید میکند. با دادن هر مدلی از خانوادهی DeepSeek (چه V3، چه R1 یا هر نسخهی آتی)، معماری جزءبهجزء خوانده میشود، تکتک فیلدهای کانفیگ نام برده میشوند، تعداد پارامترها به تفکیک بخشها به دست میآیند و مشخص میشود مدل از کدامیک از نوآوریهای چهارگانهی اختصاصی DeepSeek بهره میبرد.
تمرینها
-
اسکریپت
code/main.pyرا اجرا کنید. برآورد ماشینحساب از کل پارامترها را با رقم رسمی 671B مقایسه کنید و ببینید این اختلاف از کجا ناشی میشود. بخش 2 مقالهی اصلی، لیست کامل و دقیق این اجزا را آورده است. -
کانفیگ را طوری تغییر دهید که رتبهی MLA بهجای 512 برابر با 256 باشد. حجم کش کلید-مقدار حاصل را در زمینهی 128k توکن محاسبه کنید. این کار چند درصد صرفهجویی میآورد و چه بهایی روی قدرت بیانِ هر سر میگذارد؟
-
سازوکار مسیریابی DeepSeek-V3 (شامل 256 متخصص و انتخاب 8 مورد) را با حالتی فرضی شامل 512 متخصص و انتخاب 8 مورد مقایسه کنید. پارامترهای کل افزایش مییابند، اما پارامترهای فعال ثابت میمانند. این ظرفیت متخصصان اضافه از نظر تئوری چه فایدهای دارد و در زمان استنتاج چه هزینهای به بار میآورد؟
-
بخش 2.1 گزارش فنی DeepSeek-V3 (سند arXiv:2412.19437) در مورد MLA را مطالعه کنید. در سه جمله توضیح دهید چرا ماتریسهای بازگشایی فشردگی K و V را میتوان به منظور کارایی در زمان استنتاج، درون ضرب ماتریسی بعدی «ادغام» کرد.
-
مدل DeepSeek-V3 برای بیشتر عملیاتها از آموزش FP8 استفاده میکند. میزان صرفهجویی حافظه در حالت FP8 در مقایسه با BF16 برای ذخیرهسازی 671B وزن را به دست آورید. این صرفهجویی چه تأثیری روی بودجهی آموزش با 14.8T توکن دارد؟
اصطلاحات کلیدی
| اصطلاح | در گفتوگوها چه میگویند | معنای دقیق فنی |
|---|---|---|
| MLA | «اتنشن چندسر نهفته» | فشردهسازی K و V در یک فضای نهفتهی رتبهپایین مشترک (kv_lora_rank، معمولاً 512) و بازگشایی آن برای هر سر بهصورت درجا؛ کش کلید-مقدار فقط همین بردار نهفته را ذخیره میکند |
| kv_lora_rank | «بعد فشردگی MLA» | اندازهی بردار نهفتهی مشترک برای K و V؛ در DeepSeek-V3 برابر با 512 است |
| First k dense layers | «لایههای اولیه متراکم میمانند» | چند لایهی ابتدایی مدلهای MoE از مسیریاب MoE صرفنظر میکنند و برای پایداری بیشتر، لایهی متراکم MLP را اجرا میکنند |
| num_experts_per_tok | «مسیریابی Top-k» | تعداد متخصصان مسیریابیشدهای که برای هر توکن فعال میشوند؛ در DeepSeek-V3 برابر 8 است |
| Shared experts | «متخصصان همیشهروشن» | متخصصانی که بدون توجه به خروجی مسیریاب، همهی توکنها را پردازش میکنند؛ DeepSeek-V3 دارای 1 متخصص مشترک است |
| Auxiliary-loss-free routing | «موازنهی بار با تنظیم بایاس» | تنظیم مقادیر بایاس برای هر متخصص در طول آموزش جهت متوازن نگهداشتن بار، بدون اینکه نیازی به اضافه کردن تابع زیان باشد |
| MTP module | «سر پیشبینی اضافه» | بلوک ترنسفورمر که را از روی و پیشبینی میکند؛ آموزش متراکمتر و ارائهی پیشنویس رایگان برای کدگشایی حدسی |
| DualPipe | «پایپلاین دوطرفه» | زمانبندی آموزش که محاسبات forward و backward را با ارتباطات همهبههمهی بین نودها همپوشانی میکند |
| Active parameter ratio | «تنکسازی» | نسبت پارامترهای فعال به کل پارامترها (active_params / total_params)؛ این نسبت در DeepSeek-V3 به 5.5% میرسد |
| FP8 training | «آموزش 8 بیتی» | ذخیرهسازی و انجام بسیاری از عملیات محاسباتی حین آموزش در قالب FP8؛ تقریباً حافظه را در مقایسه با BF16 نصف میکند و افت کیفیت بسیار ناچیزی دارد |
برای مطالعهی بیشتر
- DeepSeek-AI — گزارش فنی DeepSeek-V3 در arXiv:2412.19437 — مستندات کامل معماری، آموزش و نتایج ارزیابی
- کارت مدل DeepSeek-V3 روی Hugging Face — فایلهای پیکربندی و نکات استقرار
- مقالهی DeepSeek-V2 در arXiv:2405.04434 — مدل پیشین که برای نخستین بار ساختار MLA را معرفی کرد
- مقالهی DeepSeek-R1 در arXiv:2501.12948 — نسخهی بعدی استدلالمحور بر پایهی معماری V3
- اتنشن تنک محلی یا Native Sparse Attention در arXiv:2502.11089 — مسیر آیندهی اتنشن در خانوادهی DeepSeek
- مخزن DualPipe — مرجع الگوریتم زمانبندی آموزش DualPipe
