نکته جالب در مورد مکانیزمهای توجه «انقلابی» این است که همه طوری سر تکان میدهند که انگار شعبدهبازی میبینند، سپس بیسروصدا امیدوارند کسی از آنها نخواهد که این تردستی را توضیح دهند. DeepSeek Sparse Attention (DSA) یکی از این تردستیها است—هوشمندانه، سریع و اگر با دقت به جزئیات نگاه کنید، در واقع بدون خواندن صدها صفحه ریاضی قابل فهم است. وعده: هوش را حفظ کن، مالیات محاسباتی را دور بریز. واقعیت: بستگی دارد، اما این بار مصالحه ها به طرز خوشایندی معقول به نظر میرسند.
بیایید رک و پوستکنده بگوییم: DSA روشی برای مدلهای زبانی بزرگ است تا فقط به چیزهایی که مهم هستند توجه کنند. نه یه جورایی. نه «شاید مرتبط باشد». این یک طرح توجه پراکنده با جزئیات دقیق است که انفجار درجه دوم ناشی از توجه کامل به خود را هرس میکند—بدون اینکه شاخهای را که مدل روی آن ایستاده است قطع کند. اگر توجه مدل قدیمی اتاقی بود که در آن هر کلمه باید با هر کلمه دیگر تماس چشمی برقرار کند، DSA آن را به یک مهمانی تبدیل میکند که در آن افراد درونگرا رشد میکنند: مسیرهای مستقیم، انحرافهای بیمعنی کمتر و نویز بسیار کمتر.
DeepSeek Sparse Attention واقعاً چیست؟
DSA یک مکانیزم توجه پراکنده است که پیچیدگی محاسباتی توجه به خود را از O(L²) به O(Lk) کاهش میدهد، که در آن L طول توالی و k تعداد اتصالات «نگهداریشده» به ازای هر توکن است—همسایههای انتخابشده، احتمالاً مرتبط. این خلاصه موضوع در یک خط است. ریاضیات کمتر، درک بیشتر: به جای اینکه هر توکن خود را با هر توکن دیگری مقایسه کند، DSA یک زیرمجموعه را انتخاب میکند—همسایهها، سرها، پنجرهها، «لنگرها»، هر اکتشافی یا سیاست آموختهشده که برای مدل منطقیتر باشد—بنابراین وقت خود را روی پرزها تلف نمیکنید.
اگر فکر میکنید این آشنا به نظر میرسد، همینطور است: توجه پراکنده چیز جدیدی نیست. ما Longformer، BigBird، هستههای بلوک-پراکنده و دهها ترکیب «محلی + جهانی» داشتهایم. مشکل معمول این است که الگوهای پراکنده یا فراخوانی را لو میدهند (آنها سوزن را در انبار کاه گم میکنند)، یا پیادهسازی کارآمد آنها آنقدر دردسرساز است که هر آنچه از نظر تئوری صرفهجویی میکنید، دوباره به عنوان سربار هسته ظاهر میشود. ادعای شهرت DSA دو جنبه دارد: اول، الگوی پراکندگی دقیقتر و سازگارتر از پراکندگی بلوکی معمولی است. دوم، به صورت سرتاسری به گونهای پیادهسازی شده است که در واقع روی پشتههای استنتاج واقعی کار میکند—از جمله vLLM.
شهود: نمایه ساز رعد و برق، نه ماشین چمن زنی
مفیدترین قیاسی که دیدهام: DSA مانند یک نمایه ساز رعد و برق عمل میکند. کل مزرعه را درو نمیکند. بلکه به سمت چیزهای مهم میرود—مانند یک ویرایشگر خوب که سه پاراگراف را خط میزند و جملهای را که خوب است نگه میدارد. این سیستم مجموعه کوچکی از اتصالات سیگنال بالا را به ازای هر توکن حفظ میکند—به عنوان مثال، top-k با نمرهدهی مرتبط—به علاوه یک ستون فقرات نازک از ساختار (پنجرههای محلی، توکنهای جهانی دورهای) بنابراین انسجام طولانی مدت به آش تبدیل نمیشود.
مهندسان به بخشی بعد از قیاس اهمیت میدهند: «مرتبط بودن» از نظر عملیاتی به چه معناست؟ نوشتههای مختلف DSA به اکتشافی اشاره میکنند که کلیدهای کاندید را بر اساس نزدیکی و اهمیت قبلی انتخاب میکند، و به دنبال آن توجه متراکم در بین آن کاندیدها انجام میشود. این جادو نیست؛ بلکه تریاژ است. شما همسایههای واضح را نگه میدارید (زمینه محلی تقریباً همیشه برای زبان مفید است)، لنگرهای جهانی را میپاشید و به طور انتخابی توجه را به توکنهای امیدوارکننده خارج از پنجره هدایت میکنید. اثر خالص: فضای جستجو را بدون فلج کردن فراخوانی کاهش میدهید. وقتی این کار درست انجام شود، کمتر شبیه هرس کردن و بیشتر شبیه رفتار مناسب است.
ریاضیات، نسخه مینیمالیستی
- توجه کامل به خود: O(L²d)، که d بعد سر است.
- DSA: O(Lkd). برای k ثابت، این تقریباً خطی در L است. این برای زمینههای طولانی مهم است. در 128K توکن، صورتحساب GPU شما از شما تشکر میکند.
- این مدل یک مجموعه کاندید پویا به ازای هر توکن را حفظ میکند. شما هزینه انتخاب کاندید و همچنین توجه واقعی در بین آنها را میپردازید. اگر انتخاب کاندید برداری و آگاه به حافظه پنهان باشد، شما برنده میشوید. در غیر این صورت، شما در حال فشردن یک بادکنک هستید.
این تنش در تمام روشهای پراکنده وجود دارد: مجانبها را کاهش دهید، اما دوباره آن را در جابجایی داده و سربار راهاندازی هسته خود وارد نکنید. پیادهسازیهای اطراف DSA بر پشتیبانی در سطح هسته و یکپارچهسازی زمانبندی تأکید دارند، و پستهای اخیر نشان میدهند که پشتیبانی vLLM دقیقاً برای واقعی کردن این در تنظیمات استقرار در حال انجام است.
چرا DSA اکنون مهم است؟
زیرا زمینه طولانی جنگ اندازه صفحه نمایش جدید است. همه 200K توکن و بالاتر میخواهند—اسکریپتها، پایگاههای کد، PDFهایی به اندازه وجدان شما. توجه درجه دوم در آن طولها برای تأخیر، توان عملیاتی و هزینه غیرقابل قبول است. میتوانید آن را با تکهتکه کردن و بازیابی هوشمندانه جعل کنید، اما این مانند نصب یک قفسه کتاب در ماشین خود است زیرا صندوق عقب شما مدام پر میشود. استدلال DSA سادهتر است: مرحله توجه واقعی را احمقانه گران نکنید.
یک مزیت جانبی ثبات است. توجه کامل به توالیهای بسیار طولانی میتواند از نظر عددی حساس و از نظر حافظه پر سر و صدا باشد. توجه پراکنده مجموعه کاری را کوچک میکند و احتمال «فراموش کردن» مدل را با غرق شدن در نمرات جفتی ضعیف کاهش میدهد. شما یک ستون فقرات از ساختار و یک برش کوچک از سازگاری را در بالا نگه میدارید. این یک مصالحه عملی است که برای یک بار هم که شده، بیشتر شبیه یک تصمیم مهندسی است تا یک نمایش کاغذی.
DSA کجا در باغ وحش پراکنده قرار میگیرد؟
- الگوهای ثابت (پنجرههای محلی، گشادگی): سریع، اما شکننده. مراجع متقابل طولانی مدت را از دست میدهد مگر اینکه آمار شانس شما به حداکثر رسیده باشد.
- توکنهای جهانی: لنگرها را اضافه میکند. بهتر، اما مبهم. شما نمیتوانید یک «CLS» را روی همه چیز بزنید و آن را فراخوانی بنامید.
- مسیردهی از طریق سیاستهای آموختهشده: به طور بالقوه ایدهآل، از نظر عملیاتی آشفته. پیچیدگیهای آموزش و استنتاج شکننده.
- ترکیب ظریف DSA: یک مجموعه کاندید متراکم به ازای هر توکن را تنظیم کنید که محلیت، گلوبالهای ساختاریافته و انتخابهای سیگنال بالا را ترکیب میکند. نکته این نیست که باهوش باشید—این است که به طور مداوم به اندازه کافی خوب باشید که هم تأخیر و هم کیفیت شما مقیاسپذیر باشند.
عملکرد: استرداد مالیات O(L²)
پوشش تا کنون ادعا میکند که کاهش هزینههای قابل توجهی وجود دارد—«نصف کردن» هزینهها در قطعات هیجانانگیز ظاهر میشود—اما نکته عدد دقیق نیست، بلکه این است که منحنی مقیاسپذیری برای اعلانهای طولانیتر و همزمانی بالاتر به حالت زنده بودن برمیگردد.
- RAG و چت سند بیش از 100+ صفحه،
- نمایندگانی که از ابزار استفاده میکنند و دفترچه یادداشتهای طولانی را نگه میدارند،
…DSA محاسبات و حافظه به ازای هر توکن را کاهش میدهد. میتوانید زمینه را به جایی که واقعاً مفید است فشار دهید به جای اینکه رژهای از هکهای پنجرهای را به صحنه ببرید. پشتیبانی اولیه vLLM نشان میدهد که این فقط زیور آلات نیمکت نیست—در جایی که مردم مدلها را مستقر میکنند اجرا میشود.
نکات احتیاطی (معروف به چرا هیچکس نباید روز سهشنبه اعلام پیروزی کند)
- انتخاب کاندید رایگان نیست. اگر روال انتخاب از روی خطوط حافظه پنهان عبور کند یا شما را به پینگپنگ CPU-GPU بکشاند، بردهای پراکندگی شما از بین میروند.
- k یک بودجه است، نه یک حق ذاتی. خیلی کوچک است و شما مراجع متقابل مهم را حذف میکنید. خیلی بزرگ است و دوباره به سمت متراکم شدن میروید.
- عدم تطابق آموزش در مقابل استنتاج. اگر مدل شما متراکم آموزش دیده است و شما آن را به صورت پراکنده در استنتاج اجرا میکنید، انتظار رانش کیفیت را داشته باشید. قویترین نتایج DSA زمانی ظاهر میشوند که پراکندگی بخشی از رژیم غذایی آموزشی باشد، نه فقط یک چاشنی در زمان سرو.
- عجیب و غریب دم دراز. الگوهای پراکنده گاهی اوقات در تماس برگشتی غیرمنتظره 30K توکن بعدتر، اشتباه میکنند. ترکیبات خوب با گلوبالهای دورهای یا لنگرهای آموختهشده، محافظت میکنند.
اگر اینها شبیه ساختن یک فهرست خوب برای یک کتاب به نظر میرسند، به این دلیل است که همینطور است. خیلی کوتاه است و نمیتوانید چیزی پیدا کنید؛ خیلی طولانی است و دوباره فقط خود کتاب است.
DSA احتمالاً چگونه انتخاب میکند که چه چیزی را نگه دارد
جزئیات بر اساس پیادهسازی متفاوت است، اما دفترچه راهنما به این صورت است:
- پنجره محلی: همسایهها را در یک پنجره کشویی نگه دارید—بیشتر ساختار زبان محلی است. 2) توکنهای دورهای/جهانی: «چراغهای راهنما» منظمی را وارد کنید که همیشه به صورت جهانی متصل میشوند. 3) نمرهدهی برجستگی: از سیگنالهای سبک وزن—از فعالسازیهای لایه قبلی، اهمیت ذخیرهشده یا تقریبهایی مانند شباهت top-k—برای انتخاب توکنهای دورافتاده اضافی استفاده کنید. 4) توجه متراکم: توجه را فقط بر روی اتحاد مجموعه نگهداریشده اجرا کنید. 5) در هر لایه تکرار کنید، به سرهای مختلف اجازه دهید ساختارهای مختلف را ترجیح دهند.
این ارتدوکسی نیست؛ فقط کمترین چیز شگفتانگیزی است که میتواند کارساز باشد. و ظاهراً این کار را میکند، با توجه به پشتیبانی عملیاتی که در پشتههای استنتاج مدرن فرود میآید.
DSA در مقابل تکهتکه کردن در مقابل بازیابی: زهر خود را انتخاب کنید
- تکهتکه کردن سادهلوحانه: سریع، اما احمقانه—مرزهای زمینه به صخره تبدیل میشوند. برای توان عملیاتی خوب است، برای هر چیز ظریفی بد است.
- تولید تقویتشده با بازیابی: هوشمندانهتر، اما شکننده—به این بستگی دارد که بازیاب به یاد داشته باشد که تولیدکننده بعداً به چه چیزی نیاز خواهد داشت.
- توجه پراکنده به سبک DSA: کل رشته را در زمینه نگه میدارد، با محاسباتی که در جایی که اهمیت دارد متمرکز شده است. جایگزین بازیابی نمیشود؛ بازیابی را کمتر به عصا تبدیل میکند.
راه حل صادقانه یک ترکیب است: بازیابی برای کشیدن اسناد مرتبط، توجه پراکنده برای استدلال در مورد توالیهای طولانی بدون ذوب شدن. میتوانید هر دو را بدون نفرت از صورتحساب ابری خود انجام دهید.
کیفیت: آیا هنوز میفهمد؟
سوال میلیون دلاری این است که آیا توجه پراکنده بی سر و صدا معنای بین جملات را حذف میکند یا خیر. گزارشهای اولیه برای مدلهای DeepSeek نشان میدهد که کیفیت در زمینه طولانی حفظ میشود یا بهبود مییابد زیرا مدل جرم احتمال را روی نمرات جفتی بیمعنی هدر نمیدهد. ترفند تنظیم k و ساختار جهانی است تا مدل یک ستون فقرات قابل اعتماد از طریق اعلان داشته باشد. و باز هم، آموزش با پراکندگی در حلقه مهم است—مدلها سازگار میشوند. این مانند یادگیری رانندگی با گیربکس دستی است. هنگامی که ریتم را به دست آوردید، اتوماتیک را از دست نمیدهید.
واقعیت استقرار: هستهها، حافظههای پنهان، زمانبندها
یادداشت پشتیبانی vLLM ارزش ذکر کردن را دارد: DSA فقط یک ترفند کاغذی نیست. کار واقعی روی پشتیبانی هسته و زمانبندی انجام میشود تا GPU را با تئاترهای پراکنده جمعآوری متوقف نکند. هستههای بلوک-پراکنده، عملیاتهای فیوز شده و طرحبندی دقیق حافظه پنهان KV این چیزها را میسازند یا میشکنند. بدترین نتایج در توجه پراکنده از ایدههای کاملاً منطقی که با پهنای باند حافظه و سربار راهاندازی برخورد میکنند، ناشی میشود. وقتی اینها مدیریت شوند، پراکندگی به صدا در میآید.
DSA کجا میدرخشد
- پرسش و پاسخ زمینه طولانی بر روی اسناد ساختاریافته. ترکیب محلی + چراغ راهنما بخشها و مراجع متقابل را بدون پر کردن توجه، ردیابی میکند.
- استدلال پایگاه کد. پنجرههای محلی زمینه درون فایلی را ثبت میکنند. پیوندهای دورهای/جهانی از طریق فایلها، فراخوانیهای تابع و واردات حرکت میکنند.
- نمایندگان با دفترچه یادداشت. توجه پراکنده به نماینده اجازه میدهد تا یک حافظه کاری طولانی را بدون تنزل به مزخرفات پس از صفحه پنج نگه دارد.
DSA کجا (هنوز) کار نمیکند
- اعلانات کوچک. توجه متراکم خوب است؛ سربار پراکنده ممکن است مستهلک نشود.
- شعر بسیار درهمتنیده یا اعلانهای پازل که نیاز به جهشهای سوزن در انبار کاه بدون نشانههای ساختاری آشکار دارند. شما هنوز هم میتوانید k را تنظیم کنید، اما این روش الگوها را بیشتر از معماها دوست دارد.
این آزمون برای هر یک از این تکنیکها است: آیا ابزارها را بدون تبدیل کاربران به مهندسان QA بدون مزد بهتر میکنند؟ در اجراهای من، ابزارهایی که توجه پراکنده را به خوبی ادغام میکنند—به ویژه برای چت سند و کد—کمتر دمدمی مزاج به نظر میرسند. Sider.AI در واقع در اینجا نقش دارد: وقتی مشخصات 80 صفحهای را وارد میکنید یا در یک مخزن جستجو میکنید، توانایی حفظ یک رشته طولانی و منسجم بدون توقف یا توهم در مورد صفحه 47 مهم است. بازاریابی در مورد «پراکندگی ظریف» لاف نمیزند و این خوب است. کاربران اهمیت میدهند که پاسخگو بماند، زمینه را مستقیم نگه دارد و مانند یک آخر هفته در وگاس هزینه نداشته باشد. اگر با ورودیهای بزرگ و نامرتب کار میکنید، این کلاس از ترفند توجه دقیقاً همان نوع تغییری است که در زیر پوشش ظاهر میشود که به صورت زگیل کمتر و پاسخهای سریعتر ظاهر میشود. راهنمایی عملی: اگر در حال تصمیمگیری برای استفاده از DSA هستید
- زمینه شما به طور معمول >32K توکن است: بله، آن را ارزیابی کنید.
- شما صاحب پشته استقرار خود هستید (vLLM، هستههای Triton، تنظیم حافظه پنهان KV): بله، به ویژه.
- شما با وزنهای متراکم آموزشدیده گیر کردهاید و نمیتوانید دوباره آموزش دهید: با دقت آزمایش کنید؛ پراکندگی جزئی یا پراکندگی خاص سر را در نظر بگیرید.
- حساس به تأخیر، حجم کاری بالا QPS: اینجاست که خم شدن منحنی اهمیت دارد. p95 و p99 را اندازهگیری کنید.
و لطفاً، به خاطر همه چیزهای GPU، با اعلانهای واقعی بنچمارک کنید، نه lorem ipsum مصنوعی. روشهای پراکنده بر اساس توزیعهای واقعی از ارتباط زنده میمانند یا میمیرند.
نکته فراتر: پراکندگی به عنوان سلیقه خوب
یک زیباییشناسی در این مورد وجود دارد. مدلهایی که به همه چیز به طور مساوی توجه میکنند، مانند جلساتی هستند که در آن همه صحبت میکنند. دموکراتیک به نظر میرسد، اما هیچ کاری انجام نمیدهد. حساسیت DSA سرمقالهای است: روی بخشهای جالب تمرکز کنید، یک ستون فقرات را حفظ کنید و یک بودجه را نگه دارید. اگر درسی فراتر از یادگیری ماشینی میخواهید، اینجاست. سیستمهای خوب همه کارها را انجام نمیدهند. آنها کارهای درست را به سرعت انجام میدهند.
آینده اجتناب ناپذیر: آموزش پراکنده، سرویس پراکنده
ما مدلهای بیشتری را خواهیم دید که به صورت سرتاسری با الگوهای پراکنده پخته شده آموزش داده شدهاند. اینجاست که آخرین 10-15٪ کیفیت و ثبات از آن ناشی میشود: اجازه دادن به سوگیریهای استقرایی مدل با مسیر سرویسدهی همسو شود. اگر به صورت پراکنده سرویس میدهید اما به صورت متراکم آموزش میدهید، از مدل میخواهید که در بزرگراه دنده عوض کند. میتواند کارساز باشد، اما تعجب نکنید اگر تکان بخورد.
در این میان، چارچوبها الگوهای پراکنده را قابل ترکیب خواهند کرد: پنجرههای محلی + گلوبالهای دورهای + لنگرهای آموختهشده + توکنهای آگاه به بازیابی. آن بیت آخر—بستن حلقه بین برجستگی بازیابی و برجستگی توجه—به نظر میرسد گام بدیهی بعدی است. وقتی آنچه واکشی میکنید به آنچه توجه میکنید اطلاع میدهد، از پینگپنگ بین دو سیستم نیمهکور دست میکشید.
DSA چگونه کار میکند؟ پاسخ کوتاه
- این یک مجموعه متراکم از توکنهای احتمالاً مرتبط را برای هر توکن انتخاب میکند—بیشتر محلیها، برخی گلوبالها، برخی انتخابهای هوشمند.
- توجه را فقط بر روی آن مجموعه اجرا میکند، محاسبات را از درجه دوم به تقریباً خطی در طول زمینه کاهش میدهد.
- بر هستههای دقیق و طرحبندی حافظه پنهان تکیه میکند تا صرفهجوییهای نظری به صورت بردهای تأخیر واقعی ظاهر شوند.
- با حفظ ساختار و اتصال جهانی کافی که مراجع طولانی مدت از دست نروند، کیفیت را حفظ میکند.
همین است. بدون بخور، بدون ورد. فقط سلیقه خوب اعمال شده در مورد آنچه باید به آن توجه کرد.
پایان غافلگیرکننده (زیرا همیشه یکی وجود دارد)
هر ترفند هوش مصنوعی در نهایت لحظه ناامیدی خود را دارد. توجه پراکنده چیزی مهم را از دست خواهد داد، احتمالاً در اعلانی که توسط یک منتقد باهوش ساخته شده است که اصرار دارد مدل باید بند سوم را به بند سی و هفتم در سراسر زبانها در حالی که یک امضای تابع را شعبدهبازی میکند، متصل کند. خوب. اما بیشتر کارهای واقعی شعر-اسلش-بنچمارک نیستند—بلکه خرد کردن متن، کد و حقایق است. برای آن، DSA فقط یک ایده خوب نیست. تفاوت بین مدلی است که وانمود میکند زمینه شما را میخواند و مدلی که واقعاً میتواند.
و اگر بتوانید این کار را بدون سوزاندن سوراخی در بودجه ابری انجام دهید؟ این یک ترفند نیست. این پیشرفت است.
سوالات متداول
Q1: DeepSeek Sparse Attention (DSA) چگونه به زبان ساده کار میکند؟
DSA توجه را به توکنهایی که مهم هستند محدود میکند—بیشتر متن نزدیک، چند لنگر جهانی، به علاوه یک لیست کوتاه از انتخابهای سیگنال بالا. به جای مقایسههای O(L²)، O(Lk) را اجرا میکند، کیفیت را با حفظ ساختار و در عین حال کاهش محاسبات حفظ میکند.
Q2: آیا DSA برای زمینه طولانی بهتر از تکهتکه کردن یا بازیابی است؟
DSA همه چیز را در یک رشته نگه میدارد در حالی که محاسبات را در جایی که اهمیت دارد متمرکز میکند. تکهتکه کردن صخره ایجاد میکند و بازیابی میتواند فراموشکار باشد. بهترین تنظیمات بازیابی را برای واکشی با DSA برای استدلال در سراسر زمینه طولانی بدون مالیات درجه دوم ترکیب میکنند.
Q3: آیا DSA در مقایسه با توجه متراکم به کیفیت مدل آسیب میرساند؟
اگر شما با در نظر گرفتن پراکندگی آموزش دهید و سرویس دهید (و k را معقولانه تنظیم کنید)، کیفیت حفظ میشود—اغلب برای زمینههای طولانی بهتر است زیرا مدل در جفتهای کم ارزش غرق نمیشود. سرویس پراکنده بر روی وزنهای متراکم آموزشدیده میتواند رانش کند، بنابراین با اعلانهای واقعی بنچمارک کنید.
Q4: کدام حجمهای کاری بیشتر از DSA سود میبرند؟
پرسش و پاسخ سند زمینه طولانی، پیمایش پایگاه کد و دفترچه یادداشت نماینده. هر کجا که طول توالی متورم شود و توجه متراکم به تأخیر، فشار حافظه و افزایش هزینهها تبدیل شود.
Q5: آیا vLLM از DSA برای استقرار پشتیبانی میکند؟
بله—پستهای اخیر نشان میدهند که vLLM از توجه پراکنده دقیق DeepSeek پشتیبانی میکند، با کار هسته و زمانبندی برای اینکه آن را در خطوط لوله تولید عملی کند.