בדף הזה מוסבר איך לבצע פעולות של השקה מצטברת, שפורסות בהדרגה גרסאות חדשות של תשתית ההסקה, עבור GKE Inference Gateway. השער הזה מאפשר לכם לבצע עדכונים בטוחים ומבוקרים בתשתית ההסקה. אתם יכולים לעדכן צמתים, מודלים בסיסיים ומתאמי LoRA עם שיבושים מינימליים בשירות. בדף הזה יש גם הנחיות לגבי פיצול תנועה והחזרות למצב הקודם, כדי להבטיח פריסות אמינות.
הדף הזה מיועד לאדמינים של זהויות וחשבונות ב-GKE ולמפתחים שרוצים לבצע פעולות השקה של GKE Inference Gateway.
התרחישים הבאים נתמכים:
עדכון של השקת צומת
עדכוני צמתים מעבירים בבטחה עומסי עבודה של הסקת מסקנות לחומרה חדשה של צמתים או להגדרות חדשות של מאיצים. התהליך הזה מתבצע בצורה מבוקרת בלי להפריע לשירות המודל. אפשר להשתמש בעדכוני צמתים כדי לצמצם את שיבוש השירות במהלך שדרוגי חומרה, עדכוני מנהלי התקנים או פתרון בעיות אבטחה.
יצירת
InferencePoolחדש: פריסתInferencePoolשהוגדר עם המפרטים המעודכנים של הצומת או החומרה.פיצול התנועה באמצעות
HTTPRoute: מגדיריםHTTPRouteכדי לחלק את התנועה בין משאביInferencePoolקיימים לבין משאביInferencePoolחדשים. משתמשים בשדהweightב-backendRefsכדי לנהל את אחוז התנועה שמופנה לצמתים החדשים.שמירה על עקביות
InferenceObjective: כדי להבטיח התנהגות אחידה של המודל בשתי ההגדרות של הצמתים, צריך לשמור על ההגדרה הקיימת שלInferenceObjective.שמירה על המשאבים המקוריים: השארת
InferencePoolוהצמתים המקוריים פעילים במהלך ההשקה כדי לאפשר ביטול של השינויים אם צריך.
לדוגמה, אפשר ליצור InferencePool חדש בשם llm-new. מגדירים את המאגר הזה עם אותן הגדרות מודל כמו ב-llm
InferencePool הקיים. פורסים את המאגר על קבוצה חדשה של צמתים באשכול. אפשר להשתמש באובייקט HTTPRoute כדי לפצל את התנועה בין llm המקורי לבין llm-new InferencePool החדש. הטכניקה הזו מאפשרת לעדכן את צמתי המודל באופן מצטבר.
הדיאגרמה הבאה ממחישה איך GKE Inference Gateway מבצע השקה של עדכון צומת.
כדי לבצע השקה של עדכון צומת, פועלים לפי השלבים הבאים:
שומרים את קובץ המניפסט לדוגמה הבא בשם
routes-to-llm.yaml:apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: routes-to-llm spec: parentRefs: - name: my-inference-gateway group: gateway.networking.k8s.io kind: Gateway rules: - backendRefs: - name: llm group: inference.networking.k8s.io kind: InferencePool weight: 90 - name: llm-new group: inference.networking.k8s.io kind: InferencePool weight: 10מחילים את קובץ המניפסט לדוגמה על האשכול:
kubectl apply -f routes-to-llm.yaml
הגרסה המקורית llm InferencePool מקבלת את רוב התנועה, והגרסה llm-new InferencePool מקבלת את השאר. מגדילים בהדרגה את משקל התנועה של llm-new InferencePool כדי להשלים את פריסת העדכון של הצומת.
השקת מודל בסיס
עדכונים של מודל הבסיס מושקים בשלבים למודל LLM חדש, תוך שמירה על תאימות למתאמי LoRA קיימים. אפשר להשתמש בהשקות של עדכוני מודלים בסיסיים כדי לשדרג לארכיטקטורות משופרות של מודלים או כדי לטפל בבעיות ספציפיות במודלים.
כדי להשיק עדכון של מודל בסיסי:
- Deploy new infrastructure: יצירת צמתים חדשים ו-
InferencePoolחדש שהוגדר עם המודל הבסיסי החדש שבחרתם. - הגדרת חלוקת התעבורה: שימוש ב-
HTTPRouteכדי לפצל את התעבורה ביןInferencePoolהקיים (שמשתמש במודל הבסיסי הישן) לביןInferencePoolהחדש (שמשתמש במודל הבסיסי החדש). השדהbackendRefs weightקובע את אחוז התנועה שמוקצה לכל מאגר. - שמירה על שלמות
InferenceObjective: ההגדרה שלInferenceObjectiveלא משתנה. הגישה הזו עוזרת להבטיח שהמערכת תחיל את אותם מתאמי LoRA באופן עקבי על שתי הגרסאות של מודל הבסיס. - שמירה על יכולת הביטול: כדאי לשמור את הצמתים המקוריים ואת
InferencePoolבמהלך ההשקה כדי לאפשר ביטול אם יהיה צורך בכך.
יוצרים InferencePool חדש בשם llm-pool-version-2. מאגר המודלים הזה פורס
גרסה חדשה של המודל הבסיסי על קבוצה חדשה של צמתים. על ידי הגדרת HTTPRoute, כמו בדוגמה שבהמשך, אפשר לפצל את התנועה באופן הדרגתי בין llm-pool המקורי לבין llm-pool-version-2. כך תוכלו לשלוט בעדכונים של מודל הבסיס באשכול שלכם.
כדי לבצע השקה של עדכון של מודל בסיסי:
שומרים את קובץ המניפסט לדוגמה הבא בשם
routes-to-llm.yaml:apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: routes-to-llm spec: parentRefs: - name: my-inference-gateway group: gateway.networking.k8s.io kind: Gateway rules: - backendRefs: - name: llm-pool group: inference.networking.k8s.io kind: InferencePool weight: 90 - name: llm-pool-version-2 group: inference.networking.k8s.io kind: InferencePool weight: 10מחילים את קובץ המניפסט לדוגמה על האשכול:
kubectl apply -f routes-to-llm.yaml
הגרסה המקורית llm-pool InferencePool מקבלת את רוב התנועה, והגרסה llm-pool-version-2 InferencePool מקבלת את השאר. כדי להשלים את השקת העדכון של מודל הבסיס, צריך להגדיל בהדרגה את משקל התנועה של llm-pool-version-2 InferencePool.
המאמרים הבאים
- התאמה אישית של ההגדרות של GKE Inference Gateway
- הצגת מודל שפה גדול (LLM) באמצעות GKE Inference Gateway