ืืื ื ืืืืืืชืืช
ืขืชืื ืืืกืงื ืืืกืจืช ืฉืจืชืื ืืืืืืื ืืืืืื ืฉื ืฉืคื

התקדמויות אחרונות במודלים גדולים של שפה (LLM) כמו GPT-4, PaLM הובילו ליכולות משמעותיות במשימות שפה טבעית. LLMs משולבים ביישומים שונים כגון צ’אטבוטים, מנועי חיפוש ועוזרי תכנות. עם זאת, הגשת LLMs בקנה מידה גדול עדיין מהווה אתגר בשל דרישות ה-GPU והזיכרון המשמעותיות שלהם.
גישות להתגברות על אתגרים אלה בדרך כלל מחולקות לשתי קטגוריות עיקריות:
- טכניקות דחיסת מודל
טכניקות אלו מטרתן להקטין את גודל המודל תוך שמירה על דיוק. גישות נפוצות כוללות:
- גזירה – הסרת פרמטרים מיותרים או פחות חשובים מהמודל. זה יוצר מודל דליל עם פחות פרמטרים.
- קוונטיזציה – שימוש במספרים בעלי דיוק נמוך יותר כמו int8 או bfloat16 לייצוג משקולות במקום fp32 או fp16. זה מקטין את הטביעה של הזיכרון.
- העברת ידע – אימון מודל “תלמיד” קטן יותר לחיקוי מודל “מורה” גדול. המודל הקטן יותר נעשה בשביל הסקה.
- ביצוע סלקטיבי
במקום מודלים מדוחסים, טכניקות אלו מבצעות ביצוע סלקטיבי של חלקים מהמודל לכל הסקה:
- הפעלה דלילה – דילוג על חישוב על הפעלות אפס.
- חישוב מותנה – ביצוע של שכבות מסוימות בהתאם לקלט.
בצד המשלים לגבי הצד הארכיטקטוני של התוכנה; כדי לאפשר פריסה מהירה יותר של LLMs, חוקרים הציעו מערכות הסקה חסרת שרתים. בארכיטקטורות חסרות שרתים, LLMs מאורחים בקלאסטרים משותפים של GPU ומוקצים דינאמית על בסיס ביקוש. זה מאפשר ניצול יעיל של GPU ומקטין עלויות עבור מפתחים. יישומים בולטים כוללים Amazon SageMaker, Microsoft Azure ML, ואפשרויות קוד פתוח כמו KServe.
על אף ההבטחה של LLMs חסרות שרתים, מערכות קיימות מציגות עכבות איחור גבוהות שפוגעות בחוויית המשתמש ביישומים אינטראקטיביים:
- הורדות נקודת תייחסות יקרות: LLMs הם בעלי טביעת זיכרון גדולה, לעיתים גיגהבייטים עד טרה-בייטים בגודל. הורדת נקודות תייחסות מאחסון רחוק היא זמן-אורך, לוקחת מעל 20 שניות אפילו עם רשתות מותאמות.
- טעינת נקודת תייחסות לא יעילה: אפילו עם אחסון SSD מקומי, טעינת נקודות תייחסות לזיכרון GPU לוקחת עשרות שניות בגלל גורמים כמו סיריאליזציה של טנסורים ואלוקציה. זה מוסיף עיכובים משמעותיים מעבר לזמן ההתחלה של הקונטיינר.
כדי לפתור את הבעיות האלו, חוקרים ב-MIT CSAIL הציעו ServerlessLLM, מערכת חדשנית שמשיגה הסקה חסרת שרתים בעלת איחור נמוך עבור LLMs. ServerlessLLM משפר את המיקום על ידי ניצול היכולת המפוזרת והרוחב הפסיק שאינו מנוצל באחסון שרתים רב-שלבי עבור פריסת LLM.
חידושים מרכזיים ב-ServerlessLLM ServerlessLLM כוללת מספר עיצובים חדשניים כדי לקצר את זמני טעינת LLM בסביבות חסרות שרתים:
- טעינת נקודת תייחסות מהירה
- פורמט טעינה מותאם שמאפשר קריאה רציפה מהירה וכתובת טנסור יעילה בזיכרון.
- צינור טעינת נקודת תייחסות רב-שלבי שממקסם את ניצול הרוחב הפסיק ברשת, SSD, DRAM וזיכרון GPU דרך טכניקות כמו I/O ישיר, העברת זיכרון מובטחת ומקביליות.
- הגירה חיה להסקה הנוטה למיקום
- הגירת טוקנים שמעבירה רק טוקני פרומפט החיוניים מעל הרשת, ומונעת העברה איטית של צילום.
- הגירה בשני שלבים שמאפשרת הסקה ללא הפרעה על ידי חישוב מחדש א-סינכרוני של מצבי קשה בשרת היעד לפני העברת טוקנים סופיים.
- אלוקציה מותאמת לאיחור
- מודלים מדויקים להערכת זמני טעינת נקודת תייחסות מכל שלב וזמני הגירה עבור שרת.
- מנהל תורים תוך-מיקום שבוחר שרתים המקטינים את האיחור הצפוי בהתחלה באמצעות המודלים הללו.
אופטימיזציות אלו מאפשרות ל-ServerlessLLM לקצר את זמני טעינת LLMs ב-4-8X ואת זמני ההתחלה הסופיים ביותר מ-25X לעומת מערכות קיימות כמו PyTorch, TensorFlow, ו-KServe.
בואו נעמיק יותר באופן שבו ServerlessLLM משיגה את הביצועים המשמעותיים האלו.
חישור טעינת נקודת תייחסות
המכשול הראשון ש-ServerlessLLM פותר הוא האיחור הגבוה של טעינת נקודות תייחסות LLMs מאחסון לזיכרון GPU.
כדי לאפשר טעינת נקודת תייחסות מהירה, ServerlessLLM מציגה:
- פורמט טעינה מותאם
נקודות תייחסות סטנדרטיות המשמשות על ידי פריימוורקים כמו PyTorch מיועדות לאימון מודל ואבחון. אבל עבור הסקה חסרת שרתים, נקודות תייחסות הן רק-לקריאה ונגישות שוב ושוב.
כדי לאופטימיזציה עבור שימוש כזה, ServerlessLLM הופכת נקודות תייחסות לפורמט עם שתי תכונות מפתח:
- קריאה רציפה של חלקים: טנסורים מקובצים לקבצים בינאריים לכל GPU, מאפשרים קריאות רציפות גדולות.
- כתובת טנסור יעילה: אינדקס ממפה שמות טנסורים לכתובות זיכרון, מאפשר שחזור ישיר בזיכרון ללא סיריאליזציה.
- צינור טעינת נקודת תייחסות רב-שלבי
ServerlessLLM ניצלת את הארכיטקטורה הרב-שלבית של שרתי GPU, עם מדיה אחסונית כמו SSDs ורשתות המחוברות ל-GPUs דרך PCIe, NVMe וכו’.
המערכת משלבת צינור מרובה-שלבים כדי למקסם את ניצול הרוחב הפסיק בכל השלבים:
- נחלקי נתונים בזיכרון מוקצים באמצעות זיכרון מובטח להעברת GPU מהירה.
- I/O ישיר משמש לקריאות SSD יעילות ללא עומסי זיכרון.
- מספר רדים קוראים חלקים שונים של אחסון במקביל.
- תיאום בין-שלבי מתבצע דרך תורי משימות א-סינכרוניות.
ביחד, זה מאפשר לרוויח את קיבולת הרוחב הפסיק אפילו של השלבים המהירים ביותר כמו NVMe RAID. ניסויים מראים כי ServerlessLLM משיגה טעינה מהירה פי 6-8 מ-PyTorch/TensorFlow, מקטינה זמני התחלה של LLMs גדולים מיותר מדקה לפחות מ-10 שניות.
הסקה LLM הנוטה למיקום דרך הגירה חיה
עם האצת טעינה, ServerlessLLM פונה לאתגר חדש – כיצד לנצל נקודות תייחסות מוכנות מראש ללא הפרעה להסקות מתמשכות בשרתים עסוקים?
ServerlessLLM מציגה טכניקה חדשנית – הגירה חיה של הסקת LLM בין שרתי GPU. זה מאפשר העברה חסרת הפרעה של ביצוע לשרתים עם נקודות תייחסות מקומיות זמינות.
מאפיינים מרכזיים של הגירה חיה של LLM:
- הגירת טוקנים
במקום צילום שלם של מצב המודל, ServerlessLLM מגרה רק את הטוקנים המינימליים הדרושים מעל הרשת. זה מעביר כמות משמעותית פחותת מידע מאשר צילומים.
- הגירה בשני שלבים
שרת היעד מחשב מראש מצבי קשה מטוקני הפרומפט. כאשר הוא מוכן, שרת המקור מעביר את הטוקנים הסופיים לפני שחרור משאבים. זה מונע הפסקות בהסקה.
ניסויים מראים כי הגירת טוקנים מקצרת את זמני הגירה מעשרות שניות לפחות משנייה אפילו עבור רצפים ארוכים. הגירה חיה היא חיונית כדי למנוע עיכובים בתור.











