بررسی سلامت ما یک سرور مدل سالم را هشت بار در یک روز راه‌اندازی مجدد کرد

عملیات

در 22 ژوئیه یک واچ‌داگ سرور مدل محلی ما را هشت بار راه‌اندازی مجدد کرد. هیچ‌کدام از این راه‌اندازی‌های مجدد پشت خود کرشی نداشتند. همان بررسی‌ای که قرار بود مدل را بالا نگه دارد، همان چیزی بود که آن را پایین می‌آورد.

چه اتفاقی افتاد

سرور مدل روی یک دستگاه NVIDIA GB10 با vLLM اجرا می‌شد و برای یک درخواست تکی حدود 8 توکن در ثانیه تولید می‌کرد. هر پنج دقیقه یک واچ‌داگ یک درخواست چت واقعی برای آن می‌فرستاد و تا 45 ثانیه برای پاسخ صبر می‌کرد. پنج بررسی ناموفق پشت سر هم به معنای سرور هنگ‌کرده بود و واچ‌داگ آن را راه‌اندازی مجدد می‌کرد. یک راه‌اندازی مجدد، مدل را برای چند دقیقه از دسترس خارج می‌کرد در حالی که حدود 19 گیگابایت وزن‌ها دوباره بارگذاری می‌شدند.

آن روز یک کار دسته‌ای دو تا چهار درخواست را برای دقایقی روی سرور مشغول نگه می‌داشت. درخواست واچ‌داگ در صف پشت آن‌ها منتظر می‌ماند، زمانش تمام می‌شد و به عنوان یک خطا ثبت می‌شد. پنج بررسی از این دست بعد، یک سرور سالم راه‌اندازی مجدد شد. ما یک فایل پرچم «مشغول» داشتیم که واچ‌داگ به آن احترام می‌گذاشت، اما کار دسته‌ای هرگز آن را تنظیم نمی‌کرد.

چگونه یک راه‌اندازی مجدد کاذب به راه‌اندازی مجدد بعدی منجر شد

هر راه‌اندازی مجدد درخواست‌های در حال انجام را با خطای 500 شکست می‌داد («cannot schedule new futures after shutdown»). یک واچ‌داگ دوم خطاهای 500 را می‌شمرد و وقتی تعدادشان زیاد می‌شد، سرور را راه‌اندازی مجدد می‌کرد، و هرچه خطاهای بیشتری می‌دید، زودتر اقدام می‌کرد. بنابراین هر راه‌اندازی مجدد کاذب، راه‌اندازی مجدد بعدی را زودتر فرا می‌خواند. در مجموع، چهار واچ‌داگ جداگانه می‌توانستند آن سرور را روی تایمرهای 5، 10، 15 و 30 دقیقه‌ای راه‌اندازی مجدد کنند.

قاعده‌ای که از آن گرفتیم

یک بررسی سلامت نباید از چیزی که محافظت می‌کند استفاده کند. منبع کمیاب یک سرور مدل، اسلات‌های آن برای درخواست‌های در حال انجام است. بررسی‌ای که یکی از آن اسلات‌ها را می‌گیرد یا برای یکی منتظر می‌ماند، بخشی از باری است که قرار است آن را قضاوت کند. ارزان بررسی کنید و فقط زمانی راه‌اندازی مجدد کنید که بتوانید نشان دهید سرور گیر کرده است.

بررسی‌ای که جایگزین آن شد

vLLM شمارنده‌های خودش را در /metrics منتشر می‌کند. بررسی جدید ابتدا آن‌ها را می‌خواند:

نسخه اول توکن‌های تولیدشده را به عنوان پیشرفت می‌شمرد. از هشت آزمون سربلند بیرون آمد و در اولین اجرای زنده، سرور را مشغول و سالم یافت: 2 درخواست در حال اجرا، 107 توکن جدید بین دو خواندن.

تغییراتی که از آن زمان اعمال کردیم

تفاوت به‌راحتی قابل مشاهده است. هنگامی که این یادداشت را می‌نوشتیم، هر دو سرور مدل ما 12 درخواست را هم‌زمان اجرا می‌کردند که سقف مجاز آن‌ها بود. یک درخواست آزمایشی باید در صف منتظر می‌ماند. بررسی جدید، هر دو سرور را مشغول و سالم گزارش کرد، با سرعت 126 و 101 توکن در ثانیه، بدون آنکه درخواستی ارسال کند.

Factory Floor نسخه 1.0.2 این بررسی را به‌صورت models/llm-health.py ارائه می‌کند، همراه با تست‌هایی برای سرورهای بیکار، مشغول، گیرکرده و راه‌اندازی‌مجددشده، سروری بدون متریک، یک پروکسی و یک بک‌اند از‌کارافتاده.

به‌روزرسانی شد: