اگر از سختافزارهای گرانقیمتی مثل H200 استفاده میکنید، احتمالاً ۲۵ درصد از زمان پردازش شما صرف انتظار بیهوده است. باید بدانید که گلوگاه استنتاج در مدلهای زبانی بزرگ، همیشه قدرت محاسباتی نبوده، بلکه مدیریت نوبتهای پردازش است. این تمرکز بر بهینهسازی گلوگاهها، بخشی از روند کلی کاهش وابستگی به سختافزارهای حجیم است؛ مشابه آنچه در پروژه ion7-core برای کاهش مصرف رم در اجرای مدلها مشاهده کردیم.

به نقل از تحلیل فنی منتشر شده در ۱۴ مه ۲۰۲۶، شرکت Hugging Face توانسته است با حذف شکافهای زمانی (Idle Gaps) بین بارهای کاری CPU و GPU، سرعت تولید توکن را ۲۲ درصد افزایش دهد. این دستاورد از طریق تغییر رویکرد از Batching همگام (Synchronous) به نامتقارن (Asynchronous) حاصل شده است که بهرهوری GPU را به رقم خیرهکننده ۹۹.۴ درصد میرساند.
در سیستمهای رایج، CPU و GPU بهصورت نوبتی عمل میکنند؛ یعنی GPU در حالی که CPU در حال آمادهسازی دسته (Batch) بعدی است، بیکار میماند. همانطور که در تحلیل قبلی ما دربارهی بهینهسازی لایههای استنتاج اشاره کردیم، این وقفه در حلقههای با فرکانس بالا، بخش بزرگی از زمان اجرا را میبلعد.


بر اساس مستندات این پروژه، تیم توسعه برای حل این مشکل از سه جریان CUDA (CUDA Streams) مجزا استفاده کرده است:
- H2D: انتقال داده از میزبان به دستگاه (Host-to-Device)
- Compute: انجام محاسبات اصلی
- D2H: انتقال داده از دستگاه به میزبان (Device-to-Host)
آنها برای حفظ ترتیب عملیات بدون مسدود کردن CPU، از رویدادهای CUDA (CUDA Events) بهره بردند.


برای جلوگیری از تداخل دادهها (Race Conditions)، یک سیستم بافرینگ دوگانه (Slots A and B) و یک استخر حافظه برای گرافهای CUDA (CUDA Graphs) طراحی شده است. همچنین یک «ماسک انتقال» (Carry-over mask) برای مدیریت توکنهای تولید شده در دسته N که برای دسته N+1 مورد نیاز هستند، پیادهسازی شده تا خط لوله پردازش هرگز متوقف نشود.


در آزمایشهای انجام شده روی یک مدل 8B با اندازه دسته ۳۲، زمان تولید ۸ هزار توکن از ۳۰۰.۶ ثانیه به ۲۳۴.۵ ثانیه کاهش یافت. این یعنی GPU تقریباً در تمام مدت فرآیند فعال بوده است.

این تغییر، معیار کارایی استنتاج را جابهجا میکند. وقتی صف کاری GPU کاملاً اشباع شود، گلوگاه از «ارکستراسیون CPU» به «ظرفیت محاسباتی خالص GPU» منتقل میشود. این موضوع بهویژه برای یادگیری تقویتشده (Reinforcement Learning) و تولید متون با پنجره متنی بلند (بیش از ۱۶ هزار توکن) که در آنها نرخ خروجی (Throughput) حیاتی است، اهمیت دارد.
این قابلیت اکنون در کلاس ContinuousBatchingAsyncIOs در کتابخانه transformers در دسترس است.
گام بعدی شما
- اگر از محیطهای تولیدی (Production) استفاده میکنید، کلاس
ContinuousBatchingAsyncIOsرا در آخرین نسخه transformers جایگزین متدهای قدیمی کنید. - نرخ بهرهوری GPU خود را با ابزارهای مانیتورینگ بررسی کنید تا اثر حذف شکافهای CPU را بسنجید.
- در صورت استفاده از مدلهای با Context بلند، تأثیر این بهروزرسانی بر کاهش تأخیر (Latency) را اندازهگیری کنید.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو