פריסת Model Garden בנקודת קצה של PSC

1. מבוא

אפשר להשתמש ב-Private Service Connect כדי ליצור גישה פרטית ומאובטחת למודלים שנפרסו מ-Vertex AI Model Garden. במקום לחשוף נקודת קצה ציבורית, השיטה הזו מאפשרת לכם לפרוס את המודל לנקודת קצה פרטית של Vertex AI שאפשר לגשת אליה רק בתוך הענן הווירטואלי הפרטי (VPC).

‫Private Service Connect יוצר נקודת קצה עם כתובת IP פנימית בתוך ה-VPC שלכם, שמתחברת ישירות לשירות Vertex AI שמנוהל על ידי Google ומארח את המודל שלכם. כך אפשר לאפליקציות בסביבות ה-VPC והסביבות המקומיות (באמצעות Cloud VPN או Interconnect) לשלוח בקשות להיקשים באמצעות כתובות IP פרטיות. כל תעבורת הרשת נשארת ברשת של Google, מה שמשפר את האבטחה, מקטין את זמן האחזור ומבודד לחלוטין את נקודת הקצה של המודל שלכם מהאינטרנט הציבורי.

4a78228d4197997c.png

מה תפַתחו

במדריך הזה תורידו את Gemma 3 מ-Model Garden, שמתארח ב-Vertex AI Online Inference כנקודת קצה פרטית שאפשר לגשת אליה דרך Private Service Connect. ההגדרה מקצה לקצה תכלול:

  1. מודל Model Garden: תבחרו את Gemma 3 מ-Vertex AI Model Garden ותפרסו אותו לנקודת קצה של Private Service Connect.
  2. ‫Private Service Connect: תגדירו נקודת קצה (endpoint) לצרכן בענן הווירטואלי הפרטי (VPC) שלכם, שתכלול כתובת IP פנימית ברשת שלכם.
  3. חיבור מאובטח ל-Vertex AI: נקודת הקצה של PSC תכוון ל-Service Attachment שנוצר אוטומטית על ידי Vertex AI עבור פריסת המודל הפרטי שלכם. כך נוצר חיבור פרטי, שמבטיח שתעבורת הנתונים בין ה-VPC שלכם לבין נקודת הקצה של פרסום המודל לא תעבור דרך האינטרנט הציבורי.
  4. הגדרת לקוח ב-VPC: תגדירו לקוח (לדוגמה, מכונת VM של Compute Engine) ב-VPC כדי לשלוח בקשות הסקה למודל שנפרס באמצעות כתובת ה-IP הפנימית של נקודת הקצה של PSC.

בסוף התהליך, יהיה לכם מודל לדוגמה של Model Garden שמופעל באופן פרטי ונגיש רק מתוך רשת ה-VPC שציינתם.

מה תלמדו

במדריך הזה נסביר איך פורסים מודל מ-Vertex AI Model Garden ואיך מגדירים גישה מאובטחת אליו מהענן הווירטואלי הפרטי (VPC) באמצעות Private Service Connect ‏ (PSC). השיטה הזו מאפשרת לאפליקציות ב-VPC (הצרכן) להתחבר באופן פרטי לנקודת הקצה של מודל Vertex AI (שירות היצרן) בלי לעבור דרך האינטרנט הציבורי.

במאמר הזה נסביר:

  1. הסבר על PSC ל-Vertex AI: איך PSC מאפשר חיבורים פרטיים ומאובטחים בין צרכנים לבין ספקים. ה-VPC שלכם יכול לגשת למודל Model Garden שנפרס באמצעות כתובות IP פנימיות.
  2. פריסת מודל עם גישה פרטית: איך מגדירים נקודת קצה של Vertex AI למודל Model Garden כדי להשתמש ב-PSC, וכך להפוך אותה לנקודת קצה פרטית.
  3. התפקיד של Service Attachment: כשפורסים מודל לנקודת קצה פרטית של Vertex AI, מערכת Google Cloud יוצרת באופן אוטומטי Service Attachment בפרויקט דייר שמנוהל על ידי Google. השירות המצורף הזה חושף את שירות ההצגה של המודל לרשתות של צרכנים.
  4. יצירת נקודת קצה של PSC ב-VPC:
  • איך מקבלים את ה-URI הייחודי של Service Attachment מפרטי נקודת הקצה של Vertex AI שנפרסה.
  • איך שומרים כתובת IP פנימית ברשת המשנה שבחרתם ב-VPC.
  • איך יוצרים כלל העברה ב-VPC שפועל כנקודת קצה של PSC ומכוון ל-Vertex AI Service Attachment. נקודת הקצה הזו מאפשרת גישה למודל דרך כתובת ה-IP הפנימית השמורה.
  1. יצירת קישוריות פרטית: איך נקודת הקצה של PSC ב-VPC מתחברת ל-Service Attachment, ומגשרת בין הרשת שלכם לבין שירות Vertex AI בצורה מאובטחת.
  2. שליחת בקשות להיקשים באופן פרטי: איך לשלוח בקשות לחיזויים ממשאבים (כמו מכונות וירטואליות של Compute Engine) בתוך ה-VPC לכתובת ה-IP הפנימית של נקודת הקצה של PSC.
  3. אימות: שלבים לבדיקה ולווידוא שאפשר לשלוח בהצלחה בקשות הסקה מ-VPC למודל Model Garden שנפרס דרך החיבור הפרטי.

כך תוכלו לארח מודלים מ-Model Garden שאפשר להגיע אליהם רק מתשתית הרשת הפרטית שלכם.

הדרישות

פרויקט ב-Google Cloud

הרשאות IAM

‫2. לפני שמתחילים

עדכון הפרויקט כדי לתמוך במדריך

במדריך הזה נעשה שימוש ב-$variables כדי לעזור בהטמעה של הגדרות gcloud ב-Cloud Shell.

ב-Cloud Shell, מבצעים את הפעולות הבאות:

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
projectid=[YOUR-PROJECT-ID]
echo $projectid

הפעלת ה-API

ב-Cloud Shell, מבצעים את הפעולות הבאות:

gcloud services enable "compute.googleapis.com"
gcloud services enable "aiplatform.googleapis.com"
gcloud services enable "serviceusage.googleapis.com"

3. פריסת מודל

כדי לפרוס את המודל מ-Model Garden, פועלים לפי השלבים הבאים:

במסוף Google Cloud, עוברים אל Model Garden, מחפשים את Gemma 3 ובוחרים אותו.

10c7ce35cfc571dc.png

לוחצים על 'אפשרויות פריסה' ובוחרים באפשרות Vertex AI.

ed9280fcc5f4c3fa.png

בחלונית Deploy on Vertex AI (פריסה ב-Vertex AI), בוחרים באפשרות Advanced (מתקדם). האזור ומפרט המכונה שמאוכלסים מראש נבחרים על סמך הקיבולת הזמינה. אפשר לשנות את הערכים האלה, אבל ה-codelab מותאם לאזור us-central1.

3f7e4cefdc06488a.png

בחלונית Deploy on Vertex AI (פריסה ב-Vertex AI), מוודאים שגישת נקודת הקצה מוגדרת כ-Private Service Connect ואז בוחרים את הפרויקט.

d0f0d9bc49205fb3.png

משאירים את כל ברירות המחדל של האפשרויות האחרות, בוחרים באפשרות 'פריסה' בתחתית ובודקים את ההתראות כדי לראות את סטטוס הפריסה.

9bd3b10256b7b2cc.png

ב-Model Garden, בוחרים באזור us-central1 שבו זמינים מודל Gemma 3 ונקודת הקצה. פריסת המודל נמשכת כ-5 דקות.

e998ee6288a8a7a.png

תוך 30 דקות, נקודת הקצה תעבור לסטטוס 'פעיל' אחרי שהפעולה תושלם

9dcc7c56dbe0e88a.png

בוחרים את נקודת הקצה ומקבלים את מזהה נקודת הקצה.

6e3e2feef82fadd5.png

פותחים את Cloud Shell ומבצעים את הפעולות הבאות כדי לקבל את ה-URI של קובץ מצורף עם השירות Private Service Connect. המחרוזת הזו של ה-URI משמשת את הלקוח כשהוא פורס נקודת קצה של לקוח PSC.

ב-Cloud Shell, מעדכנים את מזהה נקודת הקצה ומריצים את הפקודה הבאה.

gcloud ai endpoints describe [Endpoint ID] --region=us-central1  | grep -i serviceAttachment:

לדוגמה:

user@cloudshell:$ gcloud ai endpoints describe 2124795225560842240 --region=us-central1 | grep -i serviceAttachment:

Using endpoint [https://us-central1-aiplatform.googleapis.com/]
    serviceAttachment: projects/o9457b320a852208e-tp/regions/us-central1/serviceAttachments/gkedpm-52065579567eaf39bfe24f25f7981d

מעתיקים את התוכן אחרי serviceAttachment למשתנה שנקרא Service_attachment. תצטרכו אותו בהמשך כשתיצרו את חיבור ה-PSC.

user@cloudshell:$ Service_attachment=projects/o9457b320a852208e-tp/regions/us-central1/serviceAttachments/gkedpm-52065579567eaf39bfe24f25f7981d

4. הגדרת צרכן

יצירת רשת VPC של צרכן

ב-Cloud Shell, מבצעים את הפעולות הבאות:

gcloud compute networks create consumer-vpc --project=$projectid --subnet-mode=custom

יצירת רשת משנה של VM לצרכן

ב-Cloud Shell, מבצעים את הפעולות הבאות:

gcloud compute networks subnets create consumer-vm-subnet --project=$projectid --range=192.168.1.0/24 --network=consumer-vpc --region=us-central1 --enable-private-ip-google-access

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

gcloud compute networks subnets create pscendpoint-subnet --project=$projectid --range=10.10.10.0/28 --network=consumer-vpc --region=us-central1

5. הפעלת רכישות מתוך האפליקציה

כדי לאפשר ל-IAP להתחבר למכונות הווירטואליות, צריך ליצור כלל חומת אש ש:

  • רלוונטי לכל מכונות ה-VM שרוצים לגשת אליהן באמצעות IAP.
  • מאפשר תעבורת נתונים נכנסת (ingress) מטווח כתובות ה-IP‏ ‎35.235.240.0/20. הטווח הזה מכיל את כל כתובות ה-IP שמשמשות את IAP להעברת TCP.

ב-Cloud Shell, יוצרים את הכלל בחומת האש של IAP.

gcloud compute firewall-rules create ssh-iap-consumer \
    --network consumer-vpc \
    --allow tcp:22 \
    --source-ranges=35.235.240.0/20

6. יצירת מכונות וירטואליות לצרכנים

ב-Cloud Shell, יוצרים את מופע המכונה הווירטואלית של הצרכן, consumer-vm.

gcloud compute instances create consumer-vm \
    --project=$projectid \
    --machine-type=e2-micro \
    --image-family debian-11 \
    --no-address \
    --shielded-secure-boot \
    --image-project debian-cloud \
    --zone us-central1-a \
    --subnet=consumer-vm-subnet 

7. נקודות קצה של Private Service Connect

הלקוח יוצר נקודת קצה ללקוח (כלל העברה) עם כתובת IP פנימית ב-VPC שלו. נקודת הקצה הזו של PSC מכוונת לחיבור השירות של הבעלים של השירות המנוהל. לקוחות ב-VPC של הצרכן או ברשת ההיברידית יכולים לשלוח תעבורת נתונים לכתובת ה-IP הפנימית הזו כדי להגיע לשירות של הספק.

שומרים כתובת IP לנקודת הקצה של הצרכן.

ב-Cloud Shell, יוצרים את כלל ההעברה.

gcloud compute addresses create psc-address \
    --project=$projectid \
    --region=us-central1 \
    --subnet=pscendpoint-subnet \
    --addresses=10.10.10.6

אימות כתובת ה-IP שהוזמנה

ב-Cloud Shell, מציגים את רשימת כתובות ה-IP השמורות.

gcloud compute addresses list 

כתובת ה-IP‏ 10.10.10.6 אמורה להיות שמורה.

edb5661bea25cd14.png

יוצרים את נקודת הקצה של הצרכן על ידי ציון ה-URI של קובץ השירות המצורף, target-service-attachment, ששמרתם בשלב הקודם, בקטע 'פריסת המודל'.

ב-Cloud Shell, מתארים את קובץ הרשת המצורף.

 gcloud compute forwarding-rules create psc-consumer-ep \
    --network=consumer-vpc \
    --address=psc-address \
    --region=us-central1 \
    --target-service-attachment=$Service_attachment \
    --project=$projectid

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

gcloud compute forwarding-rules describe psc-consumer-ep \
    --project=$projectid \
    --region=us-central1 \

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

6c66347ede9d4c7d.png

8. בדיקה מ-VM של צרכן

ב-Cloud Shell, מבצעים את השלבים הבאים כדי לספק למכונה הווירטואלית של הצרכן גישה ל-Vertex Model Garden API

חיבור באמצעות SSH למכונה הווירטואלית של הצרכן

f0984d9e60530cb2.png

צריך לבצע אימות מחדש באמצעות Application Default Credentials ולציין היקפי הרשאות של Vertex AI.

gcloud auth application-default login
--scopes=https://www.googleapis.com/auth/cloud-platform 

אפשר להשתמש בטבלה הבאה כדי ליצור פקודת CURL, ולבצע התאמות לפי הסביבה שלכם

מאפיין

ערך

פרוטוקול

HTTP

מיקום

us-central1

נקודת קצה של חיזוי אונליין

2133539641536544768

מזהה פרויקט

test4-473419

דגם

gemma-3-12b-it

כתובת IP של נקודת קצה מסוג Private Service Connect

10.10.10.6

הודעות

‪[{"role": "user","content": "What weighs more 1 pound of feathers or rocks?"}]

מעדכנים ומריצים את פקודת ה-curl על סמך פרטי הסביבות:

curl -k -v -X POST   -H "Authorization: Bearer $(gcloud auth application-default print-access-token)"   -H "Content-Type: application/json"   http://[PSC-IP]/v1/projects/[Project-ID]/locations/us-central1/endpoints/[Predictions Endpoint]/chat/completions   -d '{"model": "google/gemma-3-12b-it", "messages": [{"role": "user","content": "What weighs more 1 pound of feathers or rocks?"}] }'

דוגמה:

curl -k -v -X POST   -H "Authorization: Bearer $(gcloud auth application-default print-access-token)"   -H "Content-Type: application/json"   http://10.10.10.6/v1/projects/test4-473419/locations/us-central1/endpoints/2133539641536544768/chat/completions   -d '{"model": "google/gemma-3-12b-it", "messages": [{"role": "user","content": "What weighs more 1 pound of feathers or rocks?"}] }'

התוצאה הסופית – הצלחה!!!

בסוף הפלט אמורה להופיע התחזית של Gemma 3. זה אומר שהצלחתם לגשת לנקודת קצה ל-API באופן פרטי דרך נקודת הקצה של PSC.

 Connection #0 to host 10.10.10.6 left intact
{"id":"chatcmpl-9e941821-65b3-44e4-876c-37d81baf62e0","object":"chat.completion","created":1759009221,"model":"google/gemma-3-12b-it","choices":[{"index":0,"message":{"role":"assistant","reasoning_content":null,"content":"This is a classic trick question! They weigh the same. One pound is one pound, regardless of the material. 😊\n\n\n\n","tool_calls":[]},"logprobs":null,"finish_reason":"stop","stop_reason":106}],"usage":{"prompt_tokens":20,"total_tokens":46,"completion_tokens":26,"prompt_tokens_details":null},"prompt_logprobs":null

9. הסרת המשאבים

ב-Cloud Shell, מוחקים את רכיבי ההדרכה.

gcloud ai endpoints undeploy-model ENDPOINT_ID --deployed-model-id=DEPLOYED_MODEL_ID --region=us-central1 --quiet

gcloud ai endpoints delete $ENDPOINT_ID --project=$projectid --region=us-central1 --quiet

gcloud ai models delete $MODEL_ID --project=$projectid --region=us-central1 --quiet

gcloud compute instances delete consumer-vm --zone=us-central1-a --quiet

gcloud compute forwarding-rules delete psc-consumer-ep --region=us-central1 --project=$projectid --quiet

gcloud compute addresses delete psc-address --region=us-central1 --project=$projectid --quiet

gcloud compute networks subnets delete pscendpoint-subnet consumer-vm-subnet --region=us-central1 --quiet

gcloud compute firewall-rules delete ssh-iap-consumer --project=$projectid

gcloud compute networks delete consumer-vpc --project=$projectid --quiet

gcloud projects delete $projectid --quiet

10. מזל טוב

הגדרתם ואימתתם בהצלחה גישה פרטית ל-Gemma 3 API שמתארח ב-Vertex AI Prediction באמצעות נקודת קצה של Private Service Connect.

יצרתם את התשתית של הצרכן, כולל שמירת כתובת IP פנימית והגדרת נקודת קצה של Private Service Connect (כלל העברה) בתוך ה-VPC. נקודת הקצה הזו מתחברת בצורה מאובטחת לשירות Vertex AI על ידי טירגוט של קובץ השירות שמשויך למודל Gemma 3 שפרסתם. ההגדרה הזו מאפשרת לאפליקציות ב-VPC או ברשתות המחוברות לו ליצור אינטראקציה עם Gemma 3 API באופן פרטי ומאובטח, באמצעות כתובת IP פנימית, בלי שתעבורת הנתונים תעבור דרך האינטרנט הציבורי.

קריאה נוספת וסרטונים

מאמרי עזרה