בדף הזה מוסבר איך להציג בקשות הסקה באמצעות NVIDIA Triton inference server באמצעות Gemini Enterprise Agent Platform. NVIDIA Triton inference server (Triton) הוא פתרון בקוד פתוח להצגת היקשים מ-NVIDIA, שעבר אופטימיזציה למעבדי CPU ולמעבדי GPU, ומפשט את תהליך הצגת ההיקשים.
NVIDIA Triton ב-Gemini Enterprise Agent Platform
פלטפורמת הסוכנים של Gemini Enterprise תומכת בפריסת מודלים בשרת ההסקה של Triton שפועל בקונטיינר בהתאמה אישית שפורסם על ידי NVIDIA GPU Cloud (NGC) – תמונה של שרת ההסקה של NVIDIA Triton. קובצי האימג' של Triton מ-NVIDIA מכילים את כל החבילות וההגדרות הנדרשות שעומדות בדרישות של Gemini Enterprise Agent Platform לקובצי אימג' של קונטיינרים בהתאמה אישית. התמונה מכילה את שרת ההסקה של Triton עם תמיכה במודלים של TensorFlow, PyTorch, TensorRT, ONNX ו-OpenVINO. התמונה כוללת גם קצה עורפי של FIL (Forest Inference Library) שתומך בהרצת מסגרות ML כמו XGBoost, LightGBM ו-Scikit-Learn.
Triton טוען את המודלים וחושף נקודות קצה של REST להסקת מסקנות, לבדיקת תקינות ולניהול מודלים, שמשתמשות בפרוטוקולים סטנדרטיים להסקת מסקנות. בזמן פריסת מודל ב-Gemini Enterprise Agent Platform, Triton מזהה סביבות של Gemini Enterprise Agent Platform ומאמץ את פרוטוקול ההיסק של Vertex AI עבור בדיקות תקינות ובקשות היסק.
הרשימה הבאה מתארת תכונות מרכזיות ותרחישי שימוש בשרת ההסקה NVIDIA Triton:
- תמיכה במספר מסגרות של למידה עמוקה ולמידת מכונה: Triton תומך בפריסה של מספר מודלים ובשילוב של מסגרות ופורמטים של מודלים – TensorFlow (SavedModel ו-GraphDef), PyTorch (TorchScript), TensorRT, ONNX, OpenVINO ו-FIL backends כדי לתמוך במסגרות כמו XGBoost, LightGBM, Scikit-Learn ובכל פורמט מודל מותאם אישית של Python או C++.
- הרצה מקבילה של כמה מודלים: Triton מאפשר להריץ במקביל כמה מודלים, כמה מופעים של אותו מודל או שילוב של שניהם באותו משאב מחשוב עם אפס או יותר מעבדי GPU.
- שילוב מודלים (שרשור או צינור): Triton ensemble תומך בתרחישי שימוש שבהם כמה מודלים מורכבים כצינור (או כ-DAG, גרף מכוון לא מחזורי) עם טנסורים של קלט ופלט שמחוברים ביניהם. בנוסף, עם קצה עורפי של Triton Python, אפשר לכלול כל לוגיקה של עיבוד מקדים, עיבוד פוסט או זרימת בקרה שמוגדרת על ידי Business Logic Scripting (BLS).
- הרצה ב-backends של CPU ו-GPU: Triton תומך בהסקת מסקנות עבור מודלים שנפרסו בצמתים עם מעבדי CPU ו-GPU.
- חבילות דינמיות של בקשות הסקה: במודלים שתומכים בחבילות, ל-Triton יש אלגוריתמים מובנים לתזמון ולחבילות. האלגוריתמים האלה משלבים באופן דינמי בקשות הסקה פרטניות לחבילות בצד השרת כדי לשפר את קצב העברת הנתונים של ההסקה ולהגדיל את השימוש ב-GPU.
מידע נוסף על שרת ההסקה של NVIDIA Triton זמין במאמרי העזרה בנושא Triton.
קובצי אימג' זמינים של קונטיינרים של NVIDIA Triton
בטבלה הבאה מפורטים דימויי ה-Docker של Triton שזמינים בקטלוג NVIDIA NGC. בוחרים תמונה על סמך מסגרת המודל, העורף והגודל של תמונת הקונטיינר שבה משתמשים.
xx ו-yy מתייחסים לגרסאות ראשיות ומשניות של Triton, בהתאמה.
| תמונה של NVIDIA Triton | תמיכה |
|---|---|
xx.yy-py3 |
קונטיינר מלא עם תמיכה במודלים של TensorFlow, PyTorch, TensorRT, ONNX ו-OpenVINO |
xx.yy-pyt-python-py3 |
רק בקצה העורפי של PyTorch ו-Python |
xx.yy-tf2-python-py3 |
רק TensorFlow 2.x ו-Python backends |
xx.yy-py3-min |
התאמה אישית של מאגר Triton לפי הצורך |
תחילת העבודה: הצגת מסקנות עם NVIDIA Triton
באיור הבא מוצגת הארכיטקטורה ברמה גבוהה של Triton ב-Vertex AI Inference:

- מודל ML שמופעל על ידי Triton רשום ב-Gemini Enterprise Agent Platform Model Registry. המטא-נתונים של המודל מפנים למיקום של ארטיפקטים של המודל ב-Cloud Storage, למאגר המותאם אישית להצגת מודלים ולתצורה שלו.
- המודל ממרשם המודלים של Gemini Enterprise Agent Platform נפרס לנקודת קצה של Vertex AI Inference שמופעל בה שרת Triton inference כקונטיינר בהתאמה אישית בצמתי מחשוב עם CPU ו-GPU.
- בקשות ההסקה מגיעות לשרת ההסקה של Triton דרך נקודת קצה של Vertex AI Inference ומנותבות לתזמן המתאים.
- הקצה העורפי מבצע הסקה באמצעות נתוני הקלט שסופקו בבקשות המצורפות ומחזיר תשובה.
- Triton מספק נקודות קצה (endpoints) של מוכנות ופעילות, שמאפשרות לשלב את Triton בסביבות פריסה כמו Gemini Enterprise Agent Platform.
במדריך הזה נסביר איך להשתמש בקונטיינר בהתאמה אישית שמריץ את שרת ההסקה של NVIDIA Triton כדי לפרוס מודל של למידת מכונה (ML) בפלטפורמת הסוכנים של Gemini Enterprise, שמשרתת הסקות אונליין. תפרסו קונטיינר שמופעל בו Triton כדי להציג מסקנות ממודל לזיהוי אובייקטים מ-TensorFlow Hub שעבר אימון מראש על מערך הנתונים COCO 2017. אחר כך תוכלו להשתמש ב-Gemini Enterprise Agent Platform כדי לזהות אובייקטים בתמונה.
כדי להריץ את המדריך הזה כ-notebook:
פתיחה ב-Colab | פתיחה ב-Colab Enterprise | הצגה ב-GitHub | פתיחה ב-Vertex AI Workbench |לפני שמתחילים
- נכנסים לחשבון 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 Agent Platform API and Artifact Registry API APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). 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 Agent Platform API and Artifact Registry API APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
במסוף Google Cloud , מפעילים את Cloud Shell.
בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
במהלך המדריך הזה מומלץ להשתמש ב-Cloud Shell כדי ליצור אינטראקציה עם Google Cloud. אם אתם רוצים להשתמש במעטפת Bash אחרת במקום ב-Cloud Shell, אתם צריכים לבצע את ההגדרה הנוספת הבאה:
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init - פועלים לפי ההוראות להתקנת Docker במסמכי התיעוד של Artifact Registry.
יצירה והעברה בדחיפה של תמונת הקונטיינר
כדי להשתמש בקונטיינר בהתאמה אישית, צריך לציין קובץ אימג' של Docker שעומד בדרישות לקונטיינר בהתאמה אישית. בקטע הזה מוסבר איך ליצור את קובץ האימג' בקונטיינר ולהעביר אותו בדחיפה ל-Artifact Registry.
הורדת פריטי מידע שנוצרים בתהליך פיתוח (Artifact) של מודל
ארטיפקטים של מודלים הם קבצים שנוצרים על ידי אימון של ML, שאפשר להשתמש בהם כדי להציג מסקנות. הם מכילים, לכל הפחות, את המבנה והמשקלים של מודל ה-ML שאומן. הפורמט של ארטיפקטים של מודלים תלוי במסגרת ה-ML שבה אתם משתמשים לאימון.
במדריך הזה, במקום לאמן מודל מאפס, תורידו את המודל לזיהוי אובייקטים מ-TensorFlow Hub, שאומן על מערך הנתונים COCO 2017.
Triton מצפה שמאגר המודלים יהיה מאורגן במבנה הבא לצורך הצגת מודלים בפורמט TensorFlow SavedModel:
└── model-repository-path
└── model_name
├── config.pbtxt
└── 1
└── model.savedmodel
└── <saved-model-files>
בקובץ config.pbtxt מתואר הגדרת המודל של המודל. כברירת מחדל, צריך לספק את קובץ התצורה של המודל שמכיל את ההגדרות הנדרשות. עם זאת, אם מפעילים את Triton עם האפשרות --strict-model-config=false, במקרים מסוימים אפשר ליצור את הגדרות המודל באופן אוטומטי על ידי Triton, ולא צריך לספק אותן באופן מפורש.
באופן ספציפי, מודלים של TensorRT, TensorFlow SavedModel ו-ONNX לא דורשים קובץ הגדרות של מודל, כי Triton יכול להסיק את כל ההגדרות הנדרשות באופן אוטומטי. בכל שאר סוגי המודלים צריך לספק קובץ הגדרות של המודל.
# Download and organize model artifacts according to the Triton model repository spec
mkdir -p models/object_detector/1/model.savedmodel/
curl -L "https://tfhub.dev/tensorflow/faster_rcnn/resnet101_v1_640x640/1?tf-hub-format=compressed" | \
tar -zxvC ./models/object_detector/1/model.savedmodel/
ls -ltr ./models/object_detector/1/model.savedmodel/
אחרי שמורידים את המודל באופן מקומי, מאגר המודלים יסודר באופן הבא:
./models
└── object_detector
└── 1
└── model.savedmodel
├── saved_model.pb
└── variables
├── variables.data-00000-of-00001
└── variables.index
העתקת ארטיפקטים של מודל לקטגוריה של Cloud Storage
הארטיפקטים של המודל שהורדו, כולל קובץ ההגדרות של המודל, מועלים לקטגוריה ב-Cloud Storage שצוינה באמצעות MODEL_ARTIFACTS_REPOSITORY. אפשר להשתמש בהם כשיוצרים את משאב המודל של Gemini Enterprise Agent Platform.
gcloud storage cp ./models/object_detector MODEL_ARTIFACTS_REPOSITORY/ --recursive
יצירת מאגר Artifact Registry
יוצרים מאגר ב-Artifact Registry כדי לאחסן את קובץ האימג' בקונטיינר שייווצר בקטע הבא.
מפעילים את שירות Artifact Registry API בפרויקט.
gcloud services enable artifactregistry.googleapis.com
מריצים את הפקודה הבאה במעטפת כדי ליצור מאגר של Artifact Registry:
gcloud artifacts repositories create getting-started-nvidia-triton \
--repository-format=docker \
--location=LOCATION_ID \
--description="NVIDIA Triton Docker repository"
מחליפים את LOCATION_ID באזור שבו Artifact Registry מאחסן את קובץ האימג' בקונטיינר. בהמשך, תצטרכו ליצור משאב של מודל Gemini Enterprise Agent Platform בנקודת קצה למיקום שמתאימה לאזור הזה, לכן חשוב לבחור אזור שבו ל-Gemini Enterprise Agent Platform יש נקודת קצה למיקום, כמו us-central1.
אחרי שהפעולה מסתיימת, הפקודה מדפיסה את הפלט הבא:
Created repository [getting-started-nvidia-triton].
יוצרים את קובץ האימג' של הקונטיינר
NVIDIA מספקת קובצי אימג' של Docker ליצירת קובץ אימג' של קונטיינר שמריץ את Triton ומתאים לדרישות של קונטיינר בהתאמה אישית של פלטפורמת הסוכנים של Gemini Enterprise להצגת מודלים. אפשר למשוך את התמונה באמצעות docker ולתייג את הנתיב ב-Artifact Registry שאליו התמונה תידחף.
NGC_TRITON_IMAGE_URI="nvcr.io/nvidia/tritonserver:22.01-py3"
docker pull $NGC_TRITON_IMAGE_URI
docker tag $NGC_TRITON_IMAGE_URI LOCATION_ID-docker.pkg.dev/PROJECT_ID/getting-started-nvidia-triton/vertex-triton-inference
מחליפים את מה שכתוב בשדות הבאים:
- LOCATION_ID: האזור של מאגר Artifact Registry, כפי שצוין בקטע הקודם
- PROJECT_ID: המזהה של Google Cloudהפרויקט
יכול להיות שהפעלת הפקודה תימשך כמה דקות.
הכנת קובץ מטען ייעודי (payload) לבדיקת בקשות הסקה
כדי לשלוח לשרת של הקונטיינר בקשת הסקה, צריך להכין את מטען הייעודי (payload) עם קובץ תמונה לדוגמה באמצעות Python. מריצים את סקריפט Python הבא כדי ליצור את קובץ המטען הייעודי (payload):
import json
import requests
# install required packages before running
# pip install pillow numpy --upgrade
from PIL import Image
import numpy as np
# method to generate payload from image url
def generate_payload(image_url):
# download image from url and resize
image_inputs = Image.open(requests.get(image_url, stream=True).raw)
image_inputs = image_inputs.resize((200, 200))
# convert image to numpy array
image_tensor = np.asarray(image_inputs)
# derive image shape
image_shape = [1] + list(image_tensor.shape)
# create payload request
payload = {
"id": "0",
"inputs": [
{
"name": "input_tensor",
"shape": image_shape,
"datatype": "UINT8",
"parameters": {},
"data": image_tensor.tolist(),
}
],
}
# save payload as json file
payload_file = "instances.json"
with open(payload_file, "w") as f:
json.dump(payload, f)
print(f"Payload generated at {payload_file}")
return payload_file
if __name__ == '__main__':
image_url = "https://github.com/tensorflow/models/raw/master/research/object_detection/test_images/image2.jpg"
payload_file = generate_payload(image_url)
סקריפט Python יוצר מטען ייעודי (payload) ומדפיס את התגובה הבאה:
Payload generated at instances.json
הפעלת הקונטיינר באופן מקומי (אופציונלי)
לפני שמעבירים את תמונת מאגר התגים אל Artifact Registry כדי להשתמש בה עם פלטפורמת הנציגים של Gemini Enterprise, אפשר להריץ אותה כמאגר תגים בסביבה המקומית כדי לוודא שהשרת פועל כמו שצריך:
כדי להריץ את קובץ האימג' בקונטיינר באופן מקומי, מריצים את הפקודה הבאה במעטפת:
docker run -t -d -p 8000:8000 --rm \ --name=local_object_detector \ -e AIP_MODE=True \ LOCATION_ID-docker.pkg.dev/PROJECT_ID/getting-started-nvidia-triton/vertex-triton-inference \ --model-repository MODEL_ARTIFACTS_REPOSITORY \ --strict-model-config=falseמחליפים את מה שכתוב בשדות הבאים, כמו שעשיתם בקטע הקודם:
- LOCATION_ID: האזור של מאגר Artifact Registry, כפי שצוין בקטע הקודם.
- PROJECT_ID: המזהה של Google Cloud. פרויקט
- MODEL_ARTIFACTS_REPOSITORY: הנתיב ב-Cloud Storage שבו נמצאים ארטיפקטים של המודל.
הפקודה הזו מריצה קונטיינר במצב מנותק, וממפה את יציאה
8000של הקונטיינר ליציאה8000של הסביבה המקומית. קובץ האימג' של Triton מ-NGC מגדיר את Triton להשתמש ביציאה8000.כדי לשלוח לשרת של הקונטיינר בדיקת תקינות, מריצים את הפקודה הבאה במעטפת:
curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/v2/health/readyאם הפעולה מצליחה, השרת מחזיר את קוד הסטטוס
200.מריצים את הפקודה הבאה כדי לשלוח לשרת של מאגר התגים בקשת הסקה באמצעות מטען הייעודי (payload) שנוצר קודם, ומקבלים תגובות הסקה:
curl -X POST \ -H "Content-Type: application/json" \ -d @instances.json \ localhost:8000/v2/models/object_detector/infer | jq -c '.outputs[] | select(.name == "detection_classes")'הבקשה הזו משתמשת באחת מתמונות הבדיקה שכלולות בדוגמה של זיהוי אובייקטים ב-TensorFlow.
אם הפעולה מצליחה, השרת מחזיר את ההסקה הבאה:
{"name":"detection_classes","datatype":"FP32","shape":[1,300],"data":[38,1,...,44]}כדי לעצור את הקונטיינר, מריצים את הפקודה הבאה במעטפת:
docker stop local_object_detector
העברת קובץ האימג' של הקונטיינר אל Artifact Registry
מגדירים את Docker כדי לגשת ל-Artifact Registry. לאחר מכן מעבירים את קובץ האימג' בקונטיינר למאגר ב-Artifact Registry.
כדי לתת להתקנה המקומית של Docker הרשאה לשלוח אל Artifact Registry באזור שבחרתם, מריצים את הפקודה הבאה במעטפת:
gcloud auth configure-docker LOCATION_ID-docker.pkg.dev- מחליפים את LOCATION_ID באזור שבו יצרתם את המאגר בקטע הקודם.
כדי להעביר את קובץ האימג' בקונטיינר שנוצר זה עתה אל Artifact Registry, מריצים את הפקודה הבאה במעטפת:
docker push LOCATION_ID-docker.pkg.dev/PROJECT_ID/getting-started-nvidia-triton/vertex-triton-inferenceמחליפים את מה שכתוב בשדות הבאים, כמו שעשיתם בקטע הקודם:
- LOCATION_ID: האזור של מאגר Artifact Registry, כפי שצוין בקטע הקודם.
- PROJECT_ID: מזהה Google Cloudהפרויקט.
פריסת המודל
בקטע הזה יוצרים מודל ונקודת קצה, ואז פורסים את המודל בנקודת הקצה.
יצירת מודל
כדי ליצור משאב Model שמשתמש בקונטיינר בהתאמה אישית שמריץ את Triton, משתמשים בפקודה gcloud ai models upload.
לפני שיוצרים את המודל, כדאי לקרוא את המאמר בנושא הגדרות של מאגרי תגים בהתאמה אישית כדי להבין אם צריך לציין את השדות האופציונליים sharedMemorySizeMb, startupProbe ו-healthProbe במאגר התגים.
gcloud ai models upload \
--region=LOCATION_ID \
--display-name=DEPLOYED_MODEL_NAME \
--container-image-uri=LOCATION_ID-docker.pkg.dev/PROJECT_ID/getting-started-nvidia-triton/vertex-triton-inference \
--artifact-uri=MODEL_ARTIFACTS_REPOSITORY \
--container-args='--strict-model-config=false'
- LOCATION_ID: האזור שבו משתמשים בפלטפורמת הסוכנים.
- PROJECT_ID: המזהה של Google Cloudהפרויקט
-
DEPLOYED_MODEL_NAME: שם ל-
DeployedModel. אפשר להשתמש גם בשם המוצג שלModelבשבילDeployedModel.
הארגומנט --container-args='--strict-model-config=false' מאפשר ל-Triton ליצור את הגדרת המודל באופן אוטומטי.
יצירת נקודת קצה
כדי להשתמש במודל להצגת מסקנות אונליין, צריך לפרוס אותו לנקודת קצה. אם אתם פורסים מודל לנקודת קצה קיימת, אתם יכולים לדלג על השלב הזה. בדוגמה הבאה משתמשים בפקודה gcloud ai endpoints create:
gcloud ai endpoints create \
--region=LOCATION_ID \
--display-name=ENDPOINT_NAME
מחליפים את מה שכתוב בשדות הבאים:
- LOCATION_ID: האזור שבו משתמשים בפלטפורמת הסוכנים.
- ENDPOINT_NAME: השם המוצג של נקודת הקצה.
יכול להיות שיחלפו כמה שניות עד שכלי Google Cloud CLI ייצור את נקודת הקצה.
פריסת המודל לנקודת קצה
אחרי שנקודת הקצה מוכנה, פורסים את המודל בנקודת הקצה. כשפורסים מודל לנקודת קצה, השירות משייך משאבים פיזיים למודל שרץ ב-Triton כדי להציג מסקנות אונליין.
בדוגמה הבאה השתמשנו בפקודה gcloud ai endpoints deploy-model כדי לפרוס את Model אל endpoint שמריץ Triton במעבדים גרפיים כדי להאיץ את ההסקת המסקנות, בלי לפצל את התנועה בין כמה משאבי DeployedModel:
ENDPOINT_ID=$(gcloud ai endpoints list \ --region=LOCATION_ID\ --filter=display_name=ENDPOINT_NAME\ --format="value(name)") MODEL_ID=$(gcloud ai models list \ --region=LOCATION_ID\ --filter=display_name=DEPLOYED_MODEL_NAME\ --format="value(name)") gcloud ai endpoints deploy-model $ENDPOINT_ID \ --region=LOCATION_ID\ --model=$MODEL_ID \ --display-name=DEPLOYED_MODEL_NAME\ --machine-type=MACHINE_TYPE\ --min-replica-count=MIN_REPLICA_COUNT\ --max-replica-count=MAX_REPLICA_COUNT\ --accelerator=count=ACCELERATOR_COUNT,type=ACCELERATOR_TYPE\ --traffic-split=0=100
מחליפים את מה שכתוב בשדות הבאים:
- LOCATION_ID: האזור שבו משתמשים בפלטפורמת הסוכנים.
- ENDPOINT_NAME: השם המוצג של נקודת הקצה.
-
DEPLOYED_MODEL_NAME: שם ל-
DeployedModel. אפשר להשתמש גם בשם המוצג שלModelבשבילDeployedModel. -
MACHINE_TYPE: אופציונלי. משאבי המכונה שמשמשים לכל צומת בפריסה הזו. הגדרת ברירת המחדל היא
n1-standard-2. מידע נוסף על סוגי מכונות - MIN_REPLICA_COUNT: מספר הצמתים המינימלי לפריסה הזו. אפשר להגדיל או להקטין את מספר הצמתים לפי הצורך בהתאם לעומס ההסקה, עד למספר המקסימלי של הצמתים ולפחות למספר הזה של הצמתים.
- MAX_REPLICA_COUNT: המספר המקסימלי של הצמתים לפריסה הזו. אפשר להגדיל או להקטין את מספר הצמתים בהתאם לעומס ההסקה, עד למספר הצמתים הזה ולעולם לא פחות ממספר הצמתים המינימלי.
ACCELERATOR_COUNT: מספר המאיצים לצירוף לכל מכונה שמריצה את המשימה. בדרך כלל זה 1. אם לא מציינים ערך, ערך ברירת המחדל הוא 1.
ACCELERATOR_TYPE: ניהול הגדרות התאוצה להצגת נתונים ב-GPU. כשפורסים מודל עם סוגי מכונות של Compute Engine, אפשר גם לבחור מאיץ GPU ולציין את הסוג. האפשרויות הן:
nvidia-tesla-a100,nvidia-tesla-p100,nvidia-tesla-p4,nvidia-tesla-t4ו-nvidia-tesla-v100.
יכול להיות שיעברו כמה שניות עד שהמודל ייפרס לנקודת הקצה באמצעות Google Cloud CLI. כשהמודל נפרס בהצלחה, הפקודה הזו מדפיסה את הפלט הבא:
Deployed a model to the endpoint xxxxx. Id of the deployed model: xxxxx.
קבלת מסקנות אונליין מהמודל שנפרס
כדי להפעיל את המודל דרך נקודת הקצה של Vertex AI Inference, צריך לעצב את בקשת ההסקה באמצעות אובייקט JSON סטנדרטי של בקשת הסקה
או אובייקט JSON של בקשת הסקה עם הרחבה בינארית
, ולשלוח בקשה ל-Gemini Enterprise Agent Platform REST rawPredictendpoint.
בדוגמה הבאה משתמשים בפקודה gcloud ai endpoints raw-predict:
ENDPOINT_ID=$(gcloud ai endpoints list \
--region=LOCATION_ID \
--filter=display_name=ENDPOINT_NAME \
--format="value(name)")
gcloud ai endpoints raw-predict $ENDPOINT_ID \
--region=LOCATION_ID \
--http-headers=Content-Type=application/json \
--request=@instances.json
מחליפים את מה שכתוב בשדות הבאים:
- LOCATION_ID: האזור שבו משתמשים בפלטפורמת הסוכנים.
- ENDPOINT_NAME: השם המוצג של נקודת הקצה.
נקודת הקצה מחזירה את התגובה הבאה לבקשה תקינה:
{
"id": "0",
"model_name": "object_detector",
"model_version": "1",
"outputs": [{
"name": "detection_anchor_indices",
"datatype": "FP32",
"shape": [1, 300],
"data": [2.0, 1.0, 0.0, 3.0, 26.0, 11.0, 6.0, 92.0, 76.0, 17.0, 58.0, ...]
}]
}
הסרת המשאבים
כדי להימנע מחיובים נוספים על Gemini Enterprise Agent Platform ועל Artifact Registry, צריך למחוק את Google Cloud המשאבים Google Cloud שיצרתם במהלך המדריך הזה:
כדי לבטל את הפריסה של המודל מנקודת הקצה ולמחוק את נקודת הקצה, מריצים את הפקודה הבאה במעטפת:
ENDPOINT_ID=$(gcloud ai endpoints list \ --region=LOCATION_ID \ --filter=display_name=ENDPOINT_NAME \ --format="value(name)") DEPLOYED_MODEL_ID=$(gcloud ai endpoints describe $ENDPOINT_ID \ --region=LOCATION_ID \ --format="value(deployedModels.id)") gcloud ai endpoints undeploy-model $ENDPOINT_ID \ --region=LOCATION_ID \ --deployed-model-id=$DEPLOYED_MODEL_ID gcloud ai endpoints delete $ENDPOINT_ID \ --region=LOCATION_ID \ --quietמחליפים את LOCATION_ID באזור שבו יצרתם את המודל בקטע הקודם.
כדי למחוק את המודל, מריצים את הפקודה הבאה במעטפת:
MODEL_ID=$(gcloud ai models list \ --region=LOCATION_ID \ --filter=display_name=DEPLOYED_MODEL_NAME \ --format="value(name)") gcloud ai models delete $MODEL_ID \ --region=LOCATION_ID \ --quietמחליפים את LOCATION_ID באזור שבו יצרתם את המודל בקטע הקודם.
כדי למחוק את המאגר ב-Artifact Registry ואת קובץ האימג' בקונטיינר שבו, מריצים את הפקודה הבאה בשורת הפקודה:
gcloud artifacts repositories delete getting-started-nvidia-triton \ --location=LOCATION_ID \ --quietמחליפים את LOCATION_ID באזור שבו יצרתם את מאגר Artifact Registry בקטע הקודם.
המאמרים הבאים
- מידע נוסף על דפוסי פריסה עם שרת ההסקה NVIDIA Triton ב-Gemini Enterprise Agent Platform זמין במדריכים לשימוש במחברת NVIDIA Triton.