تصور کنید یک آشپز فوقسریع دارید که میتواند در یک ثانیه هزار غذا بپزد، اما دستیار او هر بار فقط یک دانه نمک برایش میآورد. این دقیقاً همان اتفاقی است که در قلب قدرتمندترین کارتهای گرافیکی جهان هنگام اجرای مدلهای هوش مصنوعی رخ میدهد.
طبق بررسیهای فنی، حدود ۹۸.۸٪ از زمان یک کارت گرافیک NVIDIA RTX 4090 هنگام تولید هر توکن برای مدلی مثل LLaMA 3، صرف انتظار برای جابهجایی دادهها در گذرگاه حافظه میشود. این ناکارآمدی عظیم به این دلیل است که GPU باید برای تولید هر تککلمه، تمام پارامترهای مدل را از حافظه VRAM فراخوانی کند.
این واقعیت سختافزاری، عصر فعلی استقرار هوش مصنوعی را تعریف میکند. در حالی که ما اغلب از «محاسبات» (Compute) بهعنوان هزینه اصلی صحبت میکنیم، نبرد واقعی در برابر «دیوار حافظه» است. همانطور که در تحلیل قبلی ما دربارهی پیادهسازی جستوجوی معنایی بدون نیاز به مدلهای زبانی اشاره کردیم، درک هزینه فیزیکی هر توکن به توسعهدهندگان کمک میکند تا بین میزبانی محلی و مقیاسبندی مبتنی بر API تصمیم بگیرند. برای مقابله با این محدودیت در مقیاسهای صنعتی، توزیع حافظه در خوشههای پردازشی راهکاری کلیدی برای شکستن دیوار حافظه در مدلهای عظیم است.
عدم تقارن بین پیشپُرکردن و رمزگشایی
مدلهای زبانی بزرگ (LLM) — مثل کتابخانهداری که میلیاردها صفحه را خوانده و حالا با همان لحن کتابها جواب میدهد — در دو حالت متمایز عمل میکنند. حالت اول «پیشپُرکردن» (Prefill) است که در آن مدل پرامپت شما را هضم میکند. در این مرحله، GPU تمام $T$ توکن ورودی را بهصورت موازی پردازش میکند. در اینجا یک ماتریس با ابعاد $[T \times d_{\text{model}}]$ در وزنهای مدل ضرب میشود. هستههای تنسور GPU در این مرحله کاملاً اشباع میشوند، زیرا هر وزنی که از VRAM بارگذاری میشود، برای تمام $T$ توکن مورد استفاده قرار میگیرد.
حالت دوم «رمزگشایی» (Decoding) است که در آن مدل پاسخ را توکن به توکن تولید میکند. این یک فرآیند خودبازگشتی (Autoregressive) است. برای تولید تنها یک توکن، GPU باید تمام ۸ یا ۷۰ میلیارد پارامتر را از VRAM به هستههای پردازشی منتقل کند تا فقط دو عملیات اعشاری (Floating-point operations) روی هر پارامتر انجام دهد. در این حالت، ورودی تنها یک بردار با شکل $[1 \times d_{\text{model}}]$ است.
برای مدلی مثل LLaMA 3 8B، این یعنی بارگذاری ۱۶ گیگابایت وزن (با دقت FP16) فقط برای انجام دو عملیات ساده روی هر پارامتر. ریاضیات ساده است: سرعت محاسبه GPU بسیار بیشتر از سرعت تحویل داده توسط گذرگاه حافظه است.

سفر یک توکن
سفر یک توکن با یک بردار معنایی (Embedding) — مثل کارت معرفی عددی برای هر واژه که میگوید این کلمه همسایهی چه کلمات دیگری است — آغاز میشود. فرض کنید مدل توکن " lazy" را تولید کرده است (که در واژگان LLaMA 3 دارای شناسه عددی ۱۶۰۰۵ است). این عدد بهعنوان یک ایندکس ردیف در ماتریس بردارها $W_e \in \mathbb{R}^{V \times d_{\text{model}}}$ عمل میکند.
برای یک مدل ۸ میلیارد پارامتری، اندازه واژگان $V$ برابر با ۱۲۸,۲۵۶ و بعد مدل $d_{\text{model}}$ برابر با ۴,۰۹۶ است. بازیابی ردیف ۱۶۰۰۵، بردار حالت پنهان اولیه $x_0 \in \mathbb{R}^{1 \times 4096}$ را تولید میکند.
مدلهای مدرن سپس از رمزگذاری موقعیت دورانی (RoPE) استفاده میکنند. برخلاف معماریهای قدیمی مثل GPT-2 که بردارها را بهسادگی با بردارهای موقعیت ثابت جمع میکردند ($x_0 = x_{\text{token}} + x_{\text{pos}}$)، RoPE جفتهای ویژگی دو بعدی را در بردارهای Query ($Q$) و Key ($K$) با زاویهای متناسب با موقعیت مطلق توکن $m$ در پنجره زمینه میچرخاند. این کار اجازه میدهد تا ضرب داخلی $Q K^T$ بهطور طبیعی فاصله نسبی بین هر دو توکن را کدگذاری کند.
درون پشته ترنسفورمر
سپس این بردار از پشتهای شامل ۳۲ لایه ترنسفورمر یکسان عبور میکند. هر لایه توالی دقیقی از عملیات را اجرا میکند: ابتدا نرمالسازی RMSNorm، سپس تصویرسازیهای Q/K/V، چرخش RoPE، تعامل با KV Cache، توجه ضرب-داخلی مقیاسشده (Scaled Dot-Product Attention) و در نهایت یک شبکه MLP از نوع SwiGLU.
جزئیات مکانیسمهای لایه
- پیش-نرمالسازی (RMSNorm): قبل از ارسال $x$ به بخش توجه، مدلها از نرمالسازی ریشه میانگین مربعات استفاده میکنند. این روش از نظر محاسباتی سبکتر از LayerNorm است زیرا مرحله مرکز-میانگین (mean-centering) را حذف میکند. فرمول آن $\text{RMS}(x) = \sqrt{\frac{1}{d}\sum_{i=1}^d x_i^2 + \epsilon}$ است و نتیجه توسط یک بردار یادگیریشده $\gamma$ به اندازه ۴,۰۹۶ مقیاسبندی میشود.
- توجه پرسوجوی گروهی (GQA): در توجه چند-سره استاندارد (MHA)، ۳۲ سر توجه به ۳۲ سر Query، ۳۲ سر Key و ۳۲ سر Value نیاز دارد. اما LLaMA 3 8B از GQA استفاده میکند؛ یعنی ۳۲ سر Query دارد اما تنها از ۸ جفت سر Key-Value استفاده میکند. هر گروه ۴ تایی از سرهای Query، یک سر Key/Value مشترک دارند که این کار ردپای حافظه KV Cache را تا ۷۵٪ کاهش میدهد.
- ریاضیات توجه: بردار تک پرسوجو $q$ ضرب داخلی را با تمام کلیدهای ذخیره شده در حافظه (Cache) در طول توالی انجام میدهد. این کار امتیازاتی (با شکل $[32 \text{ heads}, 1, S]$) تولید میکند که از طریق یک تابع softmax عبور میکنند تا وزنها ساخته شوند. سپس این وزنها در مقادیر ذخیره شده $V_{\text{past}}$ ضرب میشوند تا یک بردار زمینه با شکل $[1, 4096]$ ایجاد شود.
- تصویرسازی خروجی: بردار زمینه در یک ماتریس تصویرسازی خروجی $W_o$ ضرب شده و از طریق یک اتصال جهشی باقیمانده (Residual Skip Connection) به ورودی اصلی اضافه میشود: $x = x + (\text{Context} \cdot W_o)$.
نقش KV Cache
برای جلوگیری از محاسبه مجدد کل تاریخچه گفتگو در هر کلمه جدید، مدل از KV Cache استفاده میکند. بدون این حافظه موقت، مدل مجبور بود برای هر توکن جدید، تمام توکنهای قبلی (مثلاً ۲,۰۰۰ توکن) را از ابتدا تصویرسازی (Project) کند.
در هر گام، مدل بردارهای $k$ و $v$ را برای توکن فعلی (با شکل $[1, 8, 128]$) محاسبه کرده و آنها را به بافر KV Cache لایه در VRAM اضافه میکند. بدین ترتیب، لایه دارای کلیدهای $K_{\text{past}}$ و مقادیر $V_{\text{past}}$ برای کل طول توالی $S$ (با شکل $[S, 8, 128]$) میشود. در همین راستا، نوآوریهایی مانند کاهش شدید اشغال حافظه KV Cache در مدل DeepSeek نشان میدهد که چگونه میتوان بهرهوری حافظه را در مدلهای سریعتر به طرز چشمگیری افزایش داد.
شبکه پیشخور (MLP)
تقریباً دو سوم از پارامترهای یک مدل در لایههای پیشخور (Feed-Forward) قرار دارند. معماریهای مدرن فعالسازهای استاندارد ReLU یا GELU را با SwiGLU (واحدهای خطی گیتدار Swish) جایگزین کردهاند.
این فرآیند شامل سه ماتریس وزن مجزا است: $W_{\text{gate}}$، $W_{\text{up}}$ و $W_{\text{down}}$. بردار ابتدا به یک بعد پنهان میانی ۱۴,۳۳۶ تصویر میشود. تصویرسازی گیت از فعالساز SiLU استفاده میکند که سپس بهصورت المان-به-المان در تصویرسازی Up ضرب میشود. در نهایت، نتیجه از طریق $W_{\text{down}}$ دوباره به بعد ۴,۰۹۶ بازگردانده شده و از طریق یک اتصال باقیمانده به حالت سیستم اضافه میشود.
از لاجیتها تا کلمات
پس از خروج از لایه ۳۱، بردار $x$ یک RMSNorm نهایی را تجربه میکند. سپس به «سر مدل» (LM Head) میرسد که بردار را با ضرب در ماتریس وزنهای باز-جایگذاری (unembedding) $W_{\text{vocab}} \in \mathbb{R}^{128256 \times 4096}$ دوباره به فضای واژگان برمیگرداند.
این عملیات ۱۲۸,۲۵۶ عدد اعشاری خام و نرمالنشده به نام لاجیتها (Logits) تولید میکند. برای مثال، توکن "dog" (شناسه ۵۶۴۲) ممکن است لاجیت +۱۸.۴۲ داشته باشد، در حالی که "table" (شناسه ۷۷۱۲) مقدار -۴.۸۰ را نشان دهد.
این لاجیتها برای جلوگیری از خروجیهای خشک و قطعی، از یک خط لوله نمونهگیری عبور میکنند:
- مقیاسبندی دما (Temperature): لاجیتها بر دما $T$ تقسیم میشوند. وقتی $T < 1.0$ (مثلاً ۰.۲) باشد، تفاوتها تقویت شده و توکنهای با احتمال بالا غالب میشوند. وقتی $T > 1.0$ (مثلاً ۱.۵) باشد، تفاوتها تخت شده و تصادفی بودن افزایش مییابد.
- فیلتر Top-K: مدل فقط $K$ توکن با بالاترین لاجیتها را نگه میدارد (مثلاً $K=50$). تمام ۱۲۸,۲۰۶ توکن دیگر روی $-\infty$ تنظیم میشوند.
- فیلتر Top-P (هستهای): مدل کوچکترین مجموعهای از توکنها را انتخاب میکند که احتمال تجمعی آنها از $P$ بیشتر شود (مثلاً $P=0.90$). اگر توکن اول ۹۲٪ احتمال داشته باشد، بقیه حذف میشوند؛ اما اگر ۲۰ توکن هر کدام ۴٪ احتمال داشته باشند، هر ۲۰ مورد نگه داشته میشوند.
در نهایت، تابع سافتمکس (Softmax) این لاجیتهای فیلتر شده را به احتمالات واقعی تبدیل میکند: $P(\text{token}_i) = \frac{e^{z_i}}{\sum_j e^{z_j}}$. یک قرعهکشی تصادفی دستهای، شناسه توکن نهایی را انتخاب میکند تا برای کاربر ارسال شده و برای حلقه بعدی به زمینه (Context) اضافه شود. شایان ذکر است که تنظیمات نادرست این پارامترهای نمونهگیری میتواند بهطور مستقیم باعث افزایش هزینههای استنتاج و کاهش کیفیت خروجی شود.
ریاضیات دیوار حافظه
به نقل از یک تحلیل فنی منتشر شده در ۲۳ سپتامبر ۲۰۲۶، کارت RTX 4090 دارای پهنایباند حافظه ۱,۰۰۸ گیگابایت بر ثانیه و توان محاسباتی ۸۲.۶ ترافلاپس (در هستههای تنسور FP16/FP32) است.
برای مدل ۸ میلیارد پارامتری با دقت ۱۶ بیتی، حجم وزنها ۱۶ گیگابایت است. هر پارامتر در هر گذر پیشرو (Forward Pass) یک بار ضرب و یک بار جمع میشود که در مجموع ۱۶ GFLOPs (یا ۰.۰۱۶ TFLOPs) برای هر توکن است.
برای تولید یک توکن، کنترلکننده حافظه GPU باید کل ۱۶ گیگابایت وزنها را از VRAM از طریق گذرگاه حافظه استریم کند:
$\text{Minimum Time to Read Weights} = \frac{16 \text{ GB}}{1,008 \text{ GB/s}} \approx 0.01587 \text{ seconds } (15.87 \text{ ms})$
در همین بازه زمانی، GPU تنها از حدود ۱.۰۰۸ ترافلاپس از ظرفیت ۸۲.۶ ترافلاپسی خود استفاده میکند. این منجر به بهرهوری محاسباتی تنها ۱.۲۲٪ میشود، به این معنی که هستههای تنسور ۹۸.۷۸٪ زمان را بیکار میمانند.
مهندسان چگونه این گلوگاه را دور میزنند
این گلوگاه توضیح میدهد چرا صنعت روی سه بهینهسازی خاص متمرکز است:
۱. کوانتش (Quantization): کاهش دقت وزنها از ۱۶ بیت به ۴ بیت (از طریق AWQ یا GGUF)، حجم وزنها را از ۱۶ گیگابایت به حدود ۴.۵ گیگابایت میرساند. این کار زمان انتقال حافظه را از ۱۵.۸ میلیثانیه به ۴.۴ میلیثانیه کاهش داده و سرعت تولید را در همان سختافزار از حدود ۶۳ به ۲۲۵ توکن در ثانیه افزایش میدهد.
۲. دستهبندی پیوسته (Continuous Batching): ابزارهایی مثل vLLM یا TGI چندین درخواست کاربر (مثلاً $B=32$) را بهطور همزمان پردازش میکنند. وزنها در هر گام فقط یک بار از VRAM بارگذاری میشوند اما بهطور همزمان در ۳۲ توکن ضرب میشوند. این کار شدت محاسباتی را ۳۲ برابر کرده و بهرهوری پردازشی را به نزدیک ۴۰٪ میرساند.
۳. رمزگشایی گمانهزنانه (Speculative Decoding): یک مدل پیشنویس بسیار کوچک (مثلاً ۱ میلیارد پارامتر) ۴ توکن بعدی را بهصورت متوالی حدس میزند. سپس مدل هدف بزرگ (۸ میلیارد پارامتر) هر ۴ حدس را در یک گذر پیشرو موازی ارزیابی میکند. اگر حدسها درست باشند، سیستم ۴ توکن را با هزینه زمانیِ انتقال حافظه برای یک توکن تولید کرده است.
این تغییر در دیدگاه، تمرکز را از «GPU من چند TFLOPS دارد» به «VRAM من چقدر سریع است» منتقل میکند. برای توسعهدهندگان، این بدان معناست که بهینهسازی ردپای حافظه یک مدل، اغلب تأثیرگذارتر از بهینهسازی ریاضیات شبکه است.
منتظر ظهور سختافزارهای استنتاج تخصصی باشید که پهنایباند حافظه را بر تعداد هستههای تنسور اولویت میدهند تا در نهایت دیوار ۹۸ درصدی بیکاری را بشکنند.
گام بعدی شما
- اگر از مدلهای محلی استفاده میکنید، اولویت را به مدلهای کوانتیده (GGUF یا AWQ) بدهید تا سرعت استنتاج را چند برابر کنید.
- در طراحی سیستمهای تولیدی، بهجای ارتقای GPU به مدلهای با TFLOPS بیشتر، روی مدلهایی با پهنایباند حافظه (HBM) بالاتر تمرکز کنید.
- برای کاهش تأخیر در سرویسدهی، از موتورهای استنتاجی که از Continuous Batching پشتیبانی میکنند (مانند vLLM) استفاده کنید.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو