تصور کنید میخواهید کل یک پروژه نرمافزاری عظیم را در حافظه کوتاهمدت هوش مصنوعی جای دهید تا هیچ جزئیاتی از قلم نیفتد. برای توسعهدهندگانی که با مدلهای محلی کار میکنند، رسیدن به پنجره متنی ۵۱۲ هزار توکنی روی یک لپتاپ، مرز بین یک دستیار ساده و یک مهندس ارشد است. ۵۱۲ هزار توکن؛ این همان پنجره متنی عظیمی است که یک مکبوک پرو M5 با ۱۲۸ گیگابایت رم یکپارچه میتواند مدیریت کند، به شرطی که موتور استنتاج بهطور دقیق تنظیم شده باشد.
طبق یک راهنمای فنی منتشر شده در ۳ اکتبر ۲۰۲۶، جزئیات دقیق پرچمهای llama.cpp مورد نیاز برای اجرای مدل Qwen 3.8 27B جهت بارهای کاری کدنویسی چندعاملی (multi-agent) با تقاضای بالا تشریح شده است. در حال حاضر، استقرار مدلهای زبانی بزرگ (LLM) — مثل کتابخانهداری که میلیاردها صفحه را خوانده و حالا با همان لحن جواب میدهد — از مرحله «فقط اجرا شود» به مرحله «بهینهسازی حداکثری سختافزار» رسیده است. این تغییر رویکرد به این معناست که هدف دیگر صرفاً راه انداختن مدل نیست، بلکه استخراج حداکثری توان سختافزار است.
همانطور که در تحلیلهای قبلی ما دربارهی جریانهای کاری هوش مصنوعی جامعهمحور اشاره کردیم، این پیکربندی نشان میدهد چگونه میتوان مصرف VRAM را در برابر توان عملیاتی پرامپتها (prompt throughput) متوازن کرد. برای اکثر توسعهدهندگان، چالش اصلی تنها اندازه مدل نیست، بلکه سربار حافظه مربوط به KV cache است، بهویژه زمانی که متن ورودی به صدها هزار توکن میرسد. این تلاش برای مدیریت حجم عظیم دادهها در حافظه، با رویکردهای جدیدتری نظیر یکپارچهسازی زمینه در مدلها از طریق پروتکل MCP همسو است تا دسترسی به اطلاعات متمرکز در مدلهای مختلف تسهیل شود.
مدل و کوانتش
این پیکربندی از مدل unsloth/Qwen3.8-27B-GGUF با کوانتش (Quantization) UD-Q4_K_XL استفاده میکند. کوانتش — شبیه به فشردهسازی یک عکس برای اشغال فضای کمتر بدون از دست دادن زیاد کیفیت — باعث میشود مدل ۲۷ میلیارد پارامتری بهراحتی روی GPU جای بگیرد در حالی که دقت عددی قابل قبولی را حفظ میکند.
در این فرمت خاص GGUF، عبارت Q4 نشان میدهد که وزنهای مدل تقریباً به ۴ بیت کوانت شدهاند. موازنه در اینجا کاملاً روشن است: دقت پایینتر منجر به مدل بسیار کوچکتر میشود و نیاز به حافظه را بهشدت کاهش میدهد، هرچند این امر هزینهای در قالب کاهش اندک دقت عددی دارد.
رمزگشایی گمانهزنانه از طریق MTP
برای افزایش سرعت تولید متن، از مکانیزم رمزگشایی گمانهزنانه (Speculative Decoding) از طریق پیشبینی چند-توکنی (Multi-Token Prediction یا MTP) با پرچم --spec-type draft-mtp استفاده شده است. در این روش، بهجای تولید توکنها بهصورت تکبهتک (توکن $ \rightarrow $ توکن $ \rightarrow $ توکن)، یک مکانیزم پیشنویس چندین توکن آینده را پیشنهاد میدهد و مدل اصلی سپس آنها را در یک مرحله (single pass) تأیید میکند.
از نظر مفهومی، این فرآیند به شرح زیر است:
- مدل پیشنویس پیشنهاد میدهد: توکن $ \rightarrow $ توکن $ \rightarrow $ توکن
- مدل اصلی توالی پیشنهادی را بررسی و تأیید میکند
- سیستم چندین توکن را بهطور همزمان میپذیرد
زمانی که چندین توکن پیشنهادی پذیرفته شوند، سرعت تولید متن میتواند بهطور قابل توجهی افزایش یابد. برای این مدل خاص، رمزگشایی گمانهزنانه یکی از حیاتیترین تنظیمات مربوط به عملکرد است. این قابلیت توسط پرچم --spec-default پشتیبانی میشود که پیکربندی پیشفرض رمزگشایی گمانهزنانه مرتبط با نوع draft-mtp را فعال میکند. این تنظیم بهطور کلی پایدار است، مگر اینکه توسعهدهنده بخواهد روی پیادهسازیهای زیربنایی آزمایش کند.
حداکثر توکنهای گمانهزن
سیستم برای دستیابی به سرعتهای تهاجمی روی --spec-draft-n-max 8 تنظیم شده است. این پرچم تعداد حداکثری توکنهای گمانهزنهای را که جلوتر از مدل اصلی پیشنهاد میشوند، کنترل میکند. با مقدار ۸، مکانیزم پیشنویس تلاش میکند تا هشت توکن جلوتر از مدل اصلی را پیشبینی کند.
به زبان ساده، اگر مدل اصلی در توکن A باشد، مدل پیشنویس توالی B $ \rightarrow $ C $ \rightarrow $ D $ \rightarrow $ E $ \rightarrow $ F $ \rightarrow $ G $ \rightarrow $ H را پیشبینی میکند. اگر مدل اصلی تأیید کند که B، C و D درست هستند اما E اشتباه است، سیستم سه توکن را یکباره میپذیرد. این یکی از مهمترین تنظیمات عملکردی برای این مدل است و معمولاً مقادیر ۲، ۴ یا ۸ برای یافتن بهینهترین نرخ پذیرش (acceptance rate) بنچمارک میشوند. عدد ۸ یک مقدار تهاجمی اما منطقی برای تست در نظر گرفته میشود.
گسترش پنجره متنی
جسورانهترین بخش این تنظیمات، پنجره متنی (Context Window) ۵۱۲ هزار توکنی است (-c 524288). برای درک بهتر این مقیاس، ۵۱۲ هزار توکن بهطور قابل توجهی بزرگتر از پنجرههای استاندارد مانند ۳۲ هزار (۳۲,۷۶۸)، ۱۲۸ هزار (۱۳۱,۰۷۲) یا ۲۵۶ هزار (۲۶۲,۱۴۴) است. برای بارهای کاری کدنویسی عاملمحور (agentic)، داشتن صدها هزار توکن در دسترس برای پردازش پایگاههای کد (codebases) حجیم بسیار مفید است.
از آنجایی که مدل بهطور بومی برای این طول آموزش ندیده است، پیکربندی از YaRN (Yet another RoPE extension) از طریق پرچم --rope-scaling yarn استفاده میکند. RoPE (Rotary Position Embedding) روشی است که ترنسفورمر از طریق آن موقعیت توکنها را نمایش میدهد (مثلاً توکن ۱، توکن ۲... تا توکن ۲۶۲,۱۴۴). وقتی میخواهیم متن را فراتر از محدوده آموزش اولیه گسترش دهیم، مقیاسبندی موقعیتی (positional scaling) ضروری است.
با تنظیم --yarn-orig-ctx 262144 سیستم به YaRN اعلام میکند که طول متن اصلی مدل ۲۶۲,۱۴۴ توکن بوده است. این کار محدوده موقعیتی را تقریباً ۲ برابر میکند تا به هدف ۵۲۴,۲۸۸ برسد. برای اطمینان از اینکه موتور استنتاج مدل را با این ظرفیت شناسایی کند، از پرچم --override-kv qwen2.context_length=int:524288 برای دور زدن متادیتای GGUF استفاده شده است. این کار بهطور جادویی مدل را برای ۵۱۲ هزار توکن آموزش نمیدهد، اما به موتور اجازه میدهد در این مقیاس عمل کند.

مدیریت حافظه و GPU
برای حداکثر سرعت، تمام لایههای ممکن با استفاده از -ngl 99 (مخفف --n-gpu-layers) به GPU منتقل شدهاند. این عدد به هستههای GPU اشاره ندارد، بلکه مشخص میکند که تا حد امکان لایههای مدل بهجای CPU روی GPU قرار گیرند. اگر مدل بهراحتی در حافظه GPU جای بگیرد، -ngl 99 استانداردترین انتخاب برای عملکرد است.
همچنین حافظه KV Cache از طریق --kv-offload روی GPU نگه داشته شده است تا از تأخیر ناشی از جابهجایی دادهها بین CPU و GPU در طول محاسبات توجه (attention) جلوگیری شود. معماری ایدهآل برای حداکثر عملکرد به این صورت است: وزنهای مدل $ \rightarrow $ GPU، حافظه KV $ \rightarrow $ GPU و محاسبات توجه $ \rightarrow $ GPU.
دقت حافظه KV Cache
یکی از پرمصرفترین تصمیمات در این پیکربندی، دقت حافظه است:
- K Cache (
--cache-type-k f16): استفاده از اعداد اعشاری ۱۶ بیتی (F16) برای بخش Key حافظه. - V Cache (
--cache-type-v f16): استفاده از اعداد اعشاری ۱۶ بیتی (F16) برای بخش Value حافظه.
در حالی که F16 دقت بالایی را فراهم میکند، اما حافظه بسیار بیشتری نسبت به جایگزینهای ۸ بیتی مانند --cache-type-k q8_0 و --cache-type-v q8_0 مصرف میکند. وقتی این دقت با پنجره ۵۱۲ هزار توکنی و دو توالی موازی ترکیب شود، نیاز به VRAM بهشدت افزایش مییابد.
دستهبندی و توان عملیاتی
پردازش پرامپتها با یک سیستم دستهبندی (Batching) دو لایه برای ایجاد تعادل بین توان عملیاتی و مصرف VRAM بهینه شده است:
- دسته منطقی (
-b 16384): حداکثر تعداد توکنهایی که در یک دسته منطقی پردازش میشوند را مشخص میکند. این مورد عمدتاً بر پردازش پرامپت (prefill) اثر میگذارد. دسته بزرگتر به GPU اجازه میدهد توکنهای بیشتری را بهطور بهینه پردازش کند و توان عملیاتی را افزایش دهد. نکته مهم این است که پنجره ۵۲۴ هزار توکنی با دسته ۱۶ هزارتایی کاملاً معتبر است، زیرا اندازه دسته محدودکننده پنجره متنی نیست. - دسته فیزیکی (
-ub 4096): که به عنوان اندازه میکرو-بچ (micro-batch) نیز شناخته میشود. این مقدار کنترل میکند که در هر لحظه دقیقاً چه تعداد توکن پردازش شوند.
در این تنظیمات، دسته منطقی ۱۶,۳۸۴ توکنی به چهار دسته فیزیکی ۴,۰۹۶ توکنی تقسیم میشود. این ساختار اجازه میدهد توان عملیاتی منطقی بالا باشد بدون اینکه نیاز باشد تمام ۱۶ هزار توکن بهطور همزمان پردازش شوند؛ این امر از جهشهای ناگهانی VRAM جلوگیری کرده و برای عملکرد پردازش پرامپت حیاتی است.
موازیسازی و تنظیمات سختافزاری
سرور برای اجرای چندعاملی با -np 2 پیکربندی شده است که امکان پردازش دو توالی یا درخواست موازی را فراهم میکند. این تنظیم اجازه میدهد دو عامل (agent) بهطور همزمان فعالیت کنند، اما نیاز به حافظه KV-cache را دو برابر میکند (۵۱۲ هزار توکن $ \times $ ۲). اگر در هر لحظه تنها یک درخواست اجرا شود، مقدار -np 1 تعادل حافظه بهتری ایجاد میکند.
محاسبات روی CPU به شرح زیر توزیع شده است:
- محاسبات عمومی (
-t 16): ۱۶ رشته (thread) CPU برای محاسبات استاندارد استفاده میشود. کاربرد این رشتهها به این بستگی دارد که چه مقدار از بار کاری روی CPU باقی مانده باشد. - پردازش دستهای (
-tb 16): ۱۶ رشته CPU بهطور اختصاصی برای پردازش دستهای (batch processing) اختصاص یافته است. در CPUهایی با تعداد هسته بالا، این مقدار باید بنچمارک شود، زیرا تعداد رشته بیشتر لزوماً به معنای عملکرد بالاتر نیست.
توجه برقآسا (Flash Attention) با -fa on فعال شده است تا ترافیک حافظه کاهش و عملکرد بهبود یابد. این یک تنظیم غیرقابل مذاکره برای پیکربندی ۵۱۲ هزار توکنی است، زیرا مکانیزم توجه در این مقیاس، تقاضای حافظه بسیار شدیدی دارد.
پیکربندی سرور
این تنظیمات از --load-mode none استفاده میکند، به این معنی که هیچ مکانیزم خاصی برای نگاشت حافظه (memory mapping) یا رفتار استارتآپ انتخاب نشده است. این مورد معمولاً تنها هنگام عیبیابی بارگذاری مدل یا مشکلات نگاشت حافظه تغییر میکند.
سرور به عنوان یک سرور HTTP محلی روی پورت ۸۰۸۰ (--port 8080) فعال شده و برای امنیت به 127.0.0.1 (--host 127.0.0.1) محدود شده است. این کار تضمین میکند که API در آدرس http://127.0.0.1:8080 در دسترس باشد اما در شبکه گستردهتر در معرض دید نباشد. اینها تنظیمات شبکه هستند و هیچ تأثیری بر سرعت استنتاج ندارند.
جمعبندی موازنه ها
این پیکربندی نشاندهنده نقطه اوج استنتاج محلی روی تراشههای اپل سیلیکون است. موازنههای اصلی عبارتند از:
- متن در برابر حافظه: پنجره ۵۱۲ هزار توکنی به مقادیر عظیمی از رم نیاز دارد.
- دقت در برابر VRAM: حافظه KV از نوع F16 دقت را فراهم میکند اما بهطور قابل توجهی بیشتر از Q8 حافظه مصرف میکند.
- اندازه دسته در برابر توان عملیاتی: تقسیم ۱۶ هزار/۴ هزار، سرعت پردازش پرامپت را در برابر محدودیتهای VRAM متوازن میکند.
- گمانهزنی در برابر پذیرش: MTP-8 پتانسیل سرعت بالایی را ارائه میدهد، به شرطی که پیشبینیهای مدل پیشنویس دقیق باشند.
برای خواننده، این بدان معناست که گلوگاه دیگر هوش مدل نیست، بلکه پهنای باند حافظه سختافزار است. هدف این است که نقطهای پیدا شود که در آن بهرهوری GPU، پهنای باند حافظه، اندازه KV-cache، اندازه دسته و پذیرش توکنهای گمانهزن بهجای رقابت با یکدیگر، با هم همکاری کنند.
در حوزه عملیاتی LLMهای محلی، این موضوع تمرکز را به سمت «مهندسی حافظه» (cache engineering) تغییر میدهد. توانایی تنظیم نوع KV cache و اندازه دستهها اکنون به اندازه انتخاب کوانتش مناسب برای مدل اهمیت یافته است.
منتظر بهروزرسانیهای آتی llama.cpp در مورد کوانتش بهینهتر KV cache باشید که میتواند پنجرههای متنی ۱ میلیون توکنی یا بیشتر را روی سختافزارهای مصرفکننده، بدون از دست دادن زیاد دقت، ممکن سازد.
گام بعدی شما
- اگر از مکهای سری M با رم بالا استفاده میکنید، پرچمهای
-fa onو--spec-type draft-mtpرا برای افزایش سرعت تست کنید. - برای کاهش مصرف VRAM در پنجرههای متنی بزرگ، دقت KV Cache را از
f16بهq8_0تغییر دهید. - مقدار
--spec-draft-n-maxرا بین ۲ تا ۸ تغییر دهید تا بهینهترین نرخ پذیرش توکن را برای مدل خود بیابید.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو