במדריך הזה נדגים איך לפרוס ולנהל אפליקציות של סוכני AI/ML בקונטיינרים באמצעות Google Kubernetes Engine (GKE). שילוב של ערכת פיתוח סוכנים (ADK) של Google עם מודל שפה גדול (LLM) באירוח עצמי כמו Llama 3.1 שמופעל על ידי vLLM, מאפשר להפעיל סוכני AI ביעילות ובקנה מידה גדול, תוך שמירה על שליטה מלאה במערך המודלים. במדריך הזה נסביר את התהליך מקצה לקצה של העברת סוכן מבוסס Python משלב הפיתוח לשלב הפריסה בסביבת הייצור באשכול GKE Autopilot עם האצת GPU.
המדריך הזה מיועד למהנדסי למידת מכונה (ML), למפתחים ולאדריכלי ענן שרוצים להשתמש ביכולות של Kubernetes לארגון קונטיינרים כדי להפעיל אפליקציות של AI/ML מבוססות-סוכנים. כדי לקרוא מידע נוסף על תפקידים נפוצים ועל משימות לדוגמה שאנחנו מתייחסים אליהן בתוכן, אפשר לעיין במאמר תפקידים נפוצים של משתמשים ומשימות ב-GKE. Google Cloud
לפני שמתחילים, חשוב לוודא שאתם מכירים את המושגים הבאים:
רקע
בקטע הזה מתוארות הטכנולוגיות העיקריות שבהן נעשה שימוש במדריך הזה.
ערכה לפיתוח סוכנים (ADK)
הערכה לפיתוח סוכנים (ADK) היא מסגרת גמישה ומודולרית לפיתוח ולפריסה של סוכני AI. הערכה מותאמת ל-Gemini ולסביבת Google, אבל לא מחייבת שימוש במודל או בפריסה ספציפיים, והיא תוכננה כך שתהיה תואמת למסגרות אחרות. ה-ADK נועד להפוך את פיתוח הסוכנים לתהליך שדומה יותר לפיתוח תוכנה, כדי להקל על מפתחים ליצור, לפרוס ולתזמן ארכיטקטורות של סוכנים, ממשימות בסיסיות ועד לתהליכי עבודה מורכבים.
מידע נוסף מופיע במאמרי העזרה בנושא ADK.
שירות Kubernetes מנוהל של GKE
Google Cloud מציעה מגוון שירותים, כולל GKE, שמתאים מאוד לפריסה ולניהול של עומסי עבודה של AI/ML. GKE הוא שירות Kubernetes מנוהל שמפשט את הפריסה, ההרחבה והניהול של אפליקציות בקונטיינרים. GKE מספק את התשתית הנדרשת – כולל משאבים ניתנים להרחבה, מחשוב מבוזר ורשת יעילה – כדי לעמוד בדרישות החישוב של מודלי LLM.
מידע נוסף על מושגי Kubernetes מרכזיים זמין במאמר הסבר על Kubernetes. מידע נוסף על GKE ועל האופן שבו הוא עוזר לכם להתאים את Kubernetes לעומס, לבצע אוטומציה ולנהל אותו זמין במאמר סקירה כללית של GKE.
vLLM
vLLM הוא פריימוורק קוד פתוח לאירוח מודלים גדולים של שפה (LLM) שעבר אופטימיזציה גבוהה, ויכול לשפר את קצב העברת הנתונים של אירוח מודלים ביחידות GPU. הוא כולל תכונות כמו:
- הטמעה של טרנספורמר שעבר אופטימיזציה באמצעות PagedAttention.
- הוספת תכונה של אצווה מתמשכת כדי לשפר את התפוקה הכוללת של הצגת המודעות.
- מקביליות טנסורית והגשה מבוזרת בכמה יחידות GPU.
מידע נוסף מופיע במאמרי העזרה בנושא vLLM.
מטרות
במדריך הזה מוסבר איך:
- מגדירים את סביבת Google Cloud .
- הקצאת אשכול GKE עם GPU.
- פריסת מודל Llama 3.1 באמצעות שרת ההיקשים vLLM.
- יוצרים קובץ אימג' של קונטיינר לסוכן שמבוסס על ADK.
- פורסים את הסוכן באשכול GKE ומחברים אותו ל-LLM באירוח עצמי.
- בודקים את הסוכן שפרסתם.
ארכיטקטורה
במדריך הזה מוצגת ארכיטקטורה ניתנת להרחבה לפריסת אפליקציות AI אקטיבי ב-GKE. אפליקציית הסוכן ADK פועלת במאגר צמתים רגיל של CPU, ומודל ה-LLM באירוח עצמי (Llama 3.1 ב-vLLM) פועל במאגר צמתים עם GPU, שניהם באותו אשכול GKE. הארכיטקטורה הזו מפרידה את הלוגיקה של האפליקציה של הסוכן מעומס העבודה של ההסקה של מודל ה-LLM, וכך מאפשרת לשנות את גודל כל רכיב ולנהל אותו בנפרד.
לארכיטקטורה יש שני רכיבי ליבה, כל אחד בפריסת GKE משלו:
אפליקציית סוכן ADK: הלוגיקה העסקית והכלים (כמו
get_weather) של הסוכן שנוצרו בהתאמה אישית נמצאים בקובץ אימג' של קונטיינר. התמונה פועלת במאגר צמתים רגיל של CPU ומתקשרת עם ה-LLM באמצעות שירות Kubernetes פנימי.מודל LLM באירוח עצמי (Llama 3.1 ב-vLLM): המודל Llama 3.1 פועל בשרת vLLM ייעודי במאגר צמתים עם GPU. הפריסה הזו משתמשת בקובץ אימג' ציבורי של קונטיינר (
vllm/vllm-openai:v0.8.5) שמוגדר להורדה ולהצגה של המודל שצוין מ-Hugging Face כשהקונטיינר מופעל. הסוכן מתקשר עם השרת הזה באמצעות API בארכיטקטורת REST שנחשף על ידי שירות Kubernetesvllm-llama3-service.
פריסות של סוכן ADK ושל vLLM פועלות באותו אשכול GKE. המיקום המשותף הזה בתוך אשכול יחיד מפשט את הרשת, הניהול והפריסה, ועדיין מאפשר הקצאת חומרה מיוחדת לרכיבים של האפליקציה.
עלויות
במדריך הזה השתמשנו ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
כדאי לעיין בתמחור של כל שירות כדי להבין את העלויות הפוטנציאליות.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the required APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the required APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
צריך לוודא שיש לכם בפרויקט את התפקיד או התפקידים הבאים: roles/container.admin, roles/iam.serviceAccountAdmin, roles/artifactregistry.admin, roles/cloudbuild.builds.editor, roles/resourcemanager.projectIamAdmin
בדיקת התפקידים
-
נכנסים לדף IAM במסוף Google Cloud .
כניסה לדף IAM - בוחרים את הפרויקט.
-
בעמודה Principal (חשבון המשתמש), מוצאים את כל השורות שבהן מופיע השם שלכם או של קבוצה שאתם נכללים בה. כדי לברר באילו קבוצות אתם נכללים, פנו לאדמין.
- בודקים את העמודה Role בכל השורות שבהן מצוין או מופיע השם שלכם, כדי לראות אם רשימת התפקידים כוללת את התפקידים הנדרשים.
מתן התפקידים
-
נכנסים לדף IAM במסוף Google Cloud .
כניסה לדף IAM - בוחרים את הפרויקט.
- לוחצים על Grant access.
-
בשדה New principals, מזינים את מזהה המשתמש. בדרך כלל מזהה המשתמש הוא כתובת האימייל של חשבון Google.
- לוחצים על Select a role ומחפשים את התפקיד.
- כדי לתת עוד תפקידים, לוחצים על Add another role ומוסיפים אותם.
- לוחצים על Save.
-
- כדי להוריד את מודל Llama, צריך לקבל מ-Hugging Face אסימון גישה לקריאה. צריך גם לבקש גישה למודל Llama 3.1.
הכנת הסביבה
במדריך הזה משתמשים ב-Cloud Shell כדי לנהל משאבים שמתארחים ב- Google Cloud.
ב-Cloud Shell מותקנת מראש התוכנה שדרושה למדריך הזה, כולל kubectl, terraform ו-Google Cloud CLI.
כדי להגדיר את הסביבה באמצעות Cloud Shell:
- במסוף Google Cloud , מפעילים סשן של Cloud Shell ולוחצים על Activate Cloud Shell.
הפעולה הזו מפעילה סשן בחלונית של מסוף Google Cloud .
מגדירים את משתני הסביבה שמוגדרים כברירת מחדל:
gcloud config set project PROJECT_ID export GOOGLE_CLOUD_REGION=REGION export PROJECT_ID=PROJECT_IDמחליפים את הערכים הבאים:
- PROJECT_ID: Google Cloud מזהה הפרויקט.
- REGION: ה Google Cloud אזור
(לדוגמה,
us-east4) להקצאת אשכול GKE, Artifact Registry ומשאבים אזוריים אחרים. חשוב לציין אזור שתומך במכונות וירטואליות מסוג L4 GPU וסוג מכונה G2. כדי לבדוק את הזמינות של אזור מסוים, אפשר לעיין במאמר אזורים ותחומים של GPU במאמרי העזרה של Compute Engine.
שכפול פרויקט לדוגמה
בטרמינל Cloud Shell, משכפלים את מאגר המקורות של הקוד לדוגמה של המדריך:
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples.gitעוברים לספריית המדריך:
cd kubernetes-engine-samples/ai-ml/adk-vllm
יצירה והגדרה של Google Cloud משאבים
כדי לפרוס את הסוכן, קודם צריך להקצות את המשאבים הדרושים Google Cloud. אפשר ליצור את אשכול GKE ואת מאגר Artifact Registry באמצעות ה-CLI של gcloud או Terraform.
gcloud
בקטע הזה מובאות פקודות של ה-CLI של gcloud להגדרת אשכול GKE ו-Artifact Registry.
יצירת אשכול GKE: אפשר לפרוס את האפליקציה של הסוכן שמופעלת בקונטיינר באשכול GKE Autopilot או באשכול רגיל. כדי ליהנות מחוויית Kubernetes מנוהלת לחלוטין, אפשר להשתמש באשכול Autopilot. כדי לבחור את מצב הפעולה של GKE שהכי מתאים לעומסי העבודה שלכם, אפשר לעיין במאמר מידע על מצבי הפעולה של GKE.
טייס אוטומטי
ב-Cloud Shell, מריצים את הפקודה הבאה:
gcloud container clusters create-auto CLUSTER_NAME \ --location=$GOOGLE_CLOUD_REGIONמחליפים את CLUSTER_NAME בשם של אשכול GKE.
במצב Autopilot, GKE מקצה באופן אוטומטי צמתים על סמך בקשות המשאבים של עומס העבודה. ה-GPU שנדרש ל-LLM מוגדר במניפסט
deploy-llm.yamlבאמצעותnodeSelector.כדי להוסיף
nodeSelectorולבקש את ה-GPUnvidia-l4, פועלים לפי השלבים הבאים:- פותחים את
kubernetes-engine-samples/ai-ml/adk-vllm/deploy-llm/deploy-llm.yamlבעורך. מוסיפים את
nodeSelectorהבא לקטעspec.template.spec:nodeSelector: cloud.google.com/gke-accelerator: nvidia-l4
רגילה
ב-Cloud Shell, יוצרים אשכול רגיל על ידי הרצת הפקודה הבאה:
gcloud container clusters create CLUSTER_NAME \ --location=$GOOGLE_CLOUD_REGIONמחליפים את CLUSTER_NAME בשם של אשכול GKE.
כדי ליצור מאגר צמתים עם GPU לאשכול, מריצים את הפקודה הבאה:
gcloud container node-pools create gpu-node-pool \ --cluster=CLUSTER_NAME \ --location=$GOOGLE_CLOUD_REGION \ --machine-type=g2-standard-8 \ --accelerator=type=nvidia-l4,count=1 \ --enable-gvnicקובץ
deploy-llm.yamlמציין GPU מסוגnvidia-l4, שזמין בסדרת המכונות G2. מידע נוסף על סוג המכונה הזה זמין במאמר סוגי מכונות עם GPU במסמכי העזרה של Compute Engine.
- פותחים את
יוצרים מאגר ב-Artifact Registry: יוצרים מאגר ב-Artifact Registry כדי לאחסן ולנהל בצורה מאובטחת את קובץ האימג' של קונטיינר Docker של הסוכן.
gcloud artifacts repositories create REPO_NAME \ --repository-format=docker \ --location=$GOOGLE_CLOUD_REGIONמחליפים את REPO_NAME בשם של מאגר Artifact Registry שרוצים להשתמש בו (לדוגמה,
adk-repo).קבלת כתובת ה-URL של המאגר: כדי לאמת את הנתיב המלא למאגר, מריצים את הפקודה הבאה. תשתמשו בפורמט הזה כדי לתייג את קובץ האימג' של Docker כשתיצרו את קובץ האימג' של הסוכן.
gcloud artifacts repositories describe REPO_NAME \ --location $GOOGLE_CLOUD_REGION
Terraform
בקטע הזה מוסבר איך להשתמש בהגדרת Terraform שכלולה במאגר הדוגמאות כדי להקצות את המשאבים שלכם ב- Google Cloud באופן אוטומטי.
עוברים לספרייה של Terraform: הספרייה
\terraformמכילה את כל קובצי התצורה שנדרשים ליצירת אשכול GKE ומשאבים נדרשים אחרים.cd terraformיוצרים קובץ משתנים של Terraform: מעתיקים את קובץ המשתנים לדוגמה (
example_vars.tfvars) שמופיע כאן כדי ליצור קובץvars.tfvarsמשלכם.cp example_vars.tfvars vars.tfvarsפותחים את הקובץ
vars.tfvarsבעורך ומחליפים את הערכים הזמניים לשמירת מקום בהגדרות הספציפיות שלכם. לפחות צריך להחליף את PROJECT_ID ב Google Cloud מזהה הפרויקט ואת CLUSTER_NAME בשם של אשכול GKE.מפעילים את Terraform: כדי להוריד את הפלאגינים הדרושים של ספק השירות עבור Google Cloud, מריצים את הפקודה הזו.
terraform initבודקים את תוכנית הביצוע: הפקודה הזו מציגה את השינויים בתשתית ש-Terraform תבצע.
terraform plan -var-file=vars.tfvarsהחלת ההגדרות: כדי ליצור את המשאבים בפרויקט Google Cloud , מריצים את תוכנית Terraform. מאשרים באמצעות
yesכשמוצגת הבקשה.terraform apply -var-file=vars.tfvars
אחרי שמריצים את הפקודות האלה, Terraform מקצה את אשכול GKE ואת מאגר Artifact Registry, ומגדיר את תפקידי ה-IAM ואת חשבונות השירות הנדרשים, כולל איחוד שירותי אימות הזהות של עומסי עבודה ב-GKE.
מידע נוסף על שימוש ב-Terraform זמין במאמר הקצאת משאבי GKE באמצעות Terraform.
הגדרה של kubectl לתקשורת עם האשכול
כדי להגדיר את kubectl לתקשורת עם האשכול, מריצים את הפקודה הבאה:
gcloud container clusters get-credentials CLUSTER_NAME \
--location=${GOOGLE_CLOUD_REGION}
מחליפים את CLUSTER_NAME בשם של אשכול GKE.
יצירת תמונה של הסוכן
אחרי שיוצרים את התשתית באמצעות ה-CLI של gcloud או Terraform, מבצעים את השלבים הבאים כדי ליצור את אפליקציית הסוכן.
נותנים את תפקיד ה-IAM הנדרש ל-Cloud Build: לשירות Cloud Build נדרשות הרשאות כדי להעביר בדחיפה את קובץ האימג' של הסוכן ל-Artifact Registry. נותנים את התפקיד
roles/artifactregistry.writerלחשבון השירות שמשמש כברירת המחדל של Compute Engine, שמשמש את Cloud Build.יוצרים את כתובת האימייל של חשבון השירות של Compute Engine שמוגדר כברירת מחדל:
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)") export COMPUTE_SA_EMAIL=${PROJECT_NUMBER}-compute@developer.gserviceaccount.comמקצים לחשבון השירות את התפקיד
roles/artifactregistry.writer:gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:${COMPUTE_SA_EMAIL} \ --role=roles/artifactregistry.writer
יוצרים את קובץ האימג' של הקונטיינר של הסוכן ומעבירים אותו בדחיפה: מתיקיית הבסיס של הפרויקט (
adk/llama/vllm), מריצים את הפקודות הבאות כדי ליצור את קובץ האימג' של Docker ולהעביר אותו בדחיפה ל-Artifact Registry.export IMAGE_URL="${GOOGLE_CLOUD_REGION}-docker.pkg.dev/${PROJECT_ID}/REPO_NAME/adk-agent:latest" gcloud builds submit --tag $IMAGE_URLמוודאים שקובץ האימג' של הקונטיינר הועבר: אחרי שתהליך ה-build מסתיים בהצלחה, מוודאים שקובץ האימג' של הקונטיינר של הסוכן הועבר ל-Artifact Registry. לשם כך, מציגים את רשימת התמונות במאגר.
gcloud artifacts docker images list ${GOOGLE_CLOUD_REGION}-docker.pkg.dev/${PROJECT_ID}/REPO_NAMEהפלט אמור לכלול את התמונה שדחפתם ותייגתם כ-
latest.
פריסת המודל
אחרי שמגדירים את אשכול GKE ויוצרים את תמונת הסוכן, השלב הבא הוא לפרוס את מודל Llama 3.1 באירוח עצמי באשכול. כדי לעשות את זה, פורסים שרת הסקה (inference) של vLLM שהוגדר מראש, ששולף את המודל מ-Hugging Face ומפרסם אותו באופן פנימי בתוך האשכול.
יצירת סוד של Kubernetes עבור פרטי הכניסה ל-Hugging Face: כדי לאפשר לאשכול GKE להוריד את מודל Llama 3.1 המוגבל, צריך לספק את האסימון של Hugging Face כסוד של Kubernetes. המניפסט של
deploy-llm.yamlמוגדר להשתמש בסוד הזה לאימות.kubectl create secret generic hf-secret \ --from-literal=hf-token-secret=HUGGING_FACE_TOKENמחליפים את HUGGING_FACE_TOKEN באסימון שלכם.
צפייה במניפסט: בספריית השורש של הפרויקט (
adk/llama/vllm), עוברים לספרייה/deploy-llmשמכילה את מניפסט הפריסה של המודל.cd deploy-llmהחלת המניפסט: מריצים את הפקודה הבאה כדי להחיל את המניפסט
deploy-llm.yamlעל האשכול.kubectl apply -f deploy-llm.yamlהפקודה יוצרת שלושה משאבי Kubernetes:
- פריסה שמריצה את שרת vLLM, שמוגדר להשתמש במודל
meta-llama/Llama-3.1-8B-Instruct. - שירות בשם
vllm-llama3-serviceשחושף את שרת vLLM בכתובת IP של אשכול פנימי, ומאפשר לסוכן ADK לתקשר איתו. - ConfigMap שמכיל תבנית צ'אט של Jinja שנדרשת על ידי מודל Llama 3.1.
- פריסה שמריצה את שרת vLLM, שמוגדר להשתמש במודל
מאמתים את פריסת המודל: שרת vLLM מושך את קובצי המודל מ-Hugging Face. התהליך הזה יכול להימשך כמה דקות. אפשר לעקוב אחרי הסטטוס של ה-Pod כדי לוודא שהוא מוכן.
ממתינים עד שהפריסה תהיה זמינה.
kubectl wait --for=condition=available --timeout=600s deployment/vllm-llama3-deploymentבודקים את היומנים מה-Pod הפועל כדי לוודא שהשרת הופעל.
export LLM_POD=$(kubectl get pods -l app=vllm-llama3 -o jsonpath='{.items[0].metadata.name}') kubectl logs -f $LLM_PODהפריסה מוכנה כשמוצג פלט של יומן דומה לזה שבהמשך, שמציין שהשרת של מודל ה-LLM הופעל ונתיבי ה-API זמינים:
INFO 07-16 14:15:16 api_server.py:129] Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)שליחת בקשה ישירות לשרת המודל כדי לוודא שה-LLM מוכן. כדי לעשות זאת, פותחים טרמינל חדש ב-Cloud Shell ומריצים את הפקודה הבאה כדי להעביר את
vllm-llama3-serviceלמחשב המקומי:kubectl port-forward service/vllm-llama3-service 8000:8000בטרמינל אחר, שולחים בקשה לדוגמה לנקודת קצה ל-API של המודל באמצעות
curl. לדוגמה:curl -X POST http://localhost:8000/v1/completions \ -H "Content-Type: application/json" \ -d '{ "model": "meta-llama/Llama-3.1-8B-Instruct", "prompt": "Hello!", "max_tokens": 10 }'אם הפקודה מחזירה תגובת JSON מוצלחת, מודל ה-LLM מוכן. עכשיו אפשר לסיים את תהליך העברת הפורטים. לשם כך, חוזרים לחלון המסוף שלו, לוחצים על
Ctrl+Cוממשיכים לפריסת הסוכן.
פריסת אפליקציית הסוכן
השלב הבא הוא פריסת אפליקציית הסוכן שמבוססת על ADK.
עוברים לספרייה
/deploy-agent: מספריית השורש של הפרויקט (adk/llama/vllm), עוברים לספרייה/deploy-agentשמכילה את קוד המקור של הסוכן ואת מניפסט הפריסה.cd ../deploy-agentעדכון מניפסט הפריסה של הסוכן:
קובץ המניפסט לדוגמה
deploy-agent.yamlמכיל פלייסהולדר למזהה הפרויקט בכתובת ה-URL של קובץ אימג' של קונטיינר. צריך להחליף את ה-placeholder במזהה הפרויקט. Google Cloudimage: us-central1-docker.pkg.dev/PROJECT_ID/adk-repo/adk-agent:latestכדי לבצע את ההחלפה במקום, אפשר להריץ את הפקודה הבאה:
sed -i "s/<PROJECT_ID>/$PROJECT_ID/g" deploy-agent.yamlמוודאים שהנתיב
readinessProbeמוגדר ל-/ולא ל-/dev-ui. כדי לבצע את ההחלפה במקום, אפשר להריץ את הפקודה הבאה:sed -i "s|path: /dev-ui/|path: /|g" deploy-agent.yaml
החלת המניפסט: מריצים את הפקודה הבאה כדי להחיל את המניפסט
deploy-agent.yamlעל האשכול.kubectl apply -f deploy-agent.yamlהפקודה הזו יוצרת שני משאבי Kubernetes:
- פריסת Deployment בשם
adk-agentשמריצה קובץ אימג' של קונטיינר של סוכן שנוצר בהתאמה אישית. - שירות בשם
adk-agentמסוג NodePort שחושף את אפליקציית הסוכן כדי שאפשר יהיה לגשת אליה לצורך בדיקה.
- פריסת Deployment בשם
מאמתים את הפריסה של הסוכן: בודקים את הסטטוס של ה-Pod כדי לוודא שהוא פועל בצורה תקינה.
מחכים שהפריסה תהיה זמינה:
kubectl wait --for=condition=available --timeout=300s deployment/adk-agentצופים ביומנים מ-Pod של סוכן פעיל:
export AGENT_POD=$(kubectl get pods -l app=adk-agent -o jsonpath='{.items[0].metadata.name}') kubectl logs -f $AGENT_POD
הפריסה מצליחה כשרואים פלט של יומן שדומה לזה שבהמשך, שמציין שהשרת Uvicorn פועל ומוכן לקבל בקשות:
INFO: Uvicorn running on http://0.0.0.0:8001 (Press CTRL+C to quit)
בדיקה של הסוכן הפעיל
אחרי פריסה מוצלחת של שרת vLLM ושל אפליקציית הנציג, אפשר לבדוק את הפונקציונליות מקצה לקצה באמצעות אינטראקציה עם ממשק המשתמש של הנציג באינטרנט.
העברת השירות של הסוכן למחשב המקומי: השירות
adk-agentהוא מסוגNodePort, אבל הדרך הכי ישירה לגשת אליו מסביבת מעטפת Cloud Shell היא באמצעות הפקודהkubectl port-forward. כדי ליצור מנהרה מאובטחת ל-Pod של הסוכן, מריצים את הפקודה הבאה.kubectl port-forward $AGENT_POD 8001:8001גישה לממשק המשתמש האינטרנטי של הנציג: ב-Cloud Shell, לוחצים על הלחצן Web Preview (תצוגה מקדימה באינטרנט) ובוחרים באפשרות Preview on port 8001 (תצוגה מקדימה ביציאה 8001). תיפתח כרטיסייה חדשה בדפדפן עם ממשק הצ'אט של נציג התמיכה.
אינטראקציה עם הסוכן: שואלים את הסוכן שאלה שתפעיל את הכלי
get_weatherשלו. לדוגמה:What's the weather like in Tokyo?הסוכן יפעיל קודם את ה-LLM כדי להבין את הכוונה ולזהות את הצורך להשתמש בכלי
get_weather. לאחר מכן, הכלי יופעל עם הפרמטר Tokyo. לבסוף, הוא ישתמש בפלט של הכלי כדי ליצור תשובה. אמורה להתקבל תגובה שדומה לזו:The weather in Tokyo is 25°C and sunny.(אופציונלי) אימות הקריאה לכלי ביומנים: אפשר לראות את האינטראקציה של הסוכן עם מודל ה-LLM ואת ההרצה של הכלי על ידי צפייה ביומנים של ה-Pods המתאימים.
יומני Agent Pod: בטרמינל חדש, צופים ביומנים של ה-Pod
adk-agent. תוכלו לראות את הקריאה לכלי ואת התוצאה שלה.kubectl logs -f $AGENT_PODבפלט מוצגת קריאה לכלי ועיבוד התוצאה.
יומנים של LLM Pod: אפשר להציג את היומנים של
vllm-llama3-deploymentPod כדי לראות את הבקשה הנכנסת מהסוכן.kubectl logs -f $LLM_PODביומנים מוצגת ההנחיה המלאה שנשלחה על ידי הסוכן ל-LLM, כולל הודעת המערכת, השאילתה שלכם וההגדרה של כלי
get_weather.
אחרי שמסיימים את הבדיקה, אפשר להפסיק את התהליך port-forward על ידי חזרה לחלון המסוף שלו והקשה על Ctrl+C.
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.
מחיקת המשאבים שנפרסו
כדי להימנע מחיובים בחשבון Google Cloud על המשאבים שיצרתם במדריך הזה, מריצים את הפקודות הבאות:
gcloud
אם השתמשתם ב-CLI של gcloud כדי ליצור את המשאבים, מריצים את הפקודות הבאות כדי למחוק את אשכול GKE ואת מאגר Artifact Registry, ולהחזיר את ההרשאות של חשבון השירות למצב המקורי.
gcloud container clusters delete CLUSTER_NAME \
--location=$GOOGLE_CLOUD_REGION
gcloud artifacts repositories delete REPO_NAME \
--location=$GOOGLE_CLOUD_REGION
gcloud projects remove-iam-policy-binding $PROJECT_ID \
--member=serviceAccount:${COMPUTE_SA_EMAIL} \
--role=roles/artifactregistry.writer
Terraform
אם השתמשתם ב-Terraform כדי להקצות את התשתית, תוכלו להרוס את כל המשאבים על ידי הרצת פקודה אחת מתוך הספרייה /terraform.
מתיקיית השורש של הפרויקט (
adk/llama/vllm), עוברים לספרייה/terraform:cd terraformמריצים את הפקודה הזו כדי להסיר את כל המשאבים שהוגדרו בקובצי ההגדרות של Terraform:
terraform destroy
המאמרים הבאים
- כך מגדירים את Horizontal Pod Autoscaler (HPA) כדי להתאים באופן אוטומטי את משאבי הסוכן לפי דרישה.
- כאן מוסבר איך להגדיר שרת proxy לאימות זהויות (IAP) לאפליקציות האינטרנט שפועלות ב- Google Cloud, כדי לספק הרשאה מרכזית לגישה לממשק המשתמש של הסוכן.
- איך משתמשים ב-Cloud Logging וב-Cloud Monitoring כדי לקבל תובנות לגבי הביצועים והתקינות של הסוכן באשכול GKE.
- אתם יכולים לעיין בדוגמאות ניסיוניות ב-GKE AI Labs שיעזרו לכם להשתמש ב-GKE כדי להאיץ את היוזמות שלכם בתחום ה-AI האקטיבי.