שימוש בנקודות קצה פרטיות ייעודיות שמבוססות על Private Service Connect להסקת מסקנות אונליין

המידע בדף הזה רלוונטי למודלים שעברו אימון בהתאמה אישית ולמודלים של AutoML. מידע על פריסה של Model Garden זמין במאמר שימוש במודלים ב-Model Garden.

באמצעות Private Service Connect, אתם יכולים לפרוס את מודל Gemini Enterprise Agent Platform שאומן בהתאמה אישית ולהכניס לשימוש בסביבת הייצור מסקנות אונליין באופן מאובטח למספר פרויקטים של צרכנים ולרשתות VPC, בלי שתצטרכו כתובות IP ציבוריות, גישה לאינטרנט הציבורי או טווח כתובות IP פנימיות עם שיוך מפורש.

אנחנו ממליצים על Private Service Connect לתרחישי שימוש בהסקת מסקנות אונליין עם הדרישות הבאות:

  • דרישה לחיבורים פרטיים ומאובטחים
  • דרישה לזמן אחזור קצר
  • לא צריכים להיות נגישים לכולם

‫Private Service Connect משתמש בכלל העברה ברשת ה-VPC כדי לשלוח תעבורה באופן חד-כיווני לשירות ההיקשים אונליין של Agent Platform. כלל ההעברה מתחבר לשירות מצורף שחושף את שירות Agent Platform לרשת ה-VPC שלכם. מידע נוסף זמין במאמר מידע על גישה לשירותי Agent Platform באמצעות Private Service Connect. מידע נוסף על הגדרת Private Service Connect זמין בסקירה הכללית על Private Service Connect במסמכי העזרה של הענן הווירטואלי הפרטי (VPC).

נקודות קצה פרטיות ייעודיות תומכות בפרוטוקולי התקשורת HTTP ו-gRPC. בבקשות gRPC, צריך לכלול את הכותרת x-vertex-ai-endpoint-id כדי לזהות את נקודת הקצה בצורה נכונה. יש תמיכה בממשקי ה-API הבאים:

  • חיזוי
  • RawPredict
  • StreamRawPredict
  • השלמת צ'אט (רק ב-Model Garden)

אתם יכולים לשלוח בקשות להסקת מסקנות אונליין לנקודת קצה פרטית ייעודית באמצעות Agent Platform SDK for Python. פרטים נוספים זמינים במאמר בנושא קבלת מסקנות אונליין.

התפקידים הנדרשים

כדי לקבל את ההרשאה שנדרשת ליצירת נקודת קצה של Private Service Connect, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM‏ Agent Platform User (roles/aiplatform.user) בפרויקט. כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

התפקיד המוגדר מראש הזה כולל את ההרשאה aiplatform.endpoints.create, שנדרשת כדי ליצור נקודת קצה של Private Service Connect.

יכול להיות שתוכלו לקבל את ההרשאה הזו גם בתפקידים בהתאמה אישית או בתפקידים אחרים שמוגדרים מראש.

מידע נוסף על תפקידים והרשאות ב-Gemini Enterprise Agent Platform זמין במאמרים בקרת גישה ל-Agent Platform באמצעות IAM והרשאות IAM ב-Gemini Enterprise Agent Platform.

יצירת נקודת קצה להסקת מסקנות אונליין

אפשר להשתמש באחת מהשיטות הבאות כדי ליצור נקודת קצה להסקת מסקנות אונליין עם Private Service Connect מופעל.

זמן הקצוב לתפוגה של בקשה בנקודת קצה של Private Service Connect הוא 10 דקות. ב-Agent Platform SDK for Python, אפשר לציין ערך אחר של זמן קצוב לתפוגת בקשה על ידי ציון ערך חדש של inference_timeout, כמו בדוגמה הבאה. ערך הזמן הקצוב לתפוגה המקסימלי הוא 3,600 שניות (שעה אחת).

המסוף

  1. במסוף Cloud de Confiance , ב-Agent Platform, עוברים לדף חיזוי מיידי.

    מעבר לתחזית אונליין

  2. לוחצים על יצירה.

  3. מזינים שם תצוגה לנקודת הקצה.

  4. בוחרים באפשרות פרטי.

  5. בוחרים באפשרות Private Service Connect.

  6. לוחצים על Select project IDs (בחירת מזהי פרויקטים).

  7. בוחרים את הפרויקטים שרוצים להוסיף לרשימת ההיתרים של נקודת הקצה.

  8. לוחצים על Continue.

  9. בוחרים את מפרט המודל. מידע נוסף זמין במאמר בנושא פריסת מודל לנקודת קצה.

  10. לוחצים על יצירה כדי ליצור את נקודת הקצה ולפרוס בה את המודל.

  11. רושמים את מזהה נקודת הקצה שמופיע בתשובה.

API

REST

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • ‫VERTEX_AI_PROJECT_ID: המזהה של Cloud de Confiance by S3NS הפרויקט שבו יוצרים את נקודת הקצה של התחזית אונליין.
  • ‫REGION: האזור שבו אתם משתמשים ב-Gemini Enterprise Agent Platform.
  • ‫VERTEX_AI_ENDPOINT_NAME: השם המוצג של נקודת הקצה של התחזית אונליין.
  • ‫ALLOWED_PROJECTS: רשימה מופרדת בפסיקים של Cloud de Confiance מזהי פרויקטים שכל אחד מהם מוקף במירכאות. לדוגמה: ["PROJECTID1", "PROJECTID2"]. אם פרויקט לא מופיע ברשימה הזו, לא תוכלו לשלוח ממנו בקשות לחיזוי לנקודת הקצה של Agent Platform. חשוב לכלול את VERTEX_AI_PROJECT_ID ברשימה הזו כדי שתוכלו להתקשר לנקודת הקצה מאותו פרויקט שבו היא נמצאת.
  • ‫INFERENCE_TIMEOUT_SECS: (אופציונלי) מספר השניות בשדה האופציונלי inferenceTimeout.

ה-method של ה-HTTP וכתובת ה-URL:

POST https://REGION-aiplatform.googleapis.com/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints

תוכן בקשת JSON:

{
  "displayName": "VERTEX_AI_ENDPOINT_NAME",
  "privateServiceConnectConfig": {
    "enablePrivateServiceConnect": true,
    "projectAllowlist": ["ALLOWED_PROJECTS"]
  },
  "clientConnectionConfig": {
    "inferenceTimeout": "INFERENCE_TIMEOUT_SECSs"
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "name": "projects/VERTEX_AI_PROJECT_NUMBER/locations/REGION/endpoints/ENDPOINT_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateEndpointOperationMetadata",
    "genericMetadata": {
      "createTime": "2020-11-05T17:45:42.812656Z",
      "updateTime": "2020-11-05T17:45:42.812656Z"
    }
  }
}
חשוב לרשום את ENDPOINT_ID.

Python

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonההוראות להגדרה במאמר מדריך למתחילים של Agent Platform באמצעות ספריות לקוח.

כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.

מחליפים את מה שכתוב בשדות הבאים:

  • ‫VERTEX_AI_PROJECT_ID: המזהה של Cloud de Confiance by S3NS הפרויקט שבו יוצרים את נקודת הקצה של ההסקה אונליין
  • ‫REGION: האזור שבו אתם משתמשים ב-Gemini Enterprise Agent Platform
  • ‫VERTEX_AI_ENDPOINT_NAME: השם המוצג של נקודת הקצה של ההסקה אונליין
  • ‫ALLOWED_PROJECTS: רשימה מופרדת בפסיקים של Cloud de Confiance מזהי פרויקטים, כל אחד מהם מוקף במירכאות. לדוגמה: ["PROJECTID1", "PROJECTID2"]. אם פרויקט לא מופיע ברשימה הזו, לא תוכלו לשלוח ממנו בקשות להסקת מסקנות לנקודת הקצה של Agent Platform. חשוב לכלול את VERTEX_AI_PROJECT_ID ברשימה הזו כדי שתוכלו להתקשר לנקודת הקצה מאותו פרויקט שבו היא נמצאת.
  • ‫INFERENCE_TIMEOUT_SECS: (אופציונלי) מספר השניות בערך האופציונלי inference_timeout.
PROJECT_ID = "VERTEX_AI_PROJECT_ID"
REGION = "REGION"
VERTEX_AI_ENDPOINT_NAME = "VERTEX_AI_ENDPOINT_NAME"
INFERENCE_TIMEOUT_SECS = "INFERENCE_TIMEOUT_SECS"

from google.cloud import aiplatform

aiplatform.init(project=PROJECT_ID, location=REGION)

# Create the forwarding rule in the consumer project
psc_endpoint = aiplatform.PrivateEndpoint.create(
display_name=VERTEX_AI_ENDPOINT_NAME,
project=PROJECT_ID,
location=REGION,
private_service_connect_config=aiplatform.PrivateEndpoint.PrivateServiceConnectConfig(
    project_allowlist=["ALLOWED_PROJECTS"],
    ),
inference_timeout=INFERENCE_TIMEOUT_SECS,
)

רושמים את ENDPOINT_ID בסוף ה-URI של נקודת הקצה שמוחזר:

INFO:google.cloud.aiplatform.models:To use this PrivateEndpoint in another session:
INFO:google.cloud.aiplatform.models:endpoint = aiplatform.PrivateEndpoint('projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID')

יצירת נקודת קצה להסקת מסקנות אונליין באמצעות אוטומציה של PSC

הסקת מסקנות אונליין משולבת עם אוטומציה של קישוריות לשירות, שמאפשרת להגדיר נקודות קצה (endpoints) להסקת מסקנות באמצעות אוטומציה של PSC. השיטה הזו מפשטת את התהליך כי היא יוצרת אוטומטית נקודות קצה של PSC, והיא מועילה במיוחד למפתחי ML שאין להם הרשאות ליצור משאבי רשת כמו כללי העברה בפרויקט.

כדי להתחיל, האדמין ברשת צריך ליצור מדיניות של חיבור שירות. המדיניות הזו היא הגדרה חד-פעמית לכל פרויקט ורשת, שמאפשרת ל-Gemini Enterprise Agent Platform (סיווג שירות gcp-vertexai) ליצור נקודות קצה (endpoints) של PSC בתוך הפרויקטים והרשתות שלכם.

לאחר מכן, תוכלו ליצור נקודות קצה באמצעות הגדרת האוטומציה של PSC ואז לפרוס את המודלים. אחרי שהפריסה מסתיימת, אפשר לגשת לפרטי נקודת הקצה הרלוונטית של PSC בתוך נקודות הקצה.

מגבלות

  • יש מגבלה אזורית של 500 נקודות קצה (endpoints) על הגדרות אוטומציה של PSC.
  • תוצאות האוטומציה של PSC נמחקות כשלא נפרס מודל או כשמודל נמצא בתהליך פריסה לנקודת הקצה. אחרי ניקוי הנתונים ופריסת המודל, התוצאות החדשות של האוטומציה כוללות כתובות IP וכללי העברה שונים.

יצירת מדיניות לחיבור שירות

כדי ליצור מדיניות לחיבור שירות, צריך להיות אדמין ברשת. כדי לאפשר ל-Agent Platform ליצור נקודות קצה של PSC ברשתות שלכם, צריך להגדיר מדיניות של חיבור שירות. אם אין מדיניות תקפה, האוטומציה נכשלת עם השגיאה CONNECTION_POLICY_MISSING.

  1. יוצרים את מדיניות החיבור לשירות.

    • POLICY_NAME: שם שהמשתמש מגדיר למדיניות.
    • ‫PROJECT_ID: המזהה של פרויקט השירות שבו אתם יוצרים משאבים של Gemini Enterprise Agent Platform.

    • ‫VPC_PROJECT: מזהה הפרויקט שבו נמצא ה-VPC של הלקוח. בהגדרה של VPC יחיד, הוא מקביל ל-$PROJECT. בהגדרה של VPC משותף, זהו פרויקט מארח של VPC.

    • ‫NETWORK_NAME: השם של הרשת שרוצים לפרוס אליה.

    • ‫REGION: האזור של הרשת.

    • ‫PSC_SUBNETS: רשתות המשנה של Private Service Connect שבהן רוצים להשתמש.

    gcloud network-connectivity service-connection-policies create POLICY_NAME \
        --project=VPC_PROJECT \
        --network=projects/PROJECT_ID/global/networks/NETWORK_NAME \
        --service-class=gcp-vertexai --region=REGION --subnets=PSC_SUBNETS
    
  2. צפייה במדיניות חיבור השירות.

    gcloud network-connectivity service-connection-policies list \
        --project=VPC_PROJECT --region=REGION

    בדוגמה הבאה מוצגת הגדרה של VPC יחיד:

        gcloud network-connectivity service-connection-policies create test-policy \
            --network=default \
            --project=YOUR_PROJECT_ID \
            --region=us-central1 \
            --service-class=gcp-vertexai \
            --subnets=default \
            --psc-connection-limit=500 \
            --description=test

יצירת נקודת קצה להסקת מסקנות אונליין באמצעות הגדרת אוטומציה של PSC

ב-PSCAutomationConfig, מוודאים ש-projectId נמצא ברשימת ההיתרים.

REST

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • ‫REGION: האזור שבו משתמשים ב-Agent Platform.
  • ‫VERTEX_AI_PROJECT_ID: המזהה של Cloud de Confiance by S3NS הפרויקט שבו יוצרים את נקודת הקצה של ההסקה אונליין.
  • ‫VERTEX_AI_ENDPOINT_NAME: השם המוצג של נקודת הקצה של התחזית אונליין.
  • ‫NETWORK_NAME: שם המשאב המלא, כולל מזהה הפרויקט, במקום מספר הפרויקט.

ה-method של ה-HTTP וכתובת ה-URL:

POST https://REGION-aiplatform.googleapis.com/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints

תוכן בקשת JSON:

{
  {
    displayName: "VERTEX_AI_ENDPOINT_NAME",
    privateServiceConnectConfig: {
      enablePrivateServiceConnect: true,
      projectAllowlist: ["VERTEX_AI_PROJECT_ID"],
      pscAutomationConfigs: [
        { "project_id": "VERTEX_AI_PROJECT_ID", "network": "projects/VERTEX_AI_PROJECT_ID/global/networks/NETWORK_NAME" },
      ],
    },
  },

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "name": "projects/VERTEX_AI_PROJECT_NUMBER/locations/REGION/endpoints/ENDPOINT_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateEndpointOperationMetadata",
    "genericMetadata": {
      "createTime": "2020-11-05T17:45:42.812656Z",
      "updateTime": "2020-11-05T17:45:42.812656Z"
    }
  }
}
חשוב לרשום את ENDPOINT_ID.

Python

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonההוראות להגדרה במאמר מדריך למתחילים של Agent Platform באמצעות ספריות לקוח.

כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.

מחליפים את מה שכתוב בשדות הבאים:

  • ‫VERTEX_AI_PROJECT_ID: המזהה של Cloud de Confiance by S3NS הפרויקט שבו יוצרים את נקודת הקצה של ההסקה אונליין
  • ‫REGION: האזור שבו אתם משתמשים ב-Gemini Enterprise Agent Platform
  • ‫VERTEX_AI_ENDPOINT_NAME: השם המוצג של נקודת הקצה של ההסקה אונליין
  • NETWORK_NAME: שם המשאב המלא, כולל מזהה הפרויקט, במקום מספר הפרויקט.
PROJECT_ID = "VERTEX_AI_PROJECT_ID"
REGION = "REGION"
VERTEX_AI_ENDPOINT_NAME = "VERTEX_AI_ENDPOINT_NAME"

from google.cloud import aiplatform

aiplatform.init(project=PROJECT_ID, location=REGION)

config =
aiplatform.compat.types.service_networking.PrivateServiceConnectConfig(
        enable_private_service_connect=True,
        project_allowlist="VERTEX_AI_PROJECT_ID"
        psc_automation_configs=[
            aiplatform.compat.types.service_networking.PSCAutomationConfig(
                project_id="VERTEX_AI_PROJECT_ID"
network=projects/"VERTEX_AI_PROJECT_ID"/global/networks/"NETWORK_NAME",
            )
        ]
    )
psc_endpoint = aiplatform.PrivateEndpoint.create(
     display_name="VERTEX_AI_ENDPOINT_NAME"
     private_service_connect_config=config,
)

פריסת המודל

אחרי שיוצרים נקודת קצה להסקת מסקנות אונליין עם Private Service Connect מופעל, פורסים את המודל בנקודת הקצה לפי השלבים שמפורטים במאמר פריסת מודל בנקודת קצה.

יצירה ידנית של נקודת קצה של PSC

כדי לחבר את רשת ה-VPC לנקודת הקצה של ההסקה אונליין באופן ידני, צריך לקבל את ה-URI של קובץ השירות, ליצור כלל העברה ולקבל את כתובת ה-IP הפנימית.

קבלת ה-URI של קובץ השירות המצורף

כשפורסים את המודל, נוצר קובץ מצורף לשירות עבור נקודת הקצה של ההסקה אונליין. החיבור לשירות הזה מייצג את שירות ההסקה אונליין של Agent Platform שנחשף לרשת ה-VPC שלכם. מריצים את הפקודה gcloud ai endpoints describe כדי לקבל את מזהה ה-URI של שירות ה-Attachment.

  1. ברשימה מזינים רק את הערך serviceAttachment מפרטי נקודת הקצה:

    gcloud ai endpoints describe ENDPOINT_ID \
    --project=VERTEX_AI_PROJECT_ID \
    --region=REGION \
    | grep -i serviceAttachment
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫ENDPOINT_ID: המזהה של נקודת הקצה של ההסקה אונליין
    • ‫VERTEX_AI_PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance by S3NS שבו יצרתם את נקודת הקצה של ההסקה אונליין
    • ‫REGION: האזור של הבקשה

    הפלט אמור להיראות כך:

    serviceAttachment: projects/ac74a9f84c2e5f2a1-tp/regions/us-central1/serviceAttachments/gkedpm-c6e6a854a634dc99472bb802f503c1
    
  2. רושמים את המחרוזת כולה בשדה serviceAttachment. זהו ה-URI של קובץ השירות המצורף.

יצירת כלל העברה

אתם יכולים לשמור כתובת IP פנימית וליצור כלל העברה עם הכתובת הזו. כדי ליצור את כלל ההעברה, צריך את ה-URI של קובץ השירות מהשלב הקודם.

  1. כדי לשמור כתובת IP פנימית לכלל ההעברה, משתמשים בפקודה gcloud compute addresses create:

    gcloud compute addresses create ADDRESS_NAME \
    --project=VPC_PROJECT_ID \
    --region=REGION \
    --subnet=SUBNETWORK \
    --addresses=INTERNAL_IP_ADDRESS
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫ADDRESS_NAME: שם לכתובת ה-IP הפנימית
    • ‫VPC_PROJECT_ID: מזהה Cloud de Confiance הפרויקט שמארח את רשת ה-VPC. אם נקודת הקצה של ההסקה אונליין וכלל ההעברה של Private Service Connect מתארחים באותו פרויקט, צריך להשתמש ב-VERTEX_AI_PROJECT_ID בשביל הפרמטר הזה.
    • ‫REGION: Cloud de Confiance האזור שבו רוצים ליצור את כלל ההעברה של Private Service Connect
    • ‫SUBNETWORK: השם של רשת המשנה ב-VPC שמכילה את כתובת ה-IP
    • ‫INTERNAL_IP_ADDRESS: כתובת ה-IP הפנימית שרוצים לשריין. הפרמטר הזה הוא אופציונלי.

      • אם מציינים את הפרמטר הזה, כתובת ה-IP צריכה להיות בטווח כתובות ה-IP הראשי של רשת המשנה. כתובת ה-IP יכולה להיות כתובת RFC 1918 או רשת משנה עם טווחים שאינם RFC.
      • אם לא מציינים את הפרמטר הזה, מוקצית כתובת IP פנימית באופן אוטומטי.
      • מידע נוסף זמין במאמר בנושא שמירת כתובת IPv4 או IPv6 פנימית סטטית חדשה.
  2. כדי לוודא שכתובת ה-IP שמורה, משתמשים בפקודה gcloud compute addresses list:

    gcloud compute addresses list --filter="name=(ADDRESS_NAME)" \
    --project=VPC_PROJECT_ID
    

    בתגובה, מוודאים שמופיע סטטוס RESERVED לכתובת ה-IP.

  3. כדי ליצור את כלל ההעברה ולהפנות אותו לנספח של שירות ההסקה אונליין, משתמשים בפקודה gcloud compute forwarding-rules create:

    gcloud compute forwarding-rules create PSC_FORWARDING_RULE_NAME \
        --address=ADDRESS_NAME \
        --project=VPC_PROJECT_ID \
        --region=REGION \
        --network=VPC_NETWORK_NAME \
        --target-service-attachment=SERVICE_ATTACHMENT_URI
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫PSC_FORWARDING_RULE_NAME: שם לכלל ההעברה
    • ‫VPC_NETWORK_NAME: השם של רשת ה-VPC שבה רוצים ליצור את נקודת הקצה
    • ‫SERVICE_ATTACHMENT_URI: קובץ השירות שציינתם קודם
  4. כדי לוודא שקובץ השירות מקבל את נקודת הקצה, משתמשים בפקודה gcloud compute forwarding-rules describe:

    gcloud compute forwarding-rules describe PSC_FORWARDING_RULE_NAME \
    --project=VPC_PROJECT_ID \
    --region=REGION
    

    בתשובה, מוודאים שהסטטוס ACCEPTED מופיע בשדה pscConnectionStatus.

קבלת כתובת ה-IP הפנימית

אם לא ציינתם ערך ל-INTERNAL_IP_ADDRESS כשיצרתם את כלל ההעברה, תוכלו לקבל את הכתובת שהוקצתה באופן אוטומטי באמצעות הפקודה gcloud compute forwarding-rules describe:

gcloud compute forwarding-rules describe PSC_FORWARDING_RULE_NAME \
--project=VERTEX_AI_PROJECT_ID \
--region=REGION \
| grep -i IPAddress

מחליפים את מה שכתוב בשדות הבאים:

  • ‫VERTEX_AI_PROJECT_ID: מזהה הפרויקט
  • ‫REGION: שם האזור של הבקשה

אופציונלי: קבלת נקודת קצה של PSC מתוצאת האוטומציה של PSC

אפשר לקבל את כתובת ה-IP שנוצרה ואת כלל ההעברה מנקודת הקצה של ההסקה. הנה דוגמה:

"privateServiceConnectConfig": {
  "enablePrivateServiceConnect": true,
  "projectAllowlist": [
    "your-project-id",
  ],
  "pscAutomationConfigs": [
    {
      "projectId": "your-project-id",
      "network": "projects/your-project-id/global/networks/default",
      "ipAddress": "10.128.15.209",
      "forwardingRule": "https://www.googleapis.com/compute/v1/projects/your-project-id/regions/us-central1/forwardingRules/sca-auto-fr-47b0d6a4-eaff-444b-95e6-e4dc1d10101e",
      "state": "PSC_AUTOMATION_STATE_SUCCESSFUL"
    },
  ]
}

ריכזנו כאן כמה פרטים על טיפול בשגיאות.

  • כשל באוטומציה לא משפיע על התוצאה של פריסת המודל.
  • הסטטוס מציין אם הפעולה הצליחה או נכשלה.
    • אם הפעולה תצליח, כתובת ה-IP וכלל ההעברה יוצגו.
    • אם הפעולה לא תצליח, תוצג הודעת שגיאה.
  • הגדרות האוטומציה מוסרות כשאין מודלים שפרוסים או בתהליך פריסה לנקודת הקצה. אם פורס מודל מאוחר יותר, כתובת ה-IP וכלל ההעברה משתנים.
  • לא ניתן לשחזר אוטומציה שנכשלה. במקרה של כשל, עדיין אפשר ליצור את נקודת הקצה של PSC באופן ידני. איך יוצרים נקודת קצה של PSC באופן ידני

קבלת מסקנות אונליין

קבלת מסקנות אונליין מנקודת קצה באמצעות Private Service Connect דומה לקבלת מסקנות אונליין מנקודות קצה ציבוריות, למעט השיקולים הבאים:

  • הבקשה צריכה להישלח מפרויקט שצוין ב-projectAllowlist כשנקודת הקצה של ההסקה אונליין נוצרה.
  • אם גישה גלובלית לא מופעלת, הבקשה צריכה להישלח מאותו אזור.
  • יש שתי יציאות פתוחות, 443 עם TLS באמצעות אישור בחתימה עצמית ו-80 בלי TLS. שתי היציאות תומכות ב-HTTP וב-gRPC. כל התעבורה נשארת ברשת הפרטית שלכם ולא עוברת דרך האינטרנט הציבורי.
  • השיטה המומלצת היא להשתמש ב-HTTPS עם אישור בחתימה עצמית שהתקבל מהסקת מסקנות אונליין ב-Gemini Enterprise Agent Platform, או לפרוס אישור בחתימה עצמית משלכם.
  • כדי לקבל מסקנות, צריך ליצור חיבור באמצעות כתובת ה-IP הסטטית של נקודת הקצה, אלא אם נוצרת רשומת DNS לכתובת ה-IP הפנימית. לדוגמה, שולחים את הבקשות predict לנקודת הקצה הבאה:

    http://INTERNAL_IP_ADDRESS/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict
    

    מחליפים את INTERNAL_IP_ADDRESS בכתובת ה-IP הפנימית שהזמנתם קודם.

  • לגבי בקשות gRPC: כדי להבטיח זיהוי תקין של נקודת הקצה עבור בקשות gRPC, צריך לכלול את הכותרת x-vertex-ai-endpoint-id. הדבר נדרש כי פרטי נקודת הקצה לא מועברים בנתיב הבקשה לתקשורת gRPC.

יצירת רשומת DNS לכתובת ה-IP הפנימית

מומלץ ליצור רשומת DNS כדי לקבל מסקנות אונליין מנקודת הקצה בלי לציין את כתובת ה-IP הפנימית.

מידע נוסף זמין במאמר דרכים אחרות להגדרת DNS.

  1. כדי ליצור אזור DNS פרטי, משתמשים בפקודה gcloud dns managed-zones create. האזור הזה משויך לרשת ה-VPC שבה נוצר כלל ההעברה.

    DNS_NAME_SUFFIX="prediction.p.vertexai.goog."  # DNS names have "." at the end.
    gcloud dns managed-zones create ZONE_NAME \
    --project=VPC_PROJECT_ID \
    --dns-name=$DNS_NAME_SUFFIX \
    --networks=VPC_NETWORK_NAME \
    --visibility=private \
    --description="A DNS zone for Agent Platform endpoints using Private Service Connect."
    
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫ZONE_NAME: השם של תחום ה-DNS
  2. כדי ליצור רשומת DNS באזור, משתמשים בפקודה gcloud dns record-sets create:

    DNS_NAME=ENDPOINT_ID-REGION-VERTEX_AI_PROJECT_NUMBER.$DNS_NAME_SUFFIX
    gcloud dns record-sets create $DNS_NAME \
    --rrdatas=INTERNAL_IP_ADDRESS \
    --zone=ZONE_NAME \
    --type=A \
    --ttl=60 \
    --project=VPC_PROJECT_ID
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫VERTEX_AI_PROJECT_NUMBER: מספר הפרויקט ב-VERTEX_AI_PROJECT_ID. אפשר לראות את מספר הפרויקט במסוף Cloud de Confiance . מידע נוסף זמין במאמר זיהוי פרויקטים.
    • ‫INTERNAL_IP_ADDRESS: כתובת ה-IP הפנימית של נקודת הקצה של ההסקה אונליין

    עכשיו אפשר לשלוח את הבקשות לpredict אל:

    http://ENDPOINT_ID-REGION-VERTEX_AI_PROJECT_NUMBER.prediction.p.vertexai.goog/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict
    

תמיכה באישור Transport Layer Security ‏ (TLS)

הסקת מסקנות אונליין ב-Gemini Enterprise Agent Platform מאובטחת באמצעות אישור בחתימה עצמית. האישור הזה לא נחתם על ידי רשות אישורים מהימנה, ולכן צריך להגדיר במפורש את הלקוחות שמנסים ליצור חיבור HTTPS כך שהם יסמכו עליו. התוקף של האישור בחתימה עצמית שמתקבל מנקודת הקצה של ההיסק אונליין ב-Gemini Enterprise Agent Platform הוא 10 שנים. האישור הזה לא ייחודי לנקודת קצה ספציפית, ולכן אפשר להשתמש באישור יחיד לכל השילובים של מאגר האישורים. בהמשך מפורטים השלבים הנדרשים כדי ליצור חיבור HTTPS לניתוח אונליין ב-Gemini Enterprise Agent Platform:

  1. הגדרת DNS: האישור בחתימה עצמית כולל את שם הנושא החלופי (SAN) *.prediction.p.vertexai.goog. צריך ליצור רשומת DNS ברשת בפורמט הזה.

    פרטים על ההטמעה מופיעים במאמר בנושא יצירת רשומת DNS לכתובת ה-IP הפנימית.

  2. ביסוס אמון הלקוח: הלקוח צריך להוריד את האישור בחתימה עצמית ולהוסיף אותו למאגר האישורים המקומי שלו.

  3. יצירת חיבור HTTPS: כדי ליצור חיבור HTTPS להסקת מסקנות אונליין ב-Gemini Enterprise Agent Platform, צריך להשתמש בשם הדומיין שמוגדר במלואו (FQDN). הדבר נחוץ כי השירות משתמש באישור SSL עם תבנית wildcard שתקף לדומיין *.prediction.p.vertexai.goog.

בשלבים הבאים מוסבר איך להוריד את אישור ההסקה של פלטפורמת הסוכנים של Gemini Enterprise באינטרנט ולהוסיף אותו למאגר האישורים המקומי במערכות Linux מבוססות Debian, כמו Debian 11 ו-Ubuntu.

  1. מעדכנים את חבילות מערכת ההפעלה ומתקינים את OpenSSL:

    sudo apt update && sudo apt install openssl
    
  2. מריצים את הפקודה הבאה מספריית הבית כדי להוריד את אישור ההסקה אונליין של Gemini Enterprise Agent Platform ולשמור אותו בקובץ בשם vertex_certificate.crt בספרייה הנוכחית. מחליפים את הפרטים הבאים:

    • ‫ENDPOINT_ID: המזהה של נקודת הקצה של המודל שנפרס
    • ‫REGION: האזור שבו נמצאת נקודת הקצה
    • ‫VERTEX_AI_PROJECT_NUMBER: מספר הפרויקט שלכם. אפשר למצוא את מספר הפרויקט במסוף Cloud de Confiance . מידע נוסף זמין במאמר זיהוי פרויקטים.
    openssl s_client -showcerts -connect \
    ENDPOINT_ID-REGION-VERTEX_AI_PROJECT_NUMBER.prediction.p.vertexai.goog:443 </dev/null | \
    openssl x509 -outform pem -out vertex_certificate.crt
    
    
  3. מעבירים את האישור למאגר האישורים המהימנים של המערכת:

    sudo mv vertex_certificate.crt /usr/local/share/ca-certificates
    
  4. מעדכנים את רשימת רשויות האישורים המהימנות ב-Certificate Manager. אמור להופיע פלט שמאשר שנוסף אישור אחד.

    sudo update-ca-certificates
    
  5. שולחים בקשת predict לכתובת ה-URL הבאה ומבצעים את ההחלפות האלה:

    • ‫INTERNAL_IP_ADDRESS: כתובת ה-IP הפנימית של נקודת הקצה של ההסקה אונליין
    • ‫VERTEX_AI_PROJECT_ID: מזהה הפרויקט שלכם
    https://ENDPOINT_ID-REGION-VERTEX_AI_PROJECT_NUMBER.prediction.p.vertexai.goog/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict
    

תמיכה באישור מותאם אישית ל-TLS

ארגונים שזקוקים לשליטה מדויקת בניהול אישורים וברוטציה שלהם עבור נקודות קצה של הסקת מסקנות אונליין בפלטפורמת הסוכנים של Gemini Enterprise יכולים להשתמש באישור בניהול הלקוח עם מאזן עומסים חיצוני או פנימי אזורי של אפליקציות (HTTPS) Cloud de Confiance by S3NS.

אלה השלבים העיקריים לפריסה:

  1. יוצרים אישור באחת מהדרכים הבאות:

  2. פריסת מאזן עומסים אזורי של אפליקציות (HTTPS):

  3. מגדירים את ה-DNS:

    • מוסיפים רשומת A לתחום ה-DNS. האזור יכול להיות ציבורי או פרטי.
    • הרשומה הזו צריכה למפות את הדומיין המותאם אישית שמוגדר במלואו (לדוגמה, example.com) לכתובת ה-IP של מאזן העומסים של אפליקציות (ALB) האזורי.
  4. עדכון מאגר האישורים המקומי:

    • כדי שהלקוח יאמת את השרת, צריך לייבא את האישור של Application Load Balancer (או את רשות האישורים שהנפיקה אותו) אל מאגר האישורים המקומי.

עכשיו אפשר לשלוח את בקשות החיזוי לדומיין המותאם אישית שמוגדר במלואו:

https://example.com/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict

דוגמאות להסקת מסקנות אונליין

בקטעים הבאים מופיעות דוגמאות לאופן שבו אפשר לשלוח את הבקשה predict באמצעות Python.

דוגמה ראשונה

psc_endpoint = aiplatform.PrivateEndpoint("projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID")
REQUEST_FILE = "PATH_TO_INPUT_FILE"
import json

import urllib3

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

with open(REQUEST_FILE) as json_file:
    data = json.load(json_file)
    response = psc_endpoint.predict(
        instances=data["instances"], endpoint_override=INTERNAL_IP_ADDRESS
    )
print(response)

מחליפים את PATH_TO_INPUT_FILE בנתיב לקובץ JSON שמכיל את נתוני הקלט של הבקשה.

דוגמה שנייה

import json
import requests
import urllib3
import google.auth.transport.requests

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

REQUEST_FILE = "PATH_TO_INPUT_FILE"

# Programmatically get credentials and generate an access token
creds, project = google.auth.default()
auth_req = google.auth.transport.requests.Request()
creds.refresh(auth_req)
access_token = creds.token
# Note: the credential lives for 1 hour by default
# After expiration, it must be refreshed
# See https://cloud.google.com/docs/authentication/token-types#access-tokens
# for token lifetimes.

with open(REQUEST_FILE) as json_file:
    data = json.load(json_file)
    url = "https://INTERNAL_IP_ADDRESS/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict"
    headers = {
      "Content-Type": "application/json",
      "Authorization": f"Bearer {access_token}"  # Add access token to headers
    }
    payload = {
      "instances": data["instances"],
    }

response = requests.post(url, headers=headers, json=payload, verify=False)

print(response.json())

דוגמה שלישית

הדוגמה הבאה מראה איך אפשר לשלוח את בקשת החיזוי לתחום ה-DNS באמצעות Python:

REQUEST_FILE = "PATH_TO_INPUT_FILE"
import json

import urllib3

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

with open(REQUEST_FILE) as json_file:
    data = json.load(json_file)
    response = psc_endpoint.predict(
        instances=data["instances"], endpoint_override=DNS_NAME
    )
print(response)

מחליפים את DNS_NAME בשם ה-DNS שציינתם בפקודה gcloud dns record-sets create.

שיטות מומלצות

כשפורסים נקודת קצה חדשה, יכול להיות שקובץ ה-Service Attachment יעודכן. תמיד צריך לבדוק את הסטטוס של קובץ השירות ושל נקודת הקצה של PSC לפני שמבצעים את קריאת ההסקה. בהמשך מפורטות שיטות מומלצות לביצוע הפעולה הזו:

  • אם לנקודת קצה אין פריסות פעילות, יכול להיות שפלטפורמת Gemini Enterprise Agent תמחק את קובץ השירות ותיצור אותו מחדש. כשיוצרים מחדש את קובץ השירות, צריך לוודא שנקודת הקצה של PSC נמצאת במצב מחובר (על ידי יצירה מחדש של כלל ההעברה).
  • כשנקודת קצה כוללת מודל פעיל שפרסתם, קובץ ה-Service Attachment לא משתנה. כדי לשמור את קובץ ה-ServiceAttachment, צריך ליצור פיצול תנועה ולהעביר את התנועה בהדרגה לגרסה החדשה של המודל, לפני שמבטלים את הפריסה של הגרסה הקודמת.
  • ‫Gemini Enterprise Agent Platform מאפשרת עד 1,000 חיבורים לכל קובץ מצורף לשירות.
  • גם לכלל ההעברה יש מגבלת מכסה. לפרטים, ראו מכסות ומגבלות של Cloud Load Balancing.

מגבלות

נקודות קצה של Agent Platform עם Private Service Connect כפופות למגבלות הבאות:

  • אין תמיכה בפריסה של מודלים של Gemini שעברו התאמה.
  • אין תמיכה ביציאה פרטית מתוך נקודת הקצה. מכיוון שכללי ההעברה של Private Service Connect הם חד-כיווניים, אי אפשר לגשת לעומסי עבודה פרטיים אחרים שלCloud de Confiance בתוך הקונטיינר.
  • אי אפשר לשנות את הערך projectAllowlist של נקודת קצה.
  • ‫Vertex Explainable AI לא נתמך.
  • לפני שמוחקים נקודת קצה, צריך לבטל את הפריסה של המודל מנקודת הקצה הזו.
  • אם כל הדגמים לא נפרסו במשך יותר מ-10 דקות, יכול להיות שקובץ ה-Service Attachment יימחק. בודקים את סטטוס החיבור של Private Service Connect. אם הסטטוס הוא CLOSED, צריך ליצור מחדש את כלל ההעברה.
  • אחרי שמוחקים את נקודת הקצה, אי אפשר להשתמש בשם שלה שוב למשך עד 7 ימים.
  • בפרויקט יכולים להיות עד 10 ערכים שונים של projectAllowlist בהגדרות של Private Service Connect.

המאמרים הבאים