Phase 10: LLMs from Scratch

توجه به "تخفیف" بومی (DepSeek NSA)

در توکن های 64K، توجه 70-80 درصد از تاخیر رمزگذاری را می خورد. هر آزمايشگاهي که مدل باز داره نقشه اي داره که درستش کنه NSA DeepSeek (ACL 2025 بهترین مقاله) یکی از آنها است که گیر کرده است: سه شاخه موازی توجه توکن های دانه های خام فشرده شده، توکن های دانه های نازک به صورت انتخابی حفظ شده و پنجره های شیفت برای زمینه محلی با ترکیب از طریق یک دروازه آموخته شده. این دستگاه با خط سخت افزاری (دوست به هسته) ، آموزش بومی (در آموزش پیش از انجام کار می کند، در نتیجه گیری غیر قابل استفاده است) و در 64k کد گذاری سریع تر از FlashAttention در حالی که با کیفیت توجه کامل مطابقت دارد یا می تواند آن را شکست دهد. این درس سه شاخه را از انتها به انتها می سازد و نشان می دهد که چرا کمیابیت از انتها به انتها قابل تشخیص است.

Type: Build

Languages: Python (stdlib)

Prerequisites: Phase 7 · 12 (KV cache, flash-attention), Phase 7 · 15 (attention variants), Phase 10 · 16 (differential attention)

Time: ~60 minutes

اهداف یادگیری

  • سه بخش توجه سازمان اطلاعات و اطلاعاتي که هرکدومشون گرفته
  • توضیح دهید که چرا NSA "درسی قابل آموزش" است در حالی که روش های توجه کمیاب قبلی فقط نتیجه گیری می شد.
  • محاسبه صرفه جویی در محاسبه توجه NSA در مقابل توجه کامل در زمینه 64k به عنوان تابع اندازه بلوک فشرده سازی و انتخاب top-k.
  • ترکیب سه شاخه را در stdlib Python در یک دنباله مصنوعی کوتاه پیاده سازی کنید و رفتار وزنه های گاتینگ را بررسی کنید.

مشکل

توجه کامل در طول دنباله N هزینه ها O(N^2)زمان وO(N)KV cache per layer. در توکن های 64k، اعداد باندبندی محاسبه و حافظه فاجعه بار هستند. تخمین نظری اندازه گیری شده از مقاله NSA: توجه 70 تا 80 درصد از تمام تاخیر کد را در 64k تشکیل می دهد. همه چیز در جریان پایین TTFT، توکن ها / ثانیه، هزینه در هر میلیون توکن توسط هزینه توجه تحت سلطه قرار می گیرد.

توجه کم جواب واضحه تلاش های قبلی به دو سطل تقسیم می شوند. کم بودن الگوی ثابت (چاپش پنجره، قدم، بلاک محل) اطلاعات را از بین می برد و در وظایف بازپس گرفتن در فاصله طولانی شکست می خورد. زمان کمکی (KV cache pruning، H2O، StreamingLLM) به یک مدل که قبلاً در مورد توجه کثافت آموزش دیده است اعمال می شود و تنها بخش کوچکی از سرعت بالقوه را به دست می آورد زیرا از مدل هرگز خواسته نشده است تا اطلاعات را از طریق الگوی کمکی هدایت کند.

توجه Sparse Native (یوان و همکاران، DeepSeek + PKU + UW، ACL 2025 بهترین مقاله، arXiv:2502.11089) هر دو را انجام می دهد: یک الگوی Sparse که مدل در طول پیش از آموزش یاد می گیرد، به عنوان یک الگوریتم محور متصل شده که در واقع صرفه جویی حساب را در نتیجه می دهد. دو سال از حالا، NSA یا یک نسل مستقیم توجه پیش فرض در هر مدل مرزی طولانی است.

مفهوم

سه شاخه موازی

برای هر سوال، NSA سه بار توجه را به سه دیدگاه مختلف از حافظه کش KV اجرا می کند:

  1. Compressed branch.توکن ها به بلوک های اندازه ای گروه بندی می شوندlهر بلوک از طریق یک MLP کوچک آموخته شده به یک توکن خلاصه واحد فشرده می شود. سوال در این توکن های فشرده شده انجام می شود و یک دیدگاه ناخالصی از کل ترتیب را به دست می آورد.
  1. Selected branch.با استفاده از نمره توجه از شاخه فشرده شده، بلوک های بالا-ک که برای سوال فعلی مرتبط هستند شناسایی می شوند. توکن های نخودی (غیر فشرده شده) از آن بلوک ها خوانده می شوند و سوال بر روی همه آنها حضور دارد. توجه شاخه فشرده را به عنوان سیگنال مسیریابی برای انتخاب تصور کنید.
  1. Sliding-window branch.سوال به تازگي ها پاسخ ميدهWاین شاخه الگوهای کوتاه مدت ساختاری سنگین (تخنیک، کورفرنس محلی) را که دو مورد دیگر ممکن است از دست بدهند، ضبط می کند.

سه خروجی شاخه از طریق یک دروازه یادگیری در هر موقعیت ترکیب می شوند:

out = g_cmp * out_cmp + g_sel * out_sel + g_win * out_win

g_cmp, g_sel, g_winآنها مجبور نیستند به 1 جمع شوند آنها می توانند شاخه ها را به طور مستقل وزن کنند.

چرا این "درسی قابل آموزش" است

مرحله انتخاب (بلاک های بالا-ک) متمایز است. عملیات متمایز جریان گرادینت را شکسته است. کار توجه کمی پیش از آن یا از طریق انتخاب (تدریس محدود کننده) به عقب می رود یا از آرامش های مداوم استفاده می شود که در نتیجه گیری کمکی واقعی را نمی دهد.

NSA از این موضوع اجتناب می کند: توجه به شاخه های فشرده یک توجه قابل تفاوتی در کل دنباله است. عملیات top-k فقط از بالاترین امتیاز توجه از شاخه فشرده برای انتخاب بلوک های ذره ای برای بارگذاری استفاده می کند. گرادینت ها از طریق نمرات شاخه فشرده (که هم بر خروجی فشرده و هم منطق انتخاب تأثیر می گذارند) جریان می یابند و سهم بلوک های انتخاب شده به خروجی نهایی نیز قابل تفاوت است. غیر قابل تشخیصtop_kاین عملیات در نمودار محاسباتی پیش رو بدون کار است فقط کنترل می کند که کدام بلوک ها از حافظه بارگذاری می شوند.

این دلیل است که NSA می تواند در آموزش های پیش از پایان استفاده شود. مدل یاد می گیرد تا اطلاعات را از طریق سه شاخه به طور مشترک هدایت کند، و یک الگوی نادر را تولید کند که در نتیجه در واقع سرعت وعده داده شده را ارائه می دهد.

هسته های هماهنگ با سخت افزار

هسته NSA برای سلسله مراتب حافظه GPU مدرن طراحی شده است. هسته سوالات توسط گروه های GQA (لپ بیرونی) بارگذاری می شود، بلوک های KV نادر را در هر گروه (لپ داخلی) جمع می کند و توجه را به SRAM هدایت می کند. از آنجا که هر گروه جستجو بلوک های انتخاب شده را می بیند (انتخاب هر گروه جستجو است، نه هر سر سوال) ، بار KV در سراسر گروه کاهش می یابد. شدت ریاضی بالا باقی می ماند.

این مقاله گزارش می دهد که هسته های Triton 9 برابر سریعتر از FlashAttention در 64k decodes اجرا می شوند، با افزایش نسبت سرعت با طول دنباله.

بودجه ی محاسبات

بذارNطول دنباله باشد.lاندازه بلوک فشرده سازیkتعداد انتخاب بالا k، wپنجره پرتابbاندازه بلوک انتخاب شده (معمولا برابر است l)

  • شاخه فشرده شده: O(N/l)کلید ها در هر سوال، پس O(N * N / l)کل
  • شاخه انتخاب شده: O(k b)کلید ها در هر سوال، پس O(N k * b). .
  • شاخه شتاب: O(w)کلید ها در هر سوال، پس O(N * w). .

کل: O(N (N/l + kb + w)). .

باN = 64k, l = 64, k = 16, b = 64, w = 512: هزینه هر درخواست1000 + 1024 + 512 = 2536 keys. توجه کامل64000 keys. 25 برابر کاهش محاسبه

باN = 128k, l = 64, k = 16, b = 64, w = 512: هزینه هر درخواست2000 + 1024 + 512 = 3536 keys. توجه کامل128000 keys.36x کاهش سود با طول دنباله رشد می کند، که این کل نکته است.

چطور مقایسه میشه

MethodDifferentiableReal inference speedupLong-range recall
Sliding window onlyyesyesfails
Strided / block-sparseyesyespartial
KV pruning (H2O, StreamingLLM)N/A (inference-time)yespartial
MoBA (Moonshot)partialyesgood
NSAyes (natively)yes (9x at 64k)matches full attention

MoBA (Moonshot, arXiv:2502.13189) همزمان منتشر شد و رویکرد مشابهی از سه تا بهتر از یک را اتخاذ می کند، با استفاده از اصل MoE برای بلوک های توجه. NSA و MoBA دو معماری برای آموزش پیش از زمینه طولانی 2026 شناخته شده اند.

آن را بسازید

code/main.pyسه شاخه را بر روی یک ردیف مصنوعی کوتاه اجرا می کند و نشان می دهد:

  • MLP فشرده سازی (یک خط پایه متوسط ساده برای شفافیت آموزشی استفاده می شود؛ NSA واقعی از یک MLP آموخته استفاده می کند).
  • انتخاب بلوک بالا توسط نمرات شاخه فشرده هدایت می شود.
  • توجه پنجره ي پرتابي در آخرwتوکن ها
  • ترکیب بند شده
  • يه چاپ حسابي که با توجه کامل مقایسه ميشه

مرحله اول: توکن ها را به بلوک ها فشرده کنید

pythondef compress(K, l):
    n = len(K)
    n_blocks = (n + l - 1) // l
    out = []
    for b in range(n_blocks):
        start, end = b * l, min((b + 1) * l, n)
        block = K[start:end]
        summary = [sum(row[d] for row in block) / len(block) for d in range(len(K[0]))]
        out.append(summary)
    return out

مرحله دوم: توجه به شاخه های فشرده

توجه نرم حداکثر سوال را در برابر کلید های فشرده اجرا کنید. امتیازات شاخه فشرده دو برابر به عنوان سیگنال برای انتخاب top-k است.

مرحله 3: انتخاب بلوک بالا

شاخص هاي kبالاترين نمره بلوک هاي فشرده شده را بارگذاری كنيد تا توکن هاي غير فشرده اصلي را از اون بلوك ها بارگذاری كنيد و به آنها توجه كنيد

مرحله 4: توجه پنجره های شیفت

آخرين رو بردارwتوکن ها و توجه استاندارد را در برابر آنها اجرا کنید.

مرحله 5: دروازه + ترکیب

یک MLP کوچک در سوال سه وزن دروازه را تولید می کند. خروجی نهایی مجموعه وزن شده سه خروجی شاخه است.

مرحله 6: شمارش حساب

تعداد کلید های مورد نظر در هر سوال برای هر شاخه و کل را چاپ کنید.N. (تمام توجه) در يک توکن 1024 مصنوعي باl = 32, k = 4, w = 128، اين اِس اِن اِس مي دونه32 + 128 + 128 = 288کلید های هر سوال در مقابل 1024 برای توجه کامل 3.5 برابر کمتر است.

ازش استفاده کن

NSA در خط لوله آموزش های پیش از دوره طولانی DeepSeek ارسال می کند. وضعیت ادغام در دسته بندی های نتیجه گیری عمومی از آوریل 2026:

  • DeepSeek internal: وزن های بومی، منتشر شده از NSA یا جانشین آن DSA (Depseek Sparse Attention) استفاده می کنند.
  • vLLM: پشتیبانی آزمایشی NSA در حال توسعه برای وزن های DeepSeek-V3.x.
  • SGLang: شاخص های مرجع NSA منتشر شده؛ مسیر تولید به دنبال vLLM است.
  • llama.cpp / CPU: پشتیبانی نمی شود؛ هزینه های عمومی تجزیه هسته در تولید CPU ارزش آن را ندارد.

چه وقت بايد با NSA تماس بگيرم:

  • پیش از آموزش یا ادامه آموزش، با هدف برقراری یک برنامه با بیش از 64 هزار نفر با بودجه محاسباتی جدی.
  • بازيچه هاي دوربين ديپ سيك، وزن هاي اصلي اين اس اي

چه وقت:

  • بدون آموزش ادامه دار نمي توني اين اس اي رو تعديلي کني
  • .تعداد تحت 16 هزار دلار .بالغ سه شاخه بر پس انداز ها غلبه ميکنه
  • چت تعاملي دسته 1، سود هاي رمزگشایی حساس به تاخير، ولي فقط در مواقيع بلند

-باده

این درس به ما کمک می کندoutputs/skill-nsa-integrator.md. با توجه به مشخصات پیش از تمرین در طول زمینه، این یک برنامه ادغام NSA را تولید می کند: اندازه بلوک فشرده سازی، top-k، پنجره شیفت، عرض دروازه MLP، انتخاب هسته و ارزیابی های محدودی در طول زمینه که تغییر معماری را توجیه می کند.

تمرینات

  1. فرار کنcode/main.py. بر روي يک سيستميتک 1024 توکن(l, k, w)در سه پیش تنظیم و شمارش حساب چاپ. تعیین پیش تنظیم که کمترین تعداد کلید را در هر جستجو به دست آورد و در حال حفظ 95% یادآوری در برابر توجه کامل در یک آزمایش سوزن در سنگ شین.
  1. کمپرسور میانگین پول را با یک MLP کوچک آموخته (2 لایه، 32 پنهان) جایگزین کنید. آن را در یک کار مصنوعی آموزش دهید که سیگنال متوسط یک بلوک است. شکاف پیچیدگی را در مقایسه با خط پایه میانگین پول در داده های نگهداری شده اندازه گیری کنید.
  1. دروازه MLP را پیاده سازی کنید. این سوال را به عنوان ورودی می گیرد و سه مقیاس را خارج می کند. نشان دهید که دروازه به طور منطقی رفتار می کند: وزن تقریباً یکسانی در سوالات تصادفی، وزن سنگین در شاخه انتخاب شده زمانی که سوال به یک بلوک دور عقب می رسد.
  1. بودجه حافظه حافظه KV برای مدل 70B با قابلیت NSA را در زمینه 128k محاسبه کنید. سر KV 8، سر 128, BF16 است. با توجه کامل و به MLA مقایسه کنید (فاز 10 · 14 نشان داده شده است اعداد MLA). طول دنباله ای را شناسایی کنید که در آن NSA ذره های نازک شاخه KV حافظه کامل است.
  1. بخش 4 مقاله NSA را بخوانید (arXiv:2502.11089) و در سه جمله توضیح دهید که چرا نمرات توجه شاخه فشرده برای انتخاب top-k به جای محاسبه نمرات مسیر جداگانه استفاده می شود. پاسخ را به جریان گرادینت وصل کنید.

اصطلاحات کلیدی

TermWhat people sayWhat it actually means
Compressed branch"Coarse view"Attention over block-averaged keys that provides global context in O(N/l) keys per query
Selected branch"Top-k blocks"Fine-grained attention over the k blocks with highest compressed-branch scores
Sliding window"Local context"Attention over the last W tokens for short-range patterns
Native trainability"Pre-train with the sparsity on"The sparsity pattern is learned during pre-training, not bolted on at inference
Compression block size l"Group size for coarse view"How many tokens get merged into one summary; 32-64 typical
Top-k"Blocks to keep"Number of compressed blocks whose uncompressed tokens get read; 16 typical
Sliding window W"Local attention radius"Typically 512; shorter hurts local coherence, longer wastes compute
Branch gate"How to mix the three"Per-position MLP output that weights the three branches' contributions
Hardware alignment"Kernel-friendly sparsity"Sparse pattern chosen so that the actual GPU kernel achieves the theoretical speedup
DSA"NSA's successor"Deepseek Sparse Attention, the architecture that followed NSA in DeepSeek's lineage

خواندن بیشتر

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.