تصور کنید یک ابرماشین دارید، اما دادهها در جادهای شلوغ و قدیمی گیر کردهاند و پردازنده شما بیشتر از آنکه فکر کند، منتظر میماند. اجرای یک مدل زبانی عظیم روی یک سرور خانگی اغلب شبیه راندن یک ماشین سوپر اسپرت در محدوده مدرسه است؛ شما قدرت خام VRAM را دارید، اما دادهها نمیتوانند با سرعت کافی بین GPUها جابجا شوند تا پردازنده را تغذیه کنند. اگر از سختافزارهای قدیمی یا بهاصطلاح «زبالههای الکترونیکی» برای اجرای مدلهای زبانی استفاده میکنید، احتمالاً با همین بنبست سرعت مواجه هستید. این چالشها در واقع ادامه مسیر تلاشاتی است که برخی توسعهدهندگان برای ساخت مرکز دادههای خانگی با استفاده از ضایعات الکترونیک آغاز کردهاند تا دسترسی به سختافزار قدرتمند را دموکراتیزه کنند.
در ۲۰ اوت ۲۰۲۶، تحلیل فنی دقیقی در وبسایت jdagostino.github.io منتشر شد که روش شکستن این گلوگاه را از طریق رمزگشایی گمانهزنانه (Speculative Decoding) و تنظیمات سطح پایین سیستم توضیح میدهد. اکثر علاقهمندان به هوش مصنوعی در خانه، سرورهایی میسازند که با ترکیبی از سختافزارهای موجود است؛ نتیجه این است که سیستم «محدود به حافظه» (Memory-bound) میشود. در این حالت، واحد پردازش گرافیکی (GPU) — شبیه آشپزی که ابزارش آماده است اما مواد اولیه دیر میرسد — زمان بیشتری را صرف انتظار برای بارگذاری وزنهای مدل از حافظه ویدیویی (VRAM) میکند تا انجام محاسبات ریاضی. این موضوع بهویژه در سختافزارهای رده پایین یا قدیمی که رابطهای ارتباطی بین GPUها کند یا منسوخ شدهاند، مشهود است.
تصور کنید GPUهای شما مانند تیمی از آشپزها هستند. در یک ساختار استاندارد، تنها یک آشپز میتواند در لحظه کار کند، در حالی که بقیه بیکار ایستادهاند و منتظرند تا آشپز قبلی بخش خود از دستور پخت را تمام کند. این پردازش سریالی دلیل اصلی این است که افزودن GPUهای بیشتر اغلب منجر به افزایش سرعت پاسخدهی برای یک کاربر واحد نمیشود.
مکانیسم توجه و توکنها
برای درک این مشکل باید با مدل ترنسفورمر (Transformer) آشنا شویم که در مقاله بنیادین Attention is All You Need (Vaswani et. al., 2017) معرفی شد. این مدلها زبان را به صورت توکن (Token) — تکههای کوچکی از متن، مثل برشهای یک کیک طولانی که مدل تکهتکه میخورد، به جای حروف تکی — پردازش میکنند. همین دلیل است که مدلهای اولیه در پاسخ به سوالات سادهای مثل «حرف R چند بار در کلمه raspberry تکرار شده است» دچار مشکل میشدند.
وقتی یک مدل توکنی را تولید میکند، صرفاً محتملترین کلمه بعدی را انتخاب نمیکند؛ بلکه یک توزیع احتمالی ایجاد کرده و از میان آن نمونهبرداری میکند. این فرآیند شامل یک لایه ورودی، چندین لایه پنهان و یک لایه خروجی است. «مکانیزم توجه» به مدل اجازه میدهد تا کل متن ورودی (Prompt) را به طور همزمان بررسی کند تا روابط بین توکنها را تعیین نماید.
برخلاف زنجیرههای مارکوف که توکن جدید را فقط بر اساس توکن قبلی تولید میکنند، ترنسفورمر کل متن توکنبندی شده را میخواند و آن را به یک بردار معنایی (Embedding Matrix) تبدیل میکند. هر توکن به برداری تبدیل میشود که طول آن برابر با بعد پنهان هر لایه است. سپس مدل برای هر توکن، ضربهای ماتریسی عظیمی را در هر لایه به صورت سریالی انجام میدهد تا در نهایت یک توکن جدید نمونهبرداری شود و این چرخه تکرار گردد.
برای تولید هر تک توکن، کامپیوتر باید کل متن زمینه (Context) و تکتک وزنهای مدل را بخواند. برای مدلی مثل Gemma4-31B، این یعنی بارگذاری ۳۱ میلیارد وزن در ۶۰ لایه. چون سرعت خواندن این وزنها از VRAM بسیار بیشتر از زمان انجام محاسبات ریاضی است، تولید توکن توسط پهنای باند حافظه محدود میشود، نه قدرت پردازشی. به همین دلیل است که صنعت اکنون با کمبود حافظه مواجه است و به سمت حافظههای با پهنای باند بالا (HBM) برای GPUهای مراکز داده حرکت میکند.
معماری ترکیب خبرهها (MoE)
با رشد مدلها، سرعت تولید توکن به محدودیتهای عملی میرسد. معماری ترکیب خبرهها (Mixture of Experts یا MoE) با هدایت توکنها به تنها بخشی از وزنهای مدل، این مشکل را حل میکند. در حالی که یک مدل ممکن است صدها میلیارد وزن داشته باشد، برای هر توکن تنها کسری از آنها «فعال» میشوند.
به عنوان مثال، مدل DeepSeek V4 Flash دارای ۲۸۴ میلیارد وزن (284B) است، اما برای هر توکن تنها ۱۳ میلیارد وزن (A13B) بارگذاری و پردازش میشوند. با این حال، این «خبرهها» بر اساس موضوع (مثلاً یکی برای پایتون و یکی برای زبان آلمانی) تخصصی نشدهاند؛ بلکه اساساً تصادفی یا غیرقابل پیشبینی هستند. چون مدل نمیتواند پیشبینی کند که برای توکن بعدی به کدام خبره نیاز دارد، تمام ۲۸۴ میلیارد وزن همچنان باید در VRAM سریع حضور داشته باشند تا سرعت حفظ شود. MoE سرعت تولید را افزایش میدهد اما نیاز به VRAM را به شدت بالا میبرد.
کالبدشکافی گلوگاه سختافزاری
در این آزمایش از چهار کارت AMD Radeon Pro V620 روی مادربوردی با استاندارد قدیمی PCIe 3.0 استفاده شده است. به دلیل نبود رابطهای پرسرعت مثل NVLink انویدیا، Infinity Fabric ایامدی یا Xe Link اینتل، دادهها مجبور بودند از یک گذرگاه PCIe شلوغ عبور کنند. برای درک بهتر اینکه چگونه سختافزارهای مدرن این ترافیک داده را مدیریت میکنند، میتوان به بررسی تفکیک وظایف در هستههای تخصصی GPUهای انویدیا نگاهی انداخت تا تفاوت میان معماریهای مصرفکننده و صنعتی مشخص شود.
بررسی دستور lspci نشان داد سختافزار با سرعت 8GT/s و پهنای x8 کار میکند که هر دو مقدار نسبت به توان واقعی کارتها کاهش یافته بودند. این وضعیت شبیه به ترافیک سنگین اتوبانهای لسآنجلس است. در مقابل، یک کارت حرفهای مثل AMD Instinct MI210 سه برابر پهنای باند حافظه بیشتر و یک رابط اتصال ویژه برای Infinity Fabric دارد، هرچند قیمت یک MI210 از کل هزینه ساخت این سرور «زباله الکترونیکی» بیشتر است.
دو روش اصلی برای توزیع مدل بین GPUها تست شد:
- موازیسازی لایهای (Layer Parallelism): لایههای مختلف مدل روی GPUهای مختلف قرار میگیرند. فرآیند به صورت سریالی است؛ GPU اول کار را تمام میکند و سپس GPU دوم شروع میکند. این روش ساده اما کند است، زیرا در هر لحظه فقط یک کارت فعال است. سرعت تئوریک به پهنای باند یک کارت (۵۱۲ گیگابایت بر ثانیه برای V620) منهای هزینههای سربار محدود میشود.
- موازیسازی تنسوری (Tensor Parallelism): هر لایه بین چندین GPU تقسیم میشود. در تئوری، این کار پهنای باند حافظه را چند برابر میکند (مثلاً چهار کارت ۵۱۲ گیگابایتی میتوانند به ۲ ترابایت بر ثانیه برسند). اما در سختافزارهای مصرفکننده، سربار جابجایی دادهها چندین بار در هر لایه، اغلب بیشتر از افزایش سرعت حاصله است.
سایر اشکال موازیسازی مانند موازیسازی دادهای (اجرای یک مدل روی چندین GPU برای کاربران مختلف) و موازیسازی خبره (تقسیم خبرههای MoE بین GPUها) برای ارائهدهندگان تجاری مفید تشخیص داده شدند اما برای یک سرور خانگی تککاربره غیرضروری بودند. نویسنده اشاره کرد که یک GPU میتواند استنتاج را در حالت دستهای (Batch) انجام دهد و تا زمانی که سیستم محدود به پردازش (Compute-bound) نشود، مقداری محاسبات ماتریسی اضافی را «رایگان» انجام دهد.

جهش با رمزگشایی گمانهزنانه
برای حل مشکل بیکاری سختافزار، نویسنده از رمزگشایی گمانهزنانه (Speculative Decoding) با استفاده از یک مدل پیشنویس (Draft Model) استفاده کرد. در این روش، به جای اینکه مدل اصلی توکنها را یکییکی تولید کند، یک مدل بسیار کوچک و سریع، چند توکن بعدی را حدس میزند. سپس مدل اصلی این حدسها را در یک دسته موازی واحد تایید یا رد میکند.
برای مدل Gemma 4-31B، استفاده از مدل MTP (پیشبینی چند توکنی) مدل gemma4-assistant، عملکرد را از ۲۰ توکن در ثانیه (tok/s) به ۴۰ tok/s روی یک کارت ارتقا داد. این کار در واقع از توان پردازشی «بیکار» که معمولاً در استنتاجهای محدود به حافظه بلااستفاده میماند، بهره میبرد.
تستهای مدل Gemma 4-31B (کوانتایز ۴ بیتی، اندازه زمینه ۶۵,۵۳۶) جریمه عملکردی واضحی را برای موازیسازی لایهای نشان داد:
- تک کارت: ۱۹-۲۰ tok/s
- دو کارت (موازی لایهای): ۱۵-۱۶ tok/s
- چهار کارت (موازی لایهای): ۱۲-۱۳ tok/s
این نتایج تایید کرد که بدون یک لینک ارتباطی پرسرعت، تقسیم لایهها بین GPUها باعث ایجاد سربار همگامسازی میشود که در نهایت سیستم را کندتر میکند.

بهینهسازی DeepSeek V4 Flash
اجرای مدل عظیم DeepSeek V4 Flash دشوارتر بود. ۲۸۴ میلیارد وزن این مدل برای جا شدن در ۱۲۸ گیگابایت VRAM کل چهار کارت، به کوانتایزیشن ۲ بیتی نیاز داشت. نسخه استاندارد ۴ بیتی ۱۶۲ گیگابایت حجم داشت که برای این سرور بیش از حد زیاد بود. نسخه ۲ بیتی حجم را به ۸۱ گیگابایت کاهش داد، هرچند وزنهای مشترک در دقت بالا باقی ماندند و در مجموع حدود ۳.۵ تا ۵ بیت برای هر وزن حاصل شد.
سرعتهای اولیه بسیار کند و در حدود ۹-۱۰ tok/s بود. با پیادهسازی مدل پیشبین DSpark (یک معماری مبتنی بر انتشار یا Diffusion) و استفاده از نسخه سفارشی llama.cpp، نویسنده به جهشی قابل توجه دست یافت. DSpark بهبودیافتهی معماری قبلی (DFlash) است، اما به عنوان یک مدل انتشار، به شدت به انتقال داده بین GPUها حساس است.
تنظیم خط لوله (Pipeline)
از طریق مجموعهای از جستجوهای «Vibecoding» مبتنی بر پایتون، نویسنده پیکربندیهای مختلفی را برای به حداکثر رساندن عملکرد کوانتایز ۲ بیتی تست کرد:
- مدیریت VRAM: استفاده از
--tensor-splitبرای ایجاد تعادل در حافظه و افزایش اندازه زمینه تا ۵۱۲ میلیون توکن. این کار ضروری بود زیرا مدل پیشبین حتی پس از اشتراکگذاری لایه خروجی با مدل اصلی، حدود ۱۰ گیگابایت VRAM اشغال میکند. - تنظیمات گمانهزنی: مشخص شد که تلاش برای حدس ۳ توکن بهینه است؛ حدس ۵ توکن به دلیل نرخ پذیرش پایین، عملکرد را بدتر میکرد.
- دستهبندی (Batching): اندازه دسته (Batch size) بزرگتر به طور قابل توجهی سرعت و استفاده از حافظه را بهبود بخشید، در حالی که اندازه میکرو-دسته (Microbatch) تاثیر کمی داشت و بی دلیل رم سیستم را اشغال میکرد.
- جایگذاری مدل پیشبین: مدل ۱۰ گیگابایتی DSpark را روی یک GPU مجزا ایزوله کردند تا از جریمههای عملکردی اجرای مدلهای انتشار روی چندین کارت جلوگیری شود. این کار نیازمند یک شاخه PR خاص از
llama.cppبود تا اشتراکگذاری لایهها را بدون نشت به حافظه CPU به درستی مدیریت کند.
این بهینهسازیها مدل را در استفاده واقعی به ۱۹-۲۰ tok/s رساند و در بنچمارکها به ۲۲ tok/s دست یافت.

تعمیر مسیر شکسته PCIe
با وجود این پیشرفتها، نویسنده متوجه شد که ارتباط بین کارتها همچنان به طور غیرطبیعی کند است. تست rocm-bandwidth-test نشان داد که انتقال دادههای Peer-to-Peer (P2P) کاملاً مختل شده است و تمام دادهها مجبور بودند یک «توقف کوتاه» در CPU داشته باشند، زیرا DMA بین کارتها کار نمیکرد.
دو تغییر حیاتی در سیستم این مشکل را حل کرد:
۱. تنظیم BIOS: نویسنده MMIO High Base را از 56T به 4T با دانهبندی 1024G تغییر داد. این کار ضروری بود زیرا برخی GPUها فقط از آدرسدهی ۴۴ بیتی پشتیبانی میکنند و نیاز دارند آدرسها زیر ۱۶T باقی بمانند.
۲. اصلاح کرنل: افزودن iommu=pt به تنظیمات کرنل، دسترسی مستقیم به حافظه (Direct Memory Access یا DMA) بین کارتها را فعال کرد.

پس از فعال شدن P2P، موازیسازی تنسوری برای مدلهای کوچکتر کاربردی شد. سرعت Gemma 4-31B روی دو کارت به ۴۷ tok/s جهش کرد و Qwen 3.8-27B با ۳۰٪ افزایش سرعت به ۳۵ tok/s رسید. هنگام استفاده از چهار کارت، سرعت دوباره کاهش یافت که نشان میدهد سربار همگامسازی P2P همچنان در آن مقیاس، مزایای پهنای باند را میبلعد.

نتایج نهایی و بنچمارکها
پیکربندیهای بهینهشده نهایی، یک نقشه راه روشن برای میزبانی محلی ارائه داد:
- DeepSeek V4 Flash: حدود ۲۲ tok/s با استفاده از موازیسازی لایهای، رمزگشایی گمانهزنانه DSpark و اندازه زمینه ۵۲۴,۲۸۸.
- Gemma 4-31B: حدود ۴۵ tok/s با استفاده از موازیسازی تنسوری و MTP.
- Qwen 3.8-27B: حدود ۳۵ tok/s با استفاده از موازیسازی تنسوری (با تنظیم
reasoning-effortروی حالت medium).
این تغییرات، سختافزار را از مجموعهای از کارتهای بیکار به یک موتور محاسباتی همگام تبدیل کرد. مصرف برق از ۳۵۰ وات (زمانی که اکثر کارتها بیکار بودند) به بیش از ۲۰۰ وات برای هر کارت در طول وظایف موازی تنسوری تغییر کرد که نشاندهنده بهرهبرداری کامل از سختافزار است.
مسیرهای آینده
هنوز فضای رشد وجود دارد. نویسنده فرضیه میدهد که یک رویکرد ترکیبی — دو گروه TP2 در حالت موازی لایهای — میتواند سریعترین پیکربندی برای DeepSeek V4 Flash باشد، هرچند llama.cpp هنوز از این حالت برای این معماری پشتیبانی نمیکند.
علاوه بر این، پردازش متن ورودی (Prefill) به جای حافظه، محدود به پردازش (Compute-bound) است، به این معنی که در حالت موازی لایهای سریعتر اجرا میشود. یک بهینهسازی آینده میتواند شامل پردازش پرامپتها روی یک جفت GPU در حالت موازی لایهای و تولید توکنها روی جفت دیگر در حالت موازی تنسوری باشد. این استراتژی مشابه روشهایی است که ارائهدهندگان بزرگ LLM برای تخصیص GPUهای مرکز داده برای بارهای کاری خاص به کار میبرند.
این آزمایش ثابت میکند که برای هوش مصنوعی محلی، پشته نرمافزاری و تنظیمات BIOS به اندازه مقدار VRAM اهمیت دارند. توانایی اجرای یک مدل ۲۸۴ میلیارد پارامتری با سرعت ۲۰ توکن در ثانیه روی سختافزارهای مصرفکننده قدیمی، یک پیروزی بزرگ برای جامعه مدلهای بازمتن (Open-weights) است.
گام بعدی شما
- اگر سرور خانگی با چند GPU دارید، تنظیمات
iommu=ptدر کرنل لینوکس را برای فعالسازی P2P بررسی کنید. - برای مدلهای حجیم، به جای افزایش تعداد GPU در حالت لایهای، از مدلهای پیشبین (Draft Models) برای فعال کردن توان محاسباتی بلااستفاده استفاده کنید.
- تنظیمات MMIO در BIOS را برای سازگاری با آدرسدهی GPUهای قدیمی بازبینی کنید.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو