כדי ליצור אפליקציית AI, צריך להקצות אשכול מאובטח ופרטי של Google Kubernetes Engine (GKE) שעבר אופטימיזציה לעומסי עבודה של AI, ואז לפרוס את עומס העבודה באמצעות תרשים helm. במדריך הזה מתוארות התבניות הבאות, שאפשר להתאים אישית כדי לפרוס אפליקציית AI:
אשכול GKE של הסקת מסקנות שעבר אימון מראש על ידי AI: יצירת התשתית הבסיסית שנדרשת להצגת מודלים עם ביצועים גבוהים. התבנית הזו מגדירה אשכול GKE מאובטח ופרטי שממוטב להסקת מסקנות מ-AI.
עומס עבודה של GKE עם מסקנות שנוצרו על ידי AI שעבר אימון מראש (תצוגה מקדימה): פריסה של תרשים helm שכולל את ההגדרה של עומס עבודה של AI. משתמשים בתרשים helm כדי לפרוס מודל Gemma שעבר אימון מראש באמצעות מנוע ההגשה vLLM. עומס העבודה מוגדר לבקשות יעילות של משאבי GPU ול-Horizontal Pod Autoscaler (HPA) כדי לבצע שינוי גודל על סמך השימוש במטמון GPU.
לדוגמה, אפשר לפרוס את התבניות של האשכולות ועומסי העבודה כדי לתת מענה לצרכים העסקיים הבאים:
| דוגמה | הצורך העסקי | הטמעה |
|---|---|---|
| ניתוח סרטונים בזמן אמת | חברת אבטחה צריכה לעבד זרמי וידאו ממאות מצלמות כדי לזהות אנומליות או אובייקטים ספציפיים בזמן אמת. | פריסת מודלים לעיבוד וידאו במאגר הצמתים עם תמיכה ב-GPU. מעבדי GPU יכולים לעבד את הדרישות של נפח נתונים גבוה וזמן אחזור נמוך של סטרימינג של סרטונים בו-זמנית. |
| עיבוד מסמכים מיוחד | חברת ביטוח צריכה לחלץ באופן אוטומטי מידע מאלפי טפסים של תביעות שמגיעים מדי יום, עם פריסות שונות וכתב יד שונה. | משתמשים באשכול GKE כדי לארח מודלים בהתאמה אישית, ומוודאים שהנתונים לא יוצאים מהסביבה המאובטחת במהלך העיבוד. |
| מערכת המלצות עם נפח גבוה | פלטפורמת מסחר אלקטרוני צריכה להציג המלצות מותאמות אישית למוצרים למשתמשים במהלך אירועי קניות של חגים. | משתמשים ב-Google Kubernetes Engine Gateway API כדי לנתב נפחים גדולים של תעבורת משתמשים למודלים של ההמלצות. ממשק Gateway API יכול להתמודד עם עליות פתאומיות בנפח התנועה בלי להאריך את זמן האחזור. |
ארכיטקטורה
בתמונה הבאה מוצגים הרכיבים והחיבורים בתבנית:
בטבלה הבאה מתוארות הגדרות הרכיבים בתבנית הזו:
אשכול GKE Standard: אשכול מאובטח ופרטי שבו פועל עומס העבודה של ה-AI.
בטבלה הבאה מפורטת הגדרת האשכול בתבנית הזו:
הגדרות אישיות מטרה הערך של node_locationsהוא["us-central1-a", "us-central1-b", "us-central1-c"].הפצת הצמתים של האשכול על פני שלושה אזורים באזור us-central1מבטיחה זמינות גבוהה ועמידות.הערך של enable_intranode_visibilityהואtrue.מאפשרת לראות את התנועה בין הפודים באותו צומת ביומני התנועה של VPC. התובנות האלה נדרשות למעקב אחרי הרשת, לפתרון בעיות ולניתוח אבטחה. gateway_api_configמופעל באמצעות{"channel":"CHANNEL_STANDARD"}.ממשק ה-API של GKE Inference Gateway עוזר לכם לנהל את תעבורת הכניסה לשירותי Kubernetes. ה-API עוזר לכם להגדיר ניתוב מדויק, איזון עומסים מתקדם וצירוף מרכזי של כללי מדיניות. הערך של private_cluster_config.enable_private_endpointהואfalse.private_cluster_config.enable_private_nodesהואtrue. הערך שלcontrol_plane_endpoints_config.dns_endpoint_config.allow_external_trafficהואtrue.מוודאים שלצמתי העובדים שבהם מודלי ה-AI פועלים יש כתובות IP פרטיות. כך הצמתים שלכם מבודדים מהאינטרנט הציבורי. מישור הבקרה של GKE מוגדר כך שניתן לגשת אליו באופן ציבורי, כדי שתוכלו לנהל את האשכול מחוץ לרשת הענן הווירטואלי הפרטי (VPC). הערך של release_channelהוא{"channel":"REGULAR"}.העדכונים האלה מבטיחים שהעדכונים של אשכול GKE יהיו יציבים וצפויים, ויוצרים איזון בין תכונות חדשות לבין מהימנות. מאגר צמתים של GKE: קבוצה של צמתים של עובדים שמריצים את הקונטיינרים של האפליקציה.
בטבלה הבאה מפורטות ההגדרות של מאגר הצמתים בתבנית הזו:
הגדרות אישיות מטרה הערך של autoscaling.min_node_countהוא0. הערך שלautoscaling.max_node_countמוגדר כ-3(ברירת המחדל היא100).כשאין עומסי עבודה של AI, אפשר להקטין את גודל מאגר הצמתים עד לאפס, וכך לצמצם את העלויות בתקופות שבהן אין פעילות. הגבול העליון של ההתאמה לעומס עוזר לשלוט בעלויות ובצריכת המשאבים. הפרמטר node_config.guest_acceleratorנוסף. הערך שלgpu_driver_installation_config.gpu_driver_version:הוא"LATEST". gpu_sharing_configמופעל עםTIME_SHARING. הערך שלmax_shared_clients_per_gpu:הוא2.מציין את השימוש ביחידות GPU מסוג NVIDIA L4 למשימות של הסקת מסקנות מ-AI. מנהלי ההתקנים הנדרשים של ה-GPU מותקנים באופן אוטומטי. כמה עומסי עבודה קטנים יכולים לחלוק GPU אחד. הערך של node_config.machine_typeהשתנה ל-"g2-standard-8".סוג המכונה מתוכנן במיוחד כדי להשלים את יחידות ה-GPU מסוג L4. ליבות ה-vCPU (8) והזיכרון (32GB) נוצרים כדי לתמוך ב-GPU ולהריץ את אפליקציות ההסקה של ה-AI. node_config.oauth_scopesכוללhttps://www.googleapis.com/auth/cloud-platform.לחשבון השירות של הצומת יש גישה רחבה לשירותי Google Cloud , והוא מאפשר אינטראקציה עם ה-API למשימות כמו רישום ביומן, מעקב ושליפה של קובצי אימג' בקונטיינר. הערך של node_config.shielded_instance_config.enable_secure_bootהואtrue.האתחול המאובטח עוזר להגן על הצמתים מפני תוכנות זדוניות ברמת האתחול, על ידי אימות החתימות הקריפטוגרפיות של טוען האתחול והליבה לפני שהם מופעלים.
הגדרת תרשים Helm
בטבלה הבאה מפורטות ההגדרות של תרשים ה-Helm, שהותאמו לפריסה ולשינוי של קנה מידה של שירות הסקת מסקנות מ-AI ב-GKE.
| הגדרות אישיות | מטרה |
|---|---|
replicaCount: 1 |
יוצר עותק יחיד ראשוני. |
image.repository: vllm/vllm-openai |
משתמש בתמונה של vLLM, ספרייה שעברה אופטימיזציה להסקת מסקנות של מודל שפה גדול (LLM), שנחשפת באמצעות API שתואם ל-OpenAI. |
model.id: google/gemma-7b-it |
ההגדרה מגדירה את מודל Gemma 7B שעבר כוונון להוראות כמודל שיוצג. |
model.hfSecret: hf-secret |
המודל דורש אימות באמצעות סוד של Kubernetes לניהול מאובטח של פרטי כניסה. |
resources.limits וגם requests במחיר nvidia.com/gpu: "1" |
התכונה הזו מבטיחה שכל פוד יקבל GPU ייעודי. |
nodeSelector.cloud.google.com/gke-accelerator: nvidia-l4 |
התכונה הזו מבטיחה שהפודים של מודל ה-AI יתוזמנו באופן בלעדי בצמתי GKE Standard שמצוידים במעבדי NVIDIA L4 GPU, שהם אידיאליים להסקת מסקנות חסכונית ועם ביצועים גבוהים. |
hpa.enabled: true |
הפעלת Horizontal Pod Autoscaler (HPA), שמאפשרת לאפליקציה לשנות באופן אוטומטי את מספר הפודים (בין minReplicas: 1 ל-maxReplicas: 10) על סמך targetCPUUtilizationPercentage: 80%. הפתרון מבטיח ביצועים טובים בזמן עומסים גבוהים ויעילות בעלויות בזמן שימוש נמוך. |
tensorParallelSize: 1 |
מציין שהמודל לא מפולח בין כמה יחידות GPU בתוך פוד יחיד. |
maxModelLen: 512 |
המדיניות קובעת את האורך המקסימלי של רצף שהמודל Gemma 7B יכול לעבד. |
service.type: ClusterIP |
השירות מוגדר לגישה פנימית בתוך האשכול. |
pdb.enabled: true וגם minAvailable: 1 |
תקציב לשיבוש Pod מופעל כדי להבטיח זמינות גבוהה. לפחות רפליקה אחת של מודל ה-AI שלכם נשארת זמינה במהלך שיבושים מרצון, כמו תחזוקת צמתים. |
יצירת אפליקציית AI
אפשר להשתמש בתבניות AI Pre-trained Inference אשכול GKE ועומס עבודה כדי לפרוס את אפליקציית ה-AI.
פריסת תשתית ה-AI
מגדירים ופורסים את תבנית אשכול GKE של מסקנות מ-AI שעבר אימון מראש כדי ליצור את התשתית הבסיסית שבה יפעל עומס העבודה של ה-AI.
משכפלים ופורסים את התבנית AI Pre-trained Inference אשכול GKE כאפליקציה.
אשכול GKE נוצר בפרויקט הפריסה שבחרתם.
מגדירים את הרכיבים. למידע נוסף, קראו את המאמרים הבאים:
לוחצים על פריסה. הפריסה של האפליקציה מתבצעת אחרי כמה דקות.
בחלונית פרטי האפליקציה, לוחצים על הכרטיסייה פלט.
מזהים את cluster_id של האפליקציה. תצטרכו להשתמש במידע הזה כשפורסים את תרשים ה-Helm.
פריסת עומס העבודה של ה-AI
משתמשים בתבנית AI Pre-trained Inference GKE workload כדי לפרוס את עומס העבודה של ה-AI באשכול שיצרתם. תפרסו תרשים Helm שכולל את הגדרות עומס העבודה של ה-AI.
בדף קטלוג Google, בתבנית AI Pre-trained Inference GKE workload (עומס עבודה של GKE להסקת מסקנות שאומן מראש על ידי AI), לוחצים על Create new application (יצירת אפליקציה חדשה).
בשדה שם, מזינים שם ייחודי לאפליקציה.
בקטע GKE Deployment Target (יעד הפריסה של GKE), מבצעים את הפעולות הבאות:
ברשימה Project list, בוחרים את הפרויקט שבו פרסתם את אשכול GKE מהאפליקציה AI Pre-trained Inference GKE cluster.
ברשימה אזור, בוחרים את האזור שבו פרסתם את אשכול GKE.
ברשימה Clusters (אשכולות), בוחרים את אשכול GKE שנפרס.
ברשימה Namespace, מזינים את מרחב השמות שבו פרסתם את אשכול GKE. אם לא שיניתם את השם, מזינים
default.לוחצים על יצירת אפליקציה.
האפליקציה נוצרת ומוצגים קובצי ההגדרות.
בחלונית Helm chart:
בודקים את פרטי ההגדרה.
אופציונלי: אפשר להתאים אישית את ההגדרה לפי הצרכים הייחודיים שלכם.
כדי לפרוס את תרשים ה-Helm לאשכול, לוחצים על Deploy (פריסה).
הוראות מפורטות מופיעות במאמר פריסת אפליקציות.
אחרי כמה דקות, הגדרת תרשים ה-Helm נפרסת באשכול GKE.
המאמרים הבאים
- למידע נוסף על שכפול והתאמה אישית של תבניות, אפשר לעיין במאמר מדריך למתחילים: התאמה אישית ופריסה של תבנית של Google.
- אפשר להגדיר הגדרות משלכם על ידי עיצוב תבניות של אפליקציות.
- כדי לזהות שיטות מומלצות כלליות לארכיטקטורה, אפשר לעיין בGoogle Cloud מסגרת הארכיטקטורה.