TL;DR
- مهندسی برگشت ۱۸ نوامبر ۲۰۲۵•۱۰ دقیقه خواندن در سیستمهای ناهمزمان مانند React و هسته لینوکس،.
- یک دستورالعمل اصلی وجود دارد:.
- هرگز حلقه رویداد را مسدود نکنید.
چه اتفاقی افتاد
مهندسی برگشت ۱۸ نوامبر ۲۰۲۵•۱۰ دقیقه خواندن در سیستمهای ناهمزمان مانند React و هسته لینوکس،. یک دستورالعمل اصلی وجود دارد:.
هرگز حلقه رویداد را مسدود نکنید. بارهای کاری استنتاج هوش مصنوعی دستورالعمل مشابهی دارند: هرگز GPU را مسدود نکنید.
هنگامیکه GPU را مسدود میکنید،. با ناکارآمدی خاصی مواجه میشوید که سربار میزبان نامیده میشود.
در این پست وبلاگ،. ما به شما نشان خواهیم داد که چگونه بفهمید استنتاج شما از سربار میزبان رنج میبرد،.
چرا این موضوع بسیار بد است،. و در مورد آن چه باید کرد - از جمله اینکه چگونه سربار میزبان را در موتورهای استنتاج.
منبعباز درجه تولید کاهش داده ایم. سربار میزبان به صورت استفاده کم از هسته GPU نشان داده میشود.
ما در عصری زندگی میکنیم که در آن استنتاج هوش مصنوعی آشکارا بسیار کند است. انتظارات کاربر و سیستمهای رایانهای با هم تکامل یافتهاند بهطوری که هر سیستم رایانهای که بیش از چند.
صد میلیثانیه طول میکشد تا پاسخ دهد «آهسته» است. استنتاج هوش مصنوعی برای برآورده کردن این الزامات تعاملی تلاش میکند.
اساسا،. گلوگاه باید در سیلیکون حل شود:.
بایتهای بیشتر در ثانیه از حافظه و عملیات بیشتر در ثانیه از هستهها. اما در این میان ما بهعنوان مهندس نرم افزار باید از سخت افزاری که داریم بهترین استفاده را.
ببریم. ما قبلاً در مورد چگونگی تعیین اینکه آیا از سخت افزار GPU خود بهطور مؤثر استفاده میکنید،.
از مدیریت ناوگان گرفته تا استفاده از لوله Tensor Core،. نوشته ایم.
سربار میزبان در وسط ظاهر میشود:. پیشرفت در سطح کل GPU متوقف میشود در حالی که منتظر میماند تا CPU کار را.
برای آن آماده کند. این معیار توسط nvidia-smi و ابزارهای دیگر بهعنوان "استفاده از GPU" گزارش شده است.
ما توصیفیتر «استفاده از هسته GPU» را ترجیح میدهیم - از چه کسری از ظرفیت GPU. شما برای اجرای هستههای CUDA استفاده میکنید؟
اگر حداقل یک هسته CUDA در هر نقطه از زمان در طول اندازهگیری روی GPU اجرا شود،. 100 ٪ است.
اگر همیشه برای کل سیستم کاری وجود داشته باشد که انجام دهد (همانطور که معمولاً چنین است برای. یک سیستم تولید)،.
هر نقطهای که در آن GPU کار نمیکند،. نمونهای از سربار میزبان است.
برای شناسایی فرصتها برای رفع سربار میزبان،. توصیه میکنیم به شدت به کد خیره شوید تا زمانی که موتور استنتاج خود را با PyTorch Profiler.
یا Nsight Systems ردیابی کنید. اگر این ردیابیها را به صورت بصری مرور کنید،.
«شکافها» را در جریانهای CUDA پیدا خواهید کرد – این فرصتهای شما برای رفع سربار میزبان است. سربار میزبان بد است.
با تغذیه مناسب،. یک GPU مرکز داده مدرن میتواند حدود یک میلیون عملیات ممیز شناور را در یک نانوثانیه تکمیل.
کند. این بدان معناست که هر نانوثانیهای که GPU بیکار میماند،.
زیرا CPU تصمیم میگیرد که پردازنده گرافیکی بعدی چه کاری باید انجام دهد،. اتلاف یک میلیون عملیات است – بیش از آن چیزی که شما در طول عمر خود با دست.
انجام میدهید. و این تأثیر مستقیمیبر کارایی استنتاج هوش مصنوعی دارد:.
اگر سربار میزبان شما 50 ٪ باشد،. هزینه GPU برای شما استنتاج 2 برابر چیزی است که میتواند باشد.
و هزینههای GPU معمولا محرک اصلی هزینههای استنتاج هستند. به آن مانند یک دریانورد و کشتی آنها فکر کنید.
دریانورد باید برای سفر به اندازه کافی از قبل برنامهریزی کند که کشتی هرگز در انتظار جهت. متوقف نشود.
هر زمان که کشتی در حالی که منتظر است ناوبر تصمیم بگیرد که چه مسیر و سرعتی را. طی کند متوقف میشود،.
سفر با "ناوبر بالای سر" - و مسافران ناراضی روبرو میشود. در بارهای کاری استنتاج هوش مصنوعی،.
میزبان CPU مانند ناوبر است:. تصمیم میگیرد چه کاری باید انجام شود.
دستگاه GPU مانند کشتی است: کار واقعی را انجام میدهد. و کاپیتانهای خوب،.
مانند همه رهبران خوب،. نمیخواهند که کار واقعی در تصمیمگیری متوقف شود مگر اینکه کاملاً ضروری باشد.
همگام سازی غیر ضروری با CPU سربار میزبان را معرفی میکند. بخش زیر از دستورالعملهای سفر را در نظر بگیرید:.
«به محض اینکه به صخرههای مرجانی رسیدید،. به سمت جزیره در افق".
هنگامیکه کشتی به صخره مرجانی میرسد،. دریانورد باید جزیره را شناسایی کند و مسیر را به سمت جزیره تعیین کند.
در این مدت کشتی بیکار خواهد ماند. این کار دشوارتر است شناسایی و در تولید ثابت شده است موتورهای استنتاج در یک مورد،.
تانسور تعبیههای موقعیت روی CPU ساخته میشد و سپس به GPU منتقل میشد. اما برای یک مورد خاص مهم که به ویژه در معرض سربار میزبان (رمزگشایی) بود،.
تانسور همیشه ساختار سادهای دارد،. بنابراین میتوان آن را بر روی GPU ساخت.
اطلاعات بیشتر در روابط عمومیما را اینجا بخوانید. توجه داشته باشید که پیروزی در اینجا این نیست که GPU برای محاسبه مقادیر تانسور سریعتر است.
در عوض، این است که ما از انتقال داده همزمان اجتناب میکنیم. در مورد دیگری،.
تانسور طول صفحه کش KV از GPU به CPU منتقل شد تا از انتخاب هسته مناسب پشتیبانی کند. اما باز هم،.
در یک مورد خاص مهم که به ویژه در معرض سربار میزبان (صفحات اندازه واحد) بود،. آن تانسور همیشه تمام 1s خواهد بود،.
بنابراین میتوان آن را مستقیماً روی CPU ساخت - محاسبات،. نه ارتباطات.
در اینجا،. حتی واضحتر است که پیروزی از اسب بخار GPU حاصل نمیشود،.
زیرا ما در واقع ساختار را از GPU در اینجا منتقل کردیم. هر راه اندازی هسته CUDA یک منبع بالقوه سربار میزبان است.
دستورالعملهای زیر را برای یک کشتی در نظر بگیرید:. "برای پنج دقیقه حرکت را در S قرار دهید.
" "برای ده دقیقه حرکت را به سمت E تنظیم کنید. " «به سمت N تنظیم کنید.» پس از پایان هر دستورالعمل،.
کشتی برای مدت کوتاهی بیکار مینشیند و منتظر است تا ناوبر بگوید چه کاری باید انجام شود. اگر بین تغییرات سرفصلها چند دقیقه فاصله باشد و فقط چند ثانیه طول بکشد، این خیلی بد نیست.
اما اگر کشتی باید دنبالهای پیچیده از سرفصلهای کوتاه را دنبال کند که در آن هر. مسیر فقط چند ثانیه طول میکشد - مثلاً برای ترسیم مسیری بین اسکیلا و کریبدیس - این.
سربار شروع به اهمیت میکند. بهتر است اگر بتوانیم یک «دستورالعمل» انجام دهیم که فقط چند عنوان را با هم ترکیب کند:.
«Set heading را به مدت پنج دقیقه روی S،. سپس تنظیم کنید.
به مدت ده دقیقه به سمت E حرکت کنید، سپس به سمت N حرکت کنید. همین مشکل در بارهای کاری استنتاج هوش مصنوعی به وجود میآید.
برای راهاندازی یک هسته بر روی GPU به ترتیب میکروثانیه طول میکشد. این ممکن است زیاد به نظر نرسد - هرچند به یاد داشته باشید،.
این زمان برای یک میلیارد یا بیشتر عملیات حسابی روی GPU کافی است! بهعلاوه این میکروثانیهها اضافه میشوند، بهویژه برای مدلهای کوچک با ورودیهای کوچک.
بهعنوان مثال،. یک GPU B200 با حافظه HBM3e میتواند یک مدل 8 گیگابایتی را از RAM برای ثبت در یک.
میلیثانیه استریم کند (این «کران پایین حافظه» در تأخیر بین توکنها است). یک مدل هشت گیگابایتی مانند Qwen 3 8B FP8 با دهها لایه متشکل از دهها عملیات ساده،.
صدها هسته دارد. در هر میکروثانیه، صدها راهاندازی هسته بهطور معناداری به بودجه میلیثانیهای شما میخورد.
بهتر است که بتوانیم چندین راه اندازی را در یک راه اندازی واحد ترکیب کنیم و هزینه سربار. را فقط یک بار بپردازیم.
فیوز چندتایی هستهها برای کاهش سربار میزبان از راه اندازی هسته. یکی از ترفندهای کلیدی برای کاهش سربار راهاندازی هسته، ادغام هستهها در یک هسته است.
این کار را میتوان به صورت دستی یا خودکار انجام داد. در PyTorch، محبوبترین چارچوب شتاب شبکه عصبی، محبوبترین ابزار ترکیب هسته، کامپایلر Torch است.
در یک مورد،. ما توانستیم از کامپایلر Torch برای کاهش تعداد راهاندازی هسته از 20 به 3 استفاده کنیم،.
حدود 30 میکروثانیه از سربار میزبان حذف و 20 درصد از میانگین تأخیر پایان به انتها کاهش یابد. از نمودارهای CUDA برای استهلاک بیشتر سربار راه اندازی استفاده کنید.
در اصل، هر هسته در یک پاس استنتاج میتواند با هم ترکیب شود. در عمل، این برای کامپایلرها بسیار سخت و برای انسانها بسیار سخت است.
بنابراین حتی پس از ادغام هسته دستی و خودکار،. شما معمولاً با تعداد خوبی از راهاندازی هسته در هر پاس استنتاج باقی میمانید.
راه اندازی هستههای متعددی که یک نمودار غیر چرخهای جهت دار را تشکیل میدهند را. میتوان در یک واحد قابل راه اندازی با نمودارهای CUDA ادغام کرد.
اینها قبلاً در سرورهای استنتاج تولید مانند SGLang و vLLM استفاده میشوند. از آنجایی که این موتورها و مدلهایی که در آنها ارائه میشوند،.
به بلوغ میرسند،. انتظار داریم راهاندازی کل پاسهای رو به جلو بهعنوان یک CUDA Graph معمولی شود.
و ما مشتاقیم که روی آن کار کنیم! ما در حال ایجاد زیرساخت برای هوش باز هستیم.
در Modal،. ما معتقدیم که هر میکروثانیه مهم است - به ویژه برای بارهای کاری حساس به عملکرد در حال.
ظهور مانند هوش مصنوعی. این بدان معناست که سربار میزبان غیرقابل قبول است.
ما مفتخریم که به موتورهای استنتاج منبعباز کمک میکنیم و به پیشرفت هنر برای استنتاج عملکردی. مدلهای باز کمک میکنیم.
اگر در حال ساخت استنتاج AI تولید هستید و همین احساس را دارید، به ما اطلاع دهید. زیرساخت هوش مصنوعی بسیار بهینه ما آماده پشتیبانی از شما است.
اگر هستید علاقه مند به کار بر روی موتورهای استنتاج منبعباز، ما استخدام میکنیم. آماده باشید تا ساعتها صرف تراشیدن یک میکروثانیه از مسیر کدی کنید که تریلیون بار اجرا می.
شود.
چرا مهم است
اهمیت این خبر در این است که روی استفاده واقعی از AI و تصمیمگیری سازمانی اثر میگذارد.
منبع
لینک منبع اصلی در کارت و صفحه مقاله نمایش داده میشود.
