בדיקת הבריאות שלנו הפעילה מחדש שרת מודלים תקין שמונה פעמים ביום אחד

תפעול

ב-22 ביולי שומר סף הפעיל מחדש את שרת המודלים המקומי שלנו שמונה פעמים. לאף אחת מההפעלות מחדש לא היה קריסה מאחוריה. הבדיקה שהייתה אמורה לשמור על המודל פעיל היא זו שהפילה אותו.

מה קרה

שרת המודלים הרץ vLLM על מכונת NVIDIA GB10 אחת וייצר כ-8 טוקנים לשנייה עבור בקשה בודדת. כל חמש דקות שומר סף שלח לו בקשת צ'אט אמיתית והמתין עד 45 שניות לתשובה. חמש בדיקות שנכשלו ברצף סימנו שרת תקוע, ושומר סף הפעיל אותו מחדש. הפעלה מחדש לקחה את המודל מהשירות למשך מספר דקות בזמן שכ-19 GB של משקולות נטענו מחדש.

באותו יום משימת אצווה (batch job) תפסה בין שתיים לארבע בקשות על השרת למשך דקות ארוכות. בקשת שומר הסף המתנה בתור מאחוריהן, אזלה את הזמן ונספרה ככשל. לאחר חמש בדיקות כאלה, שרת תקין הופעל מחדש. היה לנו קובץ דגל "עסוק" ששומר הסף כיבד, אך משימת האצווה מעולם לא הגדירה אותו.

כיצד הפעלה מחדש שגויה אחת הובילה לבאה

כל הפעלה מחדש נכשלה בבקשות שביצעו פעולה עם שגיאת 500 ("cannot schedule new futures after shutdown"). שומר סף שני ספר שגיאות 500 והפעיל מחדש את השרת כאשר היו יותר מדי, וככל שראה יותר שגיאות, כך פעל מהר יותר. כך כל הפעלה מחדש שגויה גרמה לבאה להגיע מוקדם יותר. בסך הכול, ארבעה שומרי סף נפרדים יכלו להפעיל מחדש את השרת, על טיימרים של 5, 10, 15 ו-30 דקות.

הכלל שלקחנו מכך

בדיקת בריאות אסור שתשתמש במה שהיא שומרת עליו. המשאב המצומצם של שרת מודלים הוא החריצים (slots) לבקשות בתהליך. בדיקה שתופסת חריץ אחד מהם, או ממתינה לאחד, היא חלק מהעומס שהיא אמורה לשפוט. בדוק בזול, והפעל מחדש רק כאשר אתה יכול להוכיח שהשרת תקוע.

הבדיקה שהחליפה אותה

vLLM מפרסם מונים משלו ב-/metrics. הבדיקה החדשה קוראת אותם תחילה:

הגרסה הראשונה ספרה טוקנים שנוצרו כהתקדמות. היא עברה שמונה בדיקות, ובתפעול חי ראשון מצאה את השרת עסוק ותקין: 2 בקשות רצות, 107 טוקנים חדשים בין שתי הקריאות.

מה שינינו מאז

ההבדל קל לזיהוי. בזמן שכתבנו את ההערה הזו, שני שרתי המודלים שלנו רצו 12 בקשות כל אחד, שהיה הגבול שלהם. בקשת בדיקה הייתה ממתינה בתור. הבדיקה החדשה דיווחה על שניהם כעסוקים ובריאים, ב-126 ו-101 טוקנים לשנייה, בלי לשלוח בקשה.

Factory Floor 1.0.2 כוללת את הבדיקה הזו כ-models/llm-health.py, עם בדיקות לשרתים במצב מנוחה, עסוק, תקוע ומותקן מחדש, שרת ללא מדדים, פרוקסי ובקנד מת.

עודכן: