تصور کنید یک مک با تنها ۸ گیگابایت رم را دارید، اما میخواهید مدلی با ۱۲۵ میلیارد پارامتر را روی آن اجرا کنید. ابزار Slotstream که در ۱ سپتامبر ۲۰۲۶ منتشر شد، این رویای ناممکن را با استریم کردن لحظهای «خبرهها» از حافظه SSD به جای بارگذاری کامل در رم، به واقعیت تبدیل کرده است. این فناوری نیاز به حضور کامل مجموعه وزنهای مدل در حافظه را از بین میبرد.
سالهاست که «دیوار رم» بزرگترین مانع برای اجرای مدلهای پیشرو در محیط محلی بوده است. برای مثال، نسخه کوانتیده ۴ بیتی مدل Qwen3.8-Flash-Next برای بارگذاری اولیه به ۱۰۴ گیگابایت حافظه نیاز دارد. اکثر کاربران مک، حتی با تراشههای سری M، محدود به ۳۲ یا ۶۴ گیگابایت حافظه یکپارچه هستند و بدون پرداخت هزینههای سنگین برای رایانش ابری، دسترسی به این مدلها برایشان غیرممکن بود. این چالش در مدلهای کوچکتر نیز مشهود است؛ چنانکه پیشتر بررسی کردیم حافظه ۲۴ گیگابایتی نقطه ورود واقعی برای اجرای محلی نسخههای کوچکتر Qwen 3.8 بود.
برای درک این سازوکار، رم را مثل یک میز کار کوچک و SSD را مثل یک انبار عظیم تصور کنید — همانطور که در بحثهای گذشته ما دربارهی بهینهسازی حافظه در مدلهای بازمتن اشاره کردیم، روش سنتی این بود که کل انبار را روی میز بریزید تا بتوانید کار کنید. اما Slotstream این رویکرد را تغییر میدهد؛ این ابزار فقط «ابزارهای» (خبرهها) خاصی را که برای تولید هر توکن (Token) — تکههای کوچکی از متن، شبیه برشهای یک کیک طولانی که مدل تکهتکه میخورد — لازم است، از انبار به میز میآورد و همزمان ابزارهای قدیمی را از روی میز پاک میکند.
سازوکار استریمینگ
به نقل از مخزن گیتهاب این پروژه، معماری مدل به سه بخش اصلی تقسیم شده است. بدنه اصلی (Dense Trunk) که تنها ۳.۸ گیگابایت است، همیشه در رم میماند. بخش حجیمتر شامل ۶۸ گیگابایت خبرههای مسیریابیشده (۵۱۲ خبره در هر لایه که تنها ۱۰ مورد برای هر توکن فعال میشوند) و یک جدول n-gram ۳۲ گیگابایتی است.
Slotstream از یک استخر ثابت از اسلاتهای حافظه استفاده میکند که بین تمام ۴۸ لایه مشترک است. این ابزار با استفاده از دستور pread خبرهها را از دیسک به این اسلاتها میکشد. این روش اجازه میدهد لایههای «داغ» (پرکاربردتر) اسلاتها را از لایههای «سرد» قرض بگیرند. این رویکرد برخلاف حافظه نگاشتشده (mmap) که اغلب باعث کرش کردن سیستم یا استفاده شدید از Swap میشود، پایداری سیستم را حفظ میکند.
طبق مستندات فنی، در حالت عادی MLX نمیتواند بخشی از یک تنسور mmap شده را متجلی کند. یک عملیات gather برای ۱۰ خبره برتر، تمام ۵۱۲ خبره آن لایه را ارزیابی میکند و یک جستجوی n-gram با ۱۶ ردیف، یک شارد کامل ۲۵۰ مگابایتی را ارزیابی میکند. در نتیجه، مسیر mmap سعی میکند حدود ۱۰۰ گیگابایت داده را بارگذاری کند و سیستم را متوقف سازد. در حالی که مسیر استاندارد mlx_lm.load() در یک دستگاه ۴۸ گیگابایتی، پیش از تولید حتی یک توکن، کل حافظه را به ۴۸ گیگابایت Swap منتقل میکرد.
سختافزار و عملکرد
در این سیستم، محدودیتهای سختافزاری توسط فضای دیسک تعیین میشوند و نه مقدار رم. شما به حدود ۱۱۰ گیگابایت فضای خالی روی SSD برای ذخیره وزنها نیاز دارید. به همین دلیل، یک مک با ۵۱۲ گیگابایت حافظه داخلی، حداقل سختافزاری واقعبینانه برای نصب محسوب میشود، فارغ از اینکه مقدار رم دستگاه چقدر باشد.
عملکرد مدل بسته به مقدار رم اختصاصیافته به فرآیند تغییر میکند. بر اساس اندازهگیریهای انجام شده روی سختافزار واقعی (یک تراشه M5 Pro)، نتایج به شرح زیر است (سایر سطوح بر اساس منحنی اندازهگیری شده تخمین زده شدهاند):
- مک ۴۸ گیگابایتی: حدود ۱۲ توکن در ثانیه (tok/s) برای رمزگشایی گرم، با زمان راهاندازی سرد (Cold Start) حدود ۳ ثانیه و اوج مصرف حافظه ۳۲ گیگابایت.
- مک ۳۲ گیگابایتی: تخمین زده شده حدود ۱۰ توکن در ثانیه.
- مک ۲۴ گیگابایتی: تخمین زده شده حدود ۸ توکن در ثانیه.
- مک ۱۶ گیگابایتی: تخمین زده شده حدود ۵ توکن در ثانیه. این سطح از بهینهسازی یادآور تجربهای است که در آن یک مکمینی ۱۶ گیگابایتی توانست با استفاده از اولاما و Qwen جایگزین گیتهاب کوپایلت شود.
- کف ۸.۱ گیگابایتی: حداقل حافظه برنامهریزی شده؛ ابزار
slotstream doctorهشدار میدهد که پایینتر از این مقدار، سیستم دچار Paging میشود.
باید توجه داشت که مکهای کوچکتر ممکن است دارای SSDهای کندتری باشند که این تخمینهای سرعت را تحت تأثیر قرار میدهد.
پیادهسازی فنی و API
Slotstream به صورت یک فایل باینری Swift ارائه شده که نیازمند تراشه اپل سیلیکون و macOS 14 به بالا است. این ابزار زیرمجموعهای از نقاط انتهایی (Endpoints) Ollama و OpenAI را برای چت و تولید متن پیادهسازی کرده است، به این معنی که بدون هیچ تغییری با Open WebUI و رابط خط فرمان Ollama سازگار است.
ویژگیهای پشتیبانیشده شامل استریمینگ، CORS و گزینههای استاندارد نمونهگیری مانند temperature، top_p، top_k، min_p، presence_penalty، seed، num_predict و stop است. قابلیتهایی که پشتیبانی نمیشوند — از جمله استفاده از ابزارها (Tools)، تصاویر، خروجی JSON-schema، logprobs و نامهای جایگزین مدل — به جای اینکه بیصدا نادیده گرفته شوند، یک خطای واضح ۴۰۰ برمیگردانند.
برای جلوگیری از تورم حافظه، یک حاکم اندازه خودکار (Auto-sizing Governor) تعبیه شده است. در یک دستگاه ۴۸ گیگابایتی، این ابزار مقدار ۵۲ گیگابایت (به صورت دسیمال) را میخواند و هدف را روی ۳۳ گیگابایت تنظیم میکند. این مقدار به عنوان «زانو» (Knee) توصیف شده؛ یعنی کوچکترین هدفی که در آن حافظه کش خبرهها از حالت توقف (Plateau) خارج شده و بودجه کافی برای پیشپُرکردن (Prefill) سریع ۴۰۹۶ توکن وجود دارد. بررسیهای انجام شده در بازه ۳۴ تا ۸۴ گیگابایت، هیچ بهبودی در این دو عدد نشان نداد.
مدیریت حافظه و بستر متنی
حاکم حافظه Slotstream کمترین مقدار بین سه محدودیت را انتخاب میکند: ۳۳ گیگابایت، ۷۰٪ رم و محدودیت Working-set متال. این سیستم منعطف باقی میماند و هر ۱۵ ثانیه یک بار وضعیت را بررسی میکند تا اندازه کش را بین درخواستها تغییر دهد.
کاربران میتوانند با پرچمهای خاص، تنظیمات را تغییر دهند:
--memory-gb N: تنظیم کل حافظه فرآیند (حداقل ۸.۱).--experts-per-layer N: تنظیم مستقیم اندازه کش (هر خبره از ۵۱۲ خبره، ۰.۱۳۳ گیگابایت هزینه دارد).--pool-gb G: تنظیم اندازه خام استخر حافظه.--max-ram-percent P: تغییر سهم ۷۰ درصدی رم.
در صورتی که بخواهیم تمام خبرهها (۵۱۲ مورد در هر لایه) را در رم نگه داریم تا خواندن از SSD حذف شود، به حدود ۸۸ گیگابایت حافظه نیاز است، هرچند این حالت هنوز اندازهگیری نشده است. نکته مهم این است که رمزگشایی حریصانه (Greedy decoding) فارغ از اینکه از کش ۴ گیگابایتی یا ۲۴ گیگابایتی استفاده شود، از نظر بایتی کاملاً یکسان باقی میماند.
یک نقطه ضعف بزرگ، سرعت پردازش پرامپتهای طولانی است. چون سیستم باید کل پرامپت را پیش از تولید اولین توکن پردازش کند، مرحله پیشپُرکردن (Prefill) کندترین بخش است. این سرعت در مک ۱۶ گیگابایتی حدود ۵۰ توکن در ثانیه و در مک ۴۸ گیگابایتی ۱۲۵ توکن در ثانیه است. یک پرامپت ۸۰۰۰ توکنی ممکن است بین یک تا سه دقیقه زمان ببرد تا اولین پاسخ را تولید کند.
برای حل این مشکل، Slotstream از یک کش پیشوند (Prefix Cache) استفاده میکند. در یک گفتگو، نوبتهای بعدی فقط متن جدید را پیشپُر میکنند. در آزمایشهای ۸ مرحلهای، این قابلیت تأخیر را در ۶ ثانیه ثابت نگه داشت، در حالی که بدون آن، تأخیر به ۲۵.۸ ثانیه میرسید. توجه داشته باشید که استفاده مجدد از این وضعیت، دقیقاً با محاسبه مجدد یکسان نیست و ممکن است پاسخها در موارد نادر (زمانی که دو توکن احتمال بسیار نزدیکی دارند) متفاوت باشد. کاربران برای بازتولید دقیق میتوانند از --no-prefix-cache استفاده کنند. مجموع پرامپت و پاسخ از طریق --max-context به ۳۲,۷۶۸ توکن محدود شده است.
نصب و تأیید اعتبار
نصب این ابزار از طریق یک اسکریپت curl ساده امکانپذیر است: curl -fsSL https://raw.githubusercontent.com/carloslfu/slotstream/main/install.sh | sh. این دستور یک فایل باینری پیشساخته در مسیر ~/.slotstream/bin قرار داده و آن را به PATH اضافه میکند. برای امنیت، توسعهدهنده از GitHub Attestations استفاده کرده تا کاربران بتوانند اصالت فایل slotstream-arm64.tar.gz را با دستور gh attestation verify تأیید کنند.
بزرگترین گلوگاه، دانلود ۱۰۳.۸ گیگابایت وزنهای مدل است که در ۲۴ فایل توزیع شدهاند. به دلیل محدودیتهای پهنای باند Hugging Face، سرعت دانلود معمولاً بین ۳۶ تا ۵۷ مگابایت بر ثانیه متوقف میشود. حتی با اتصال ۴۰۰ مگابیت یا بیشتر، گلوگاه سرور میزبان است، نه اینترنت کاربر.
تخمین زمان دانلود:
- ۴۰۰ مگابیت یا بیشتر: ۳۰ تا ۵۰ دقیقه
- ۲۰۰ مگابیت: حدود ۱ ساعت و ۱۰ دقیقه
- ۱۰۰ مگابیت: حدود ۲ ساعت و ۲۰ دقیقه
- ۵۰ مگابیت: حدود ۴ ساعت و ۴۰ دقیقه
- ۲۵ مگابیت: حدود ۹ ساعت
قطع شدن دانلود ایمن است زیرا از همان بایتی که متوقف شده، ادامه مییابد. تمام ۲۴ فایل با هشهای sha256 که در باینری گنجانده شدهاند، چک میشوند. کاربران میتوانند با دستور pull --verify یک نسخه موجود را در کمتر از ۱۰ ثانیه مجدداً هشگذاری و تأیید کنند.
تحلیل تحریریه
این تغییر در استراتژی استنتاج، گلوگاه را از رم گرانقیمت به حافظه SSD نسبتاً ارزان منتقل میکند. برای یک توسعهدهنده یا علاقهمند به هوش مصنوعی، این یعنی دموکراتیزه شدن دسترسی به مدلهای ۱۰۰+ میلیارد پارامتری که پیش از این تنها در انحصار کاربران Mac Studio Ultra یا ارائهدهندگان ابری بود.
با این حال، اتکا به خواندن از SSD یک سقف عملکرد جدید ایجاد میکند. در حالی که ۱۲ توکن در ثانیه قابل استفاده است، اما به طور قابل توجهی کندتر از مدلهای کوچک (SLM) است که کاملاً در رم جای میگیرند. ارزش واقعی در اینجا سرعت نیست، بلکه توانایی معاوضه تأخیر (Latency) با قابلیتهای استدلالی برتر یک مدل عظیم MoE (مخلوط خبرهها) است. در این راستا، تجربهی مدل Qwen3.8 27B نشان داد که حتی با کاهش سرعت استنتاج، میتوان پاسخها را سریعتر به پایان رساند، موضوعی که در مدلهای عظیمتر با Slotstream اهمیت دوچندانی مییابد.
با پیادهسازی API سازگار با Ollama، Slotstream از ایجاد یک سیلو یا محیط بسته جدید جلوگیری میکند. این ابزار مستقیماً به اکوسیستم موجود هوش مصنوعی محلی متصل میشود و انتقال از یک مدل ۷ میلیارد پارامتری به یک مدل ۱۲۵ میلیارد پارامتری را به جای ارتقای سختافزاری، به اجرای چند دستور ساده تبدیل میکند.
برای اینکه متوجه شوید پیکربندی خاص مک شما میتواند مدل را هندل کند یا خیر، میتوانید دستور slotstream doctor را اجرا کنید تا پیش از شروع دانلود ۱۰۴ گیگابایتی، برنامه حافظه و فضای در دسترس دیسک را پیشبینی کنید.
- اگر مک با رم پایین دارید، ابتدا دستور
slotstream doctorرا اجرا کنید تا از سازگاری حافظه و فضای SSD خود مطمئن شوید. - برای کاهش تأخیر در گفتگوهای طولانی، حتماً از قابلیت Prefix Cache پیشفرض استفاده کنید.
- اگر به بازتولید دقیق پاسخها نیاز دارید، پرچم
--no-prefix-cacheرا فعال کنید.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell و مدیریت حافظه در مقیاس صنعتی مراجعه کنید.




گفتگو