پرش به محتوای اصلی
پرش به محتوای مقاله

Colibrì: اجرای مدل ۷۴۴ میلیارد پارامتری با ۲۵ گیگابایت رم

·۱۹ تیر ۱۴۰۵۹ دقیقه مطالعه
اجرا GLM-5.2 (۷۴۴B MoE) روی کامپیوتر معمولی با ۲۵ گیگابایت رم — کد خالص C، بدون وابستگی، بارگذاری هوشمند متخصصان از دیسک. موت
اجرا GLM-5.2 (۷۴۴B MoE) روی کامپیوتر معمولی با ۲۵ گیگابایت رم — کد خالص C، بدون وابستگی، بارگذاری هوشمند متخصصان از دیسک. موت
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

استریم کردن هوشمند خبره‌ها (Experts) از دیسک به جای بارگذاری کل مدل در رم؛ این مکانیسم اجازه می‌دهد مدل‌های ۷۴۴ میلیاردی با رم ۲۵ گیگابایتی اجرا شوند، بدون اینکه سیستم توسط OOM-killer بسته شود.

تصور کنید یک لپ‌تاپ معمولی در حال اجرای مدلی با ۷۴۴ میلیارد پارامتر است؛ سناریویی که تا پیش از این غیرممکن به نظر می‌رسید. این دسترسی به لطف Colibrì فراهم شده است، موتوری کوچک که با زبان C نوشته شده و مدل عظیم GLM-5.2 را با روش استریم کردن مستقیم داده‌ها از دیسک، روی دستگاه‌هایی با تنها ۲۵ گیگابایت رم اجرا می‌کند.

اجرای مدل‌های سطح پیشرو معمولاً به پردازنده‌های گرافیکی H100 و ترابایت‌ها حافظه VRAM نیاز دارد. همان‌طور که در تحلیل قبلی ما درباره‌ی کاهش فضای دیسک در Unsloth برای GLM-5.2 اشاره کردیم، Colibrì حالا گلوگاه را از ظرفیت حافظه به سرعت دیسک منتقل کرده است. این رویکرد در واقع تکمیلی بر تلاش‌های پلتفرم Unsloth برای اجرای مدل‌های عظیم روی سخت‌افزار خانگی است تا دسترسی به این مدل‌ها برای کاربران عادی تسهیل شود. این موتور با SSD — شبیه به یک میز کار کوچک که هر چه لازم است را از قفسه‌های بزرگ کتابخانه (دیسک) می‌گیرد و روی میز می‌گذارد — برخورد می‌کند تا مدلی که باید کامپیوترهای معمولی را کرش کند، با سرعتی قابل‌قبول کار کند. طبق مستندات این پروژه، یک مدل ۷۴۴ میلیاردی اکنون روی سخت‌افزاری اجرا می‌شود که قیمت آن حتی از قیمت یک فنِ پردازنده H100 کمتر است.

معماری استریمینگ

به نقل از مستندات گیت‌هاب این پروژه که در ۹ جولای ۲۰۲۶ منتشر شد، این موتور از یک تقسیم‌بندی هوشمند حافظه استفاده می‌کند. در یک مدل ترکیب خبره‌ها (Mixture of Experts یا MoE) — که مثل تیمی از متخصصان است و برای هر سوال فقط چند نفر از آن‌ها بیدار می‌شوند — مدل ۷۴۴ میلیاردی تنها حدود ۴۰ میلیارد پارامتر را برای هر توکن فعال می‌کند. از این مقدار، تنها ۱۱ گیگابایت پارامتر بین هر توکن تغییر می‌کند که همان «خبره‌های ارجاع‌شده» هستند.

بخش‌های متراکم شامل توجه (Attention)، بردار معنایی (Embedding) و خبره‌های مشترک، در مجموع ۱۷ میلیارد پارامتر دارند. این بخش‌ها در حالت کوانتایزاسیون (Quantization) int4 حدود ۹.۹ گیگابایت فضا می‌گیرند و همیشه در رم باقی می‌مانند تا پایداری سیستم حفظ شود. این مجموعه «مقیم» برای تضمین پایداری عملیاتی، ثابت نگه داشته می‌شود.

۲۱,۵۰۴ خبره ارجاع‌شده باقی‌مانده روی دیسک قرار دارند (شامل ۷۵ لایه MoE با ۲۵۶ خبره در هر لایه، به‌علاوه هد MTP) و در مجموع حدود ۳۷۰ گیگابایت فضا اشغال می‌کنند. هر خبره در حالت int4 تقریباً ۱۹ مگابایت حجم دارد. موتور Colibrì این خبره‌ها را بر اساس نیاز استریم می‌کند و از یک حافظه پنهان (Cache) LRU برای هر لایه، یک ذخیره‌گاه سریع اختیاری (pinned hot-store) و همچنین از Page Cache سیستم‌عامل به عنوان یک بافر L2 رایگان استفاده می‌کند.

این ساختار تضمین می‌کند که سیستم هرگز توسط «قاتل حافظه» (OOM-killer) لینوکس متوقف نشود. موتور در هنگام شروع به کار، اندازه حافظه پنهان خبره‌ها را بر اساس مقدار MemAvailable به‌طور خودکار تنظیم می‌کند. در این محاسبه، پیش‌بینی پیک مصرف شامل مجموعه کاری (working set)، حافظه KV cache، ردیف‌های MTP و بافرهای بازسازی در نظر گرفته می‌شود تا ایمنی رم کاملاً تضمین گردد.

جزئیات پیاده‌سازی فنی

  • هسته موتور: کل زمان اجرای برنامه در یک فایل C (به نام c/glm.c با حدود ۱,۳۰۰ خط) قرار دارد که دارای هدرهای کوچک و هیچ وابستگی خارجی نیست. در زمان اجرا، به هیچ پایتون، کتابخانه BLAS یا GPU نیاز ندارد. چنین رویکردی در پیاده‌سازی‌های مینیمال و مستقل، مانند ساخت مدل GPT-2 از صفر با زبان C و CUDA دیده شده که هدف آن حذف وابستگی‌های سنگین کتابخانه‌های ML است. معماری این موتور با استفاده از یک مدل تصادفی کوچک، در حالت‌های Teacher-forcing (۳۲ از ۳۲ توکن) و Greedy (۲۰ از ۲۰ توکن) در برابر یک ارکل (Oracle)基于 Transformers کاملاً اعتبارسنجی شده و توکن-به-توکن دقیق است.
  • کوانتایزاسیون: سیستم از یک مبدل آفلاین (c/convert_fp8_to_int4.py) برای تبدیل نقاط بازرسی FP8 به یک ظرف فشرده int4 استفاده می‌کند. این فرآیند برای جلوگیری از اشغال بیش از حد فضای دیسک، تکه‌های ۵ گیگابایتی را یکی‌یکی دانلود کرده، مقیاس‌های بلوک ۱۲۸×۱۲۸ را دی‌کوانتایز و سپس مجدداً کوانتایز می‌کند. این روش باعث می‌شود نیازی به داشتن کل ۷۵۶ گیگابایت مدل FP8 روی دیسک نباشد و فرآیند کاملاً قابلیت ازسرگیری (resumable) دارد.
  • فشرده‌سازی حافظه: این موتور از توجه MLA (با q/kv-LoRA و Partial RoPE متناوب) و یک KV Cache فشرده بهره می‌برد. از آنجایی که GLM-5.2 دارای ۶۴ هد است و از GQA استفاده نمی‌کند، این تکنیک نیاز حافظه را از ۳۲,۷۶۸ عدد اعشاری (float) به تنها ۵۷۶ عدد در هر توکن کاهش می‌دهد که یعنی ۵۷ برابر کمتر.
  • رمزگشایی گمانه‌زنانه: قابلیت رمزگشایی گمانه‌زنانه (Speculative Decoding) با استفاده از هد پیش‌بینی چند-توکنی (MTP) مدل GLM-5.2 در لایه ۷۸ پیاده شده است. این هد توکن‌هایی را پیش‌بینی (Draft) می‌کند که سپس مدل اصلی آن‌ها را در یک Pass پیشروِ دسته‌ای (batched forward) تایید می‌کند. برای عملکرد صحیح، این هد باید در حالت int8 باشد؛ زیرا در حالت int4، نرخ پذیرش به ۰ تا ۴ درصد سقوط می‌کند و گمانه‌زنی عملاً غیرفعال می‌شود. در حالت int8، نرخ پذیرش بین ۳۹ تا ۵۹ درصد است که منجر به تولید ۲.۲ تا ۲.۸ توکن در هر مرحله پیشرو می‌شود. این فرآیند از طریق Rejection Sampling، بدون هیچ‌گونه کاهش کیفی در نمونه‌برداری صورت می‌گیرد.
  • بهینه‌سازی کرنل: استفاده از کرنل‌های ضرب صحیح (فعال‌سازهای int8 مدل Q8_0 و دستورات AVX2 maddubs) سرعت عملیات matmul را ۱.۴ تا ۲.۵ برابر افزایش داده است (۱۱۹ GFLOP/s اندازه‌گیری شده). در حالی که int4 در حالت دسته‌ای ۱.۸ برابر سرعت را می‌افزاید، اما برای تک-ردیفی (single-row)، به دلیل کندتر بودن، به صورت پیش‌فرض از f32 استفاده می‌شود.
  • مسیریابی پیشرفته: این سیستم از مسیریابی سیگموئیدی مشابه DeepSeek-V3 (با استفاده از noaux_tc و routed_scaling_factor)، خبره‌های مشترک و سه لایه متراکم اول استفاده می‌کند. همچنین تکنیک «Batch-union MoE» در مراحل Prefill و تایید MTP به کار رفته است؛ به این صورت که هر خبره منحصربه‌فرد در یک دسته فقط یک‌بار خوانده شده و برای تمام موقعیت‌هایی که به آن ارجاع داده‌اند، اعمال می‌شود.
  • ورودی/خروجی دیسک: به جای mmap، از دستورات pread و fadvise از طریق یک خواننده سفارشی safetensors (c/st.h) استفاده شده تا میزان استفاده از رم (RSS) در سطح ثابتی باقی بماند. همچنین از قابلیت async expert readahead (WILLNEED) استفاده می‌شود تا بلوک بعدی خبره‌ها در حالی که بلوک فعلی در حال ضرب ماتریسی است، خوانده شود.
  • توکن‌ساز: یک توکن‌ساز BPE در سطح بایت (مشابه GPT-2) با پشتیبانی از Regex برای ویژگی‌های Unicode و ۳۲۰ هزار ادغام (merge) مستقیماً در C پیاده شده است.
  • جذب وزن‌ها: تکنیک جذب وزن‌های DeepSeek برای رمزگشایی اجرا شده است. این کار باعث حذف بازسازی k/v برای هر توکن می‌شود؛ به گونه‌ای که Query مقدار kv_b را جذب کرده و زمینه (context) پس از توجه تصویر می‌شود. این روش با اجبار به جذب در تمام مراحل، به صورت دقیق (TF 32/32 و تولید 20/20) اعتبارسنجی شده است.

بنچمارک‌های عملکرد

سرعت خروجی کاملاً به قابلیت خواندن تصادفی سخت‌افزار بستگی دارد. در یک محیط WSL2 با ۱۲ هسته و ۲۵ گیگابایت رم و NVMe از طریق VHDX (که سرعت خواندن تصادفی آن در حدود ۱ گیگابایت بر ثانیه است)، سرعت در شروع‌های «سرد» (Cold Start) بین ۰.۰۵ تا ۰.۱ توکن در ثانیه است، زیرا هر توکن نیاز به خواندن ۱۱.۴ گیگابایت داده از دیسک دارد (۷۵ لایه ضرب در ۸ خبره).

با این حال، Colibrì یک «حافظه یادگیری» دارد که خبره‌های پرکاربرد در هر گفتگو را در فایل .coli_usage ذخیره می‌کند. با فعال کردن پرچم PIN در هنگام شروع، این خبره‌های «داغ» در رم‌های خالی تثبیت شده و تأخیر پاسخ به‌شدت کاهش می‌یابد. نتایج اندازه‌گیری شده توسط جامعه کاربران به شرح زیر است:

  • Intel Core Ultra 7 270K Plus (۲۴ رشته، ۲۴ گیگ رم، WSL2): سرعت ۰.۰۷ توکن در ثانیه (پیش‌فرض) و ۰.۱۱ توکن در ثانیه با پرچم --topp 0.7. محدودیت رم باعث شد حافظه پنهان تنها ۲ اسلات برای هر لایه داشته باشد و رمزگشایی در حالت «سرد» باقی بماند. نرخ برخورد خبره (Hit rate) ۳-۴٪ در حالت عادی و ۱۱٪ با --topp 0.7 بود و مقدار RSS بین ۱۴.۱ تا ۱۴.۷ گیگابایت ثبت شد.
  • Apple M5 Max (۱۸ هسته، ۱۲۸ گیگ رم یکپارچه): سرعت ۱.۰۶ توکن در ثانیه (در حالت MTP off). سرعت دیسک ۱۴.۲ گیگابایت بر ثانیه (O_DIRECT) باعث شد گلوگاه دوباره به بودجه رم و سرعت کرنل‌ها بازگردد. این بهینه‌سازی‌های سطح پایین برای سخت‌افزارهای اپل یادآور تلاش‌های فریم‌ورک Espresso برای افزایش سرعت استنتاج ترنسفورمرها در مک است که با دسترسی مستقیم به سخت‌افزار، کارایی را به طرز چشمگیری ارتقا داد. نرخ برخورد خبره ۲۳٪ با RSS معادل ۲۱.۸ گیگابایت بود.

پیش‌بینی مقیاس‌پذیری عملکرد:

  • لینوکس بومی، NVMe PCIe4 (۳ تا ۵ گیگابایت بر ثانیه)، ۳۲ گیگ رم: حدود ۰.۵ تا ۱ توکن در ثانیه.
  • NVMe PCIe5 یا RAID0 (۸ تا ۱۲ گیگابایت بر ثانیه)، ۶۴ گیگ رم (با PIN کردن ۴۰ گیگابایت): حدود ۲ تا ۴ توکن در ثانیه.
  • ۱۲۸-۲۵۶ گیگابایت رم، ۱۲ هسته: حدود ۲ تا ۴ توکن در ثانیه (در این حالت گلوگاه به matmul منتقل می‌شود؛ ۸۰ GFLOP/token در مقابل کرنل‌های ۲۵۰ GFLOP/s AVX2).
  • رم بالا و متقارن + ۲۴-۳۲ هسته یا پشتیبانی از AVX-512/VNNI: حدود ۵ تا ۱۵ توکن در ثانیه.

هشدارها و تبادل سخت‌افزاری

این روش هزینه‌ی فیزیکی دارد. تعداد زیاد خواندن‌های تصادفی در شروع‌های سرد (حدود ۱۱ گیگابایت برای هر توکن) فشار زیادی به دیسک وارد می‌کند. اگرچه عملیات خواندن ایمن است، اما Page Cache سیستم‌عامل می‌تواند باعث ایجاد عملیات نوشتن شود. این موضوع ممکن است استهلاک SSDهای ارزان‌قیمت را در استفاده‌های سنگین تسریع کند. توصیه می‌شود کاربران وضعیت سلامت درایو (Disk Health) خود را نظارت کنند.

برای کاهش فشار و اتلاف کارایی، کاربران می‌توانند از پرچم --topp 0.7 استفاده کنند؛ این یک تنظیم تطبیقی برای top-p خبره‌ها است که می‌تواند خواندن از دیسک را ۳۰ تا ۴۰ درصد کاهش دهد. همچنین سیستم از قابلیت AUTOPIN برای بهینه‌سازی خبره‌های پرکاربرد بر اساس لاگ‌های استفاده پشتیبانی می‌کند. برای نمونه‌برداری، موتور به طور پیش‌فرض از دمای ۰.۷ و Nucleus ۰.۹۰ استفاده می‌کند. این مقادیر برای واقعیت‌های int4 تنظیم شده‌اند، زیرا تنظیمات رسمی (۱.۰ و ۰.۹۵) تمایل دارند نویزهای کوانتایزاسیون را از دم (tail) توزیع نمونه‌برداری کنند.

نکته دیگر در مورد MTP است: در یک کش سرد، هر پیش‌بینی تایید شده باعث ارجاع به خبره‌های اضافی می‌شود (افزایش بار از ۶۶۰ به ۱۱۰۰ لود خبره در هر توکن). بنابراین گمانه‌زنی ممکن است تا زمان گرم شدن کش یا فعال شدن PIN، باعث کاهش خالص سرعت شود. به همین دلیل پرچم DRAFT=0 و یک گارد تطبیقی فراهم شده است.

تحلیل: جابجایی منحنی دسترسی به هوش مصنوعی

این پیشرفت فرضیه بنیادین مبنی بر نیاز به مراکز داده برای اجرای مدل‌های سطح پیشرو را به چالش می‌کشد. Colibrì با اثبات اینکه یک مدل ۷۴۴ میلیاردی MoE می‌تواند روی یک لپ‌تاپ (هرچند کند) اجرا شود، نشان داد که I/O دیسک، اگرچه خسته‌کننده است، اما جایگزینی عملی برای VRAM است.

این موتور با یک ارکل Transformers کاملاً اعتبارسنجی شده است (۳۲/۳۲ در Teacher-forcing و ۲۰/۲۰ در حالت Greedy). حتی تکنیک «جذب وزن» DeepSeek برای رمزگشایی را که بازسازی k/v را از طریق جذب kv_b در Query حذف می‌کند، شامل شده است.

برای کاربر نهایی، این یعنی «سقف هوشی» سخت‌افزار محلی دیگر با بودجه رم تعیین نمی‌شود، بلکه با صبر کاربر و سرعت SSD گره خورده است. ما به سمتی می‌رویم که کیفیت مدل از هزینه سخت‌افزار تفکیک شود، به شرطی که نرم‌افزار بتواند جریان داده‌ها را به طور بهینه مدیریت کند.

گام بعدی شما

  • اگر قصد اجرای مدل را دارید، ابتدا ابزار iobench.c را اجرا کنید تا سرعت خواندن تصادفی (به‌طور خاص تکه‌های ۱۹ مگابایتی) دیسک خود را بسنجید. این ابزار را می‌توان با دستور gcc -O2 -fopenmp iobench.c -o iobench کامپایل کرد و هر دو حالت Buffered و O_DIRECT را تست نمود.
  • برای بهینه‌سازی مصرف دیسک و افزایش سرعت، حتماً از پرچم --topp 0.7 استفاده کنید.
  • اگر حافظه رم شما زیاد است، از قابلیت AUTOPIN برای تثبیت خبره‌های پرکاربرد در حافظه بهره ببرید.
  • یک حوزه کلیدی برای مشارکت‌های آینده، بنچمارک کیفیت است. در حال حاضر داده‌های کافی درباره هزینه دقت (accuracy) در کوانتایزاسیون int4 وجود ندارد. اجرای coli bench داخلی (که از امتیازدهی log-likelihood مشابه EleutherAI-harness استفاده می‌کند) برای تست‌های MMLU، HellaSwag و ARC ارزشمندترین کمک ممکن است. مدل GLM-5.2 با دقت کامل امتیازاتی بین ۸۵ تا ۹۵ درصد می‌گیرد و هدف این است که ببینیم مدل int4 تا چه حد به این اعداد نزدیک است.

همچنین منتظر به‌روزرسانی‌های آینده در مورد DSA sparse attention باشید. توسعه‌دهنده در حال حاضر در حال ادغام وزن‌های «lightning-indexer» (استخراجی ۱۰۸ گیگابایتی از مخزن FP8) از طریق حالت مبدل --indexer است تا توجه متراکم (dense attention) را برای زمینه‌های (contexts) بیش از ۲۰۴۸ توکن جایگزین کند.

اما داستان سخت‌افزاری این تحول حتی شگفت‌انگیزتر است — برای درک اثر این متدها بر تراشه‌های نسل جدید، به تحلیل ما درباره‌ی تراشه‌های Blackwell مراجعه کنید.

چرا این موضوع مهم است؟

این ابزار با تکیه بر تخصص در مدیریت حافظه، سد اقتصادی دسترسی به مدل‌های ۷۰۰ میلیاردی را می‌شکند. اکنون اعتبار اجرای مدل‌های پیشرو از مراکز داده به SSDهای سریع منتقل شده است.

تأثیر برای ایران

این ابزار برای توسعه‌دهندگان ایرانی که با محدودیت بودجه خرید GPUهای گران‌قیمت مواجه‌اند، راهکاری حیاتی برای اجرای مدل‌های محلیِ غول‌پیکر فراهم می‌کند.

·نگاه ما
تحریریه دات‌هوش

جایگزینی VRAM با سرعت I/O دیسک، پارادایم «مالکیت مدل» را تغییر می‌دهد. این رویکرد نشان می‌دهد که برای بسیاری از کاربردهای غیرهم‌زمان (Asynchronous)، داشتن مدل‌های غول‌پیکر در خانه، حتی با سرعت پایین، سودمندتر از ارسال داده‌ها به APIهای ابری است. در واقع، صبر کاربر به یک منبع محاسباتی تبدیل شده است.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.