יצירת אשכול Ray ב-Gemini Enterprise Agent Platform

במאמר הזה מפורטות הוראות להגדרת אשכול Ray ב-Gemini Enterprise Agent Platform כדי לתת מענה לצרכים שונים. לדוגמה, כדי ליצור תמונה, אפשר לעיין במאמר בנושא תמונה בהתאמה אישית. חלק מהארגונים יכולים להשתמש ברשתות פרטיות. במאמר הזה נסביר על ממשק Private Service Connect ל-Ray ב-Vertex AI. מקרה שימוש נוסף הוא גישה לקבצים מרוחקים כאילו הם מקומיים (ראו Ray on Agent Platform Network File System).

סקירה כללית

הנושאים שמוסברים כאן כוללים:

יצירת אשכול Ray

אפשר להשתמש במסוף או ב-Agent Platform SDK for Python כדי ליצור אשכול Ray. Google Cloud אפשר להוסיף לכל אשכול עד 2,000 צמתים. בכל מאגר עובדים יש מגבלה עליונה של 1,000 צמתים. אין הגבלה על מספר מאגרי העובדים, אבל מספר גדול של מאגרי עובדים, למשל 1,000 מאגרי עובדים עם צומת אחד בכל אחד מהם, עלול לפגוע בביצועים של האשכול.

לפני שמתחילים, כדאי לקרוא את סקירת הפלטפורמה של סוכני Gemini Enterprise Agent Platform עם Ray ולהגדיר את כל הכלים הנדרשים.

יכול להיות שיחלפו 10-20 דקות מרגע יצירת אשכול Ray ב-Agent Platform ועד שהוא יופעל.

המסוף

בהתאם להמלצה של השיטה המומלצת ל-OSS Ray, הגדרת מספר המעבדים הלוגיים ל-0 בצומת הראשי של Ray נאכפת כדי למנוע הפעלה של עומס עבודה בצומת הראשי.

  1. נכנסים לדף Ray on Agent Platform במסוף Google Cloud .

    כניסה לדף Ray on Agent Platform

  2. לוחצים על Create Cluster (יצירת אשכול) כדי לפתוח את החלונית Create Cluster (יצירת אשכול).

  3. בכל שלב בחלונית Create Cluster (יצירת אשכול), בודקים את פרטי האשכול שמוגדרים כברירת מחדל או מחליפים אותם. לוחצים על Continue (המשך) כדי להשלים כל שלב:

    1. בשדה Name and region (שם ואזור), מציינים Name (שם) ובוחרים Location (מיקום) לאשכול.

    2. בקטע Compute settings (הגדרות מחשוב), מציינים את ההגדרה של אשכול Ray בצומת הראשי של Gemini Enterprise Agent Platform, כולל סוג המכונה, סוג המאיץ ומספר המאיצים, סוג הדיסק והגודל שלו ומספר העותקים. אפשר גם להוסיף URI של אימג' מותאם אישית כדי לציין אימג' מותאם אישית של קונטיינר, ולהוסיף תלות ב-Python שלא מסופקת על ידי אימג' ברירת המחדל של הקונטיינר. איך משתמשים בתמונה מותאמת אישית

      בקטע אפשרויות מתקדמות, אפשר:

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

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

Ray on Agent Platform SDK

בהתאם להמלצה של השיטה המומלצת ל-OSS Ray, הגדרת מספר המעבדים הלוגיים ל-0 בצומת הראשי של Ray נאכפת כדי למנוע הפעלה של עומס עבודה בצומת הראשי.

בסביבת Python אינטראקטיבית, משתמשים בפקודה הבאה כדי ליצור את אשכול Ray ב-Gemini Enterprise Agent Platform:

import ray
import vertex_ray
from google.cloud import aiplatform
from vertex_ray import Resources
from vertex_ray.util.resources import NfsMount

# Define a default CPU cluster, machine_type is n1-standard-16, 1 head node and 1 worker node
head_node_type = Resources()
worker_node_types = [Resources()]

# Or define a GPU cluster.
head_node_type = Resources(
  machine_type="n1-standard-16",
  node_count=1,
  custom_image="us-docker.pkg.dev/my-project/ray-custom.2-9.py310:latest",  # Optional. When not specified, a prebuilt image is used.
)

worker_node_types = [Resources(
  machine_type="n1-standard-16",
  node_count=2,  # Must be >= 1
  accelerator_type="NVIDIA_TESLA_T4",
  accelerator_count=1,
  custom_image="us-docker.pkg.dev/my-project/ray-custom.2-9.py310:latest",  # When not specified, a prebuilt image is used.
)]
# Optional. Create cluster with Network File System (NFS) setup.
nfs_mount = NfsMount(
    server="10.10.10.10",
    path="nfs_path",
    mount_point="nfs_mount_point",
)
aiplatform.init()
# Initialize Agent Platform to retrieve projects for downstream operations.
# Create the Ray cluster on Agent Platform
CLUSTER_RESOURCE_NAME = vertex_ray.create_ray_cluster(
  head_node_type=head_node_type,
  network=NETWORK, #Optional
  worker_node_types=worker_node_types,
  python_version="3.10",  # Optional
  ray_version="2.47",  # Optional
  cluster_name=CLUSTER_NAME, # Optional
  service_account=SERVICE_ACCOUNT,  # Optional
  enable_metrics_collection=True,  # Optional. Enable metrics collection for monitoring.
  labels=LABELS,  # Optional.
  nfs_mounts=[nfs_mount],  # Optional.

)

כאשר:

  • CLUSTER_NAME: שם לאשכול Ray ב-Gemini Enterprise Agent Platform. השם צריך להיות ייחודי בפרויקט.

  • NETWORK: (אופציונלי) השם המלא של רשת ה-VPC, בפורמט projects/PROJECT_ID/global/networks/VPC_NAME. כדי להגדיר נקודת קצה פרטית במקום נקודת קצה ציבורית לאשכול, צריך לציין רשת VPC לשימוש עם Ray ב-Agent Platform. מידע נוסף זמין במאמר בנושא קישוריות פרטית וציבורית.

  • VPC_NAME: אופציונלי: ה-VPC שבו המכונה הווירטואלית פועלת.

  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud . מזהה הפרויקט מופיע בדף welcome במסוף Google Cloud .

  • SERVICE_ACCOUNT: אופציונלי: חשבון השירות להרצת אפליקציות Ray באשכול. הקצאת התפקידים הנדרשים.

  • LABELS: (אופציונלי) התוויות עם מטא-נתונים שהוגדרו על ידי המשתמש, שמשמשים לארגון של אשכולות Ray. המפתחות והערכים של התוויות יכולים להכיל עד 64 תווים (נקודות קוד של Unicode), שמורכבים רק מאותיות קטנות, ספרות, קווים תחתונים ומקפים. אפשר להשתמש בתווים בינלאומיים. מידע נוסף ודוגמאות לתוויות זמינים בכתובת https://goo.gl/xmQnxf.

אמור להופיע הפלט הבא עד שהסטטוס ישתנה ל-RUNNING:

[Ray on Agent Platform]: Cluster State = State.PROVISIONING
Waiting for cluster provisioning; attempt 1; sleeping for 0:02:30 seconds
...
[Ray on Agent Platform]: Cluster State = State.RUNNING

שימו לב לנקודות הבאות:

  • הצומת הראשון הוא צומת הראש.

  • אין תמיכה בסוגי מכונות TPU.

ניהול מחזור חיים

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

פעולה מדינה החיוב בוצע? האם יש אפשרות למחוק פעולה? האם אפשר לבטל את הפעולה?
המשתמש יוצר אשכול הקצאת הרשאות לא לא לא
המשתמש מגדיל או מקטין את התצוגה באופן ידני מתבצע עדכון כן, בהתאם לגודל בזמן אמת כן לא
האשכול פועל הבדיקה מתבצעת כן כן לא רלוונטי – אפשר למחוק
התאמה אוטומטית לעומס (autoscaling) של האשכול מתבצע עדכון כן, בהתאם לגודל בזמן אמת כן לא
המשתמש מחק את האשכול הפסקה לא לא לא רלוונטי – כבר מתבצעת עצירה
האשכול עובר למצב שגיאה שגיאה לא כן לא רלוונטי – אפשר למחוק
לא רלוונטי STATE_UNSPECIFIED לא כן לא רלוונטי

תמונה בהתאמה אישית (אופציונלי)

תמונות מוכנות מראש מתאימות לרוב תרחישי השימוש. אם רוצים ליצור תמונה, אפשר להשתמש בתמונות המוכנות מראש של Ray ב-Gemini Enterprise Agent Platform כתמונת בסיס. במסמכי התיעוד של Docker מוסבר איך ליצור קובצי אימג' מקובץ אימג' בסיסי.

תמונות הבסיס האלה כוללות התקנה של Python,‏ Ubuntu ו-Ray. הם כוללים גם יחסי תלות כמו:

  • python-json-logger
  • google-cloud-resource-manager
  • ca-certificates-java
  • libatlas-base-dev
  • liblapack-dev
  • g++, libio-all-perl
  • libyaml-0-2.

קישוריות פרטית וציבורית

כברירת מחדל, Ray on Agent Platform יוצר נקודת קצה ציבורית ומאובטחת לפיתוח אינטראקטיבי עם Ray Client באשכולות Ray ב-Gemini Enterprise Agent Platform. מומלץ להשתמש בקישוריות ציבורית לפיתוח או לתרחישי שימוש זמניים. נקודת הקצה הציבורית הזו נגישה דרך האינטרנט. רק משתמשים מורשים שיש להם לפחות הרשאות של תפקיד משתמש בפלטפורמת הסוכנים של Gemini Enterprise בפרויקט המשתמש של אשכול Ray יכולים לגשת לאשכול.

אם אתם צריכים חיבור פרטי לאשכול או אם אתם משתמשים ב-VPC Service Controls, ‏ VPC peering נתמך באשכולות Ray ב-Gemini Enterprise Agent Platform. אפשר לגשת לאשכולות עם נקודת קצה פרטית רק מלקוח ברשת VPC שמקושרת ל-Gemini Enterprise Agent Platform.

כדי להגדיר קישוריות פרטית באמצעות קישור בין רשתות VPC שכנות ל-Ray on Agent Platform, בוחרים רשת VPC כשיוצרים את האשכול. רשת ה-VPC דורשת חיבור לשירותים פרטיים בין רשת ה-VPC לבין Gemini Enterprise Agent Platform. אם אתם משתמשים ב-Ray ב-Agent Platform במסוף, אתם יכולים להגדיר את החיבור לגישה לשירותים פרטיים כשאתם יוצרים את האשכול.

אם אתם רוצים להשתמש ב-VPC Service Controls ובקישור בין רשתות VPC שכנות (peering) עם אשכולות Ray ב-Agent Platform, תצטרכו לבצע הגדרה נוספת כדי להשתמש בלוח הבקרה של Ray ובמעטפת האינטראקטיבית. פועלים לפי ההוראות במאמר Ray Dashboard and Interactive Shell with VPC-SC + VPC Peering כדי להגדיר את מעטפת הפקודות האינטראקטיבית עם VPC-SC ו-VPC Peering בפרויקט המשתמש.

אחרי שיוצרים את אשכול Ray ב-Gemini Enterprise Agent Platform, אפשר להתחבר לצומת הראשי באמצעות Agent Platform SDK for Python. סביבת החיבור, כמו מכונה וירטואלית ב-Compute Engine או מופע של Vertex AI Workbench, צריכה להיות ברשת VPC שמוגדרת כרשת עמיתה ל-Gemini Enterprise Agent Platform. חשוב לזכור שלחיבור שירותים פרטיים יש מספר מוגבל של כתובות IP, מה שעלול לגרום למיצוי של כתובות ה-IP. לכן, מומלץ להשתמש בחיבורים פרטיים עבור אשכולות שפועלים לאורך זמן.

ממשק Private Service Connect ל-Ray ב-Gemini Enterprise Agent Platform

יציאה (egress) של ממשק Private Service Connect וכניסה (ingress) של ממשק Private Service Connect נתמכות באשכולות Ray בפלטפורמת הסוכנים של Gemini Enterprise.

כדי להשתמש ביציאה מממשק Private Service Connect, פועלים לפי ההוראות שבקטע הבא. אם VPC Service Controls לא מופעל, אשכולות עם תעבורת נתונים יוצאת (egress) של ממשק Private Service Connect משתמשים בנקודת הקצה הציבורית המאובטחת לתעבורת נתונים נכנסת (ingress) עם Ray Client.

אם VPC Service Controls מופעל, תעבורת נתונים נכנסת (ingress) של ממשק Private Service Connect משמשת כברירת מחדל עם תעבורת נתונים יוצאת (egress) של ממשק Private Service Connect. כדי להתחבר באמצעות Ray Client או לשלוח משימות ממחברת לאשכול עם כניסה לממשק Private Service Connect, צריך לוודא שהמחברת נמצאת ב-VPC ובתת-רשת של פרויקט המשתמש. לפרטים נוספים על הגדרת VPC Service Controls, אפשר לעיין במאמר VPC Service Controls עם פלטפורמת הסוכנים של Gemini Enterprise.

תרשים של הפעלת ממשק Private Service Connect

הפעלת ממשק Private Service Connect

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

המסוף

  1. במהלך יצירת האשכול ואחרי שמציינים את השם והאזור ואת הגדרות המחשוב, מופיעה האפשרות Networking (רשת).

    ציון רשת במסוף

  2. מגדירים רכיב Network Attachment באחת מהדרכים הבאות:

    • משתמשים בשם NETWORK_ATTACHMENT_NAME שציינתם כשמגדירים את המשאבים שלכם ל-Private Service Connect.
    • כדי ליצור קובץ מצורף חדש לרשת, לוחצים על הלחצן יצירת קובץ מצורף לרשת שמופיע בתפריט הנפתח.

    Console create new network

  3. לוחצים על יצירת קובץ מצורף לרשת.

  4. במשימת המשנה שמופיעה, מציינים שם, רשת ותת-רשת לחיבור הרשת החדש.

    חיבור לרשת

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

Ray on Agent Platform SDK

‫Ray on Agent Platform SDK הוא חלק מ-Agent Platform SDK ל-Python. כדי ללמוד איך להתקין או לעדכן את Agent Platform SDK ל-Python, אפשר לעיין במאמר התקנת Agent Platform SDK ל-Python. מידע נוסף מופיע במאמרי העזרה של Agent Platform SDK for Python API.

from google.cloud import aiplatform
import vertex_ray

# Initialization
aiplatform.init()

# Create a default cluster with network attachment configuration

psc_config = vertex_ray.PscIConfig(network_attachment=NETWORK_ATTACHMENT_NAME)
cluster_resource_name = vertex_ray.create_ray_cluster(
   psc_interface_config=psc_config,
)

כאשר:

  • NETWORK_ATTACHMENT_NAME: השם שציינתם כשקבעתם את המשאבים שלכם ל-Private Service Connect בפרויקט המשתמש.

‫Ray on Agent Platform Network File System ‏ (NFS)

כדי להפוך קבצים מרוחקים לזמינים באשכול, צריך לטעון שיתופי Network File System ‏ (NFS). לאחר מכן, העבודות שלכם יכולות לגשת לקבצים מרוחקים כאילו הם מקומיים, מה שמאפשר תפוקה גבוהה וחביון נמוך.

הגדרת VPC

יש שתי אפשרויות להגדרת VPC:

  1. יוצרים קובץ מצורף עם הרשת של ממשק Private Service Connect. (מומלץ)
  2. הגדרת קישור בין רשתות VPC שכנות (peering)

הגדרת מופע NFS

פרטים נוספים על יצירת אירוע Filestore זמינים במאמר יצירת אירוע. אם משתמשים בשיטת הממשק Private Service Connect, לא צריך לבחור מצב של גישה לשירות פרטי כשיוצרים את Filestore.

שימוש ב-Network File System ‏ (NFS)

כדי להשתמש במערכת קבצים ברשת, צריך לציין רשת או רשת מצורפת (מומלץ).

המסוף

  1. בשלב Networking (רשת) של יצירת הדף, אחרי שמציינים רשת או קובץ מצורף לרשת. כדי לעשות זאת, לוחצים על Add NFS mount (הוספת שיתוף NFS) בקטע Network File System (NFS) (מערכת קבצים ברשת (NFS)) ומציינים שיתוף NFS (שרת, נתיב ונקודת טעינה).

    שדה תיאור
    server כתובת ה-IP של שרת ה-NFS. הכתובת צריכה להיות כתובת פרטית ב-VPC.
    path נתיב השיתוף של NFS. הנתיב חייב להיות מוחלט ולהתחיל ב-/.
    mountPoint נקודת הטעינה המקומית. זה חייב להיות שם ספריה חוקי ב-UNIX. לדוגמה, אם נקודת הטעינה המקומית היא sourceData, צריך לציין את הנתיב /mnt/nfs/ sourceData ממופע ה-VM של האימון.

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

  2. מציינים שרת, נתיב ונקודת טעינה. מערכת קבצים של NFS

  3. לוחצים על יצירה. הפעולה הזו יוצרת את אשכול Ray.

לוח הבקרה של Ray ו-Interactive Shell עם VPC-SC + קישור בין רשתות VPC שכנות (peering)

  1. מגדירים את peered-dns-domains.

    {
      VPC_NAME=NETWORK_NAME
      REGION=LOCATION
      gcloud services peered-dns-domains create training-cloud \
      --network=$VPC_NAME \
      --dns-suffix=$REGION.aiplatform-training.cloud.google.com.
    
      # Verify
      gcloud beta services peered-dns-domains list --network $VPC_NAME;
    }
        
    • NETWORK_NAME: מעבר לרשת עם שירותי עמיתים.

    • LOCATION: המיקום הרצוי (לדוגמה, us-central1).

  2. מגדירים את DNS managed zone.

    {
      PROJECT_ID=PROJECT_ID
      ZONE_NAME=$PROJECT_ID-aiplatform-training-cloud-google-com
      DNS_NAME=aiplatform-training.cloud.google.com
      DESCRIPTION=aiplatform-training.cloud.google.com
    
      gcloud dns managed-zones create $ZONE_NAME  \
      --visibility=private  \
      --networks=https://www.googleapis.com/compute/v1/projects/$PROJECT_ID/global/networks/$VPC_NAME  \
      --dns-name=$DNS_NAME  \
      --description="Training $DESCRIPTION"
    }
        
    • PROJECT_ID: מזהה הפרויקט. אפשר למצוא את המזהים האלה בדף welcome במסוף Google Cloud .

  3. תיעוד של עסקת DNS.

    {
      gcloud dns record-sets transaction start --zone=$ZONE_NAME
    
      gcloud dns record-sets transaction add \
      --name=$DNS_NAME. \
      --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \
      --zone=$ZONE_NAME \
      --ttl=300
    
      gcloud dns record-sets transaction add \
      --name=*.$DNS_NAME. \
      --type=CNAME $DNS_NAME. \
      --zone=$ZONE_NAME \
      --ttl=300
    
      gcloud dns record-sets transaction execute --zone=$ZONE_NAME
    }
        
  4. שליחת משימת אימון עם מעטפת אינטראקטיבית + VPC-SC + קישור בין רשתות שכנות (peering) של VPC מופעלים.

אחריות משותפת

אבטחת עומסי העבודה ב-Gemini Enterprise Agent Platform היא אחריות משותפת. ‫Gemini Enterprise Agent Platform משדרגת באופן קבוע את תצורות התשתית כדי לטפל בנקודות חולשה באבטחה, אבל היא לא משדרגת אוטומטית את האשכולות הקיימים של Ray ב-Vertex AI ואת המשאבים הקבועים כדי למנוע שיבוש של עומסי עבודה פעילים. לכן, אתם אחראים למשימות כמו:

  1. כדי להשתמש בגרסאות התשתית העדכניות ביותר, כדאי למחוק מדי פעם את האשכולות ואת המשאבים הקבועים של Ray ב-Vertex AI וליצור אותם מחדש. ‫Gemini Enterprise Agent Platform ממליץ ליצור מחדש את האשכולות והמשאבים הקבועים לפחות אחת ל-30 יום.
  2. הגדרת תמונות בהתאמה אישית בצורה נכונה.

מידע נוסף זמין במאמר בנושא אחריות משותפת.

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