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

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

סקירה כללית

הנושאים שמופיעים כאן כוללים:

יצירת אשכול Ray

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

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

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

המסוף

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

  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 ב-Agent Platform.

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

‫Ray ב-Agent Platform SDK

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

בסביבת 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:

none [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) – מגדיל או מקטין את מספר הצמתים מתבצע עדכון כן, בהתאם לגודל בזמן אמת כן לא
המשתמש מוחק את האשכול STOPPING לא לא לא רלוונטי – כבר בתהליך עצירה
האשכול נכנס למצב שגיאה שגיאה לא כן לא רלוונטי – אפשר למחוק
לא רלוונטי 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 ב-Agent Platform יוצר נקודת קצה ציבורית ומאובטחת לפיתוח אינטראקטיבי באמצעות Ray Client באשכולות Ray ב-Gemini Enterprise Agent Platform. השתמשו בקישוריות ציבורית למטרות פיתוח או לתרחישי שימוש זמניים. אפשר לגשת לנקודת הקצה הציבורית הזו דרך האינטרנט. רק משתמשים מורשים שיש להם לפחות הרשאות לתפקיד Agent Platform User בפרויקט המשתמש של אשכול Ray יכולים לגשת לאשכול.

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

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

אם אתם רוצים להשתמש ב-VPC Service Controls ובקישור בין רשתות VPC שכנות (peering) עם אשכולות Ray ב-Agent Platform, תצטרכו לבצע הגדרות נוספות כדי להשתמש במרכז הבקרה של Ray ובמעטפת האינטראקטיבית. כדי להגדיר את המעטפת האינטראקטיבית עם VPC-SC וקישור VPC בין רשתות שכנות (peering) בפרויקט של המשתמש, פועלים לפי ההוראות במאמר מרכז הבקרה של Ray ומעטפת אינטראקטיבית עם VPC-SC וקישור VPC בין רשתות שכנות (peering).

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

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

תעבורת נתונים יוצאת מממשק Private Service Connect ותעבורת נתונים נכנסת לממשק Private Service Connect נתמכות באשכולות Ray ב-Gemini Enterprise Agent Platform.

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

אם מופעל VPC Service Controls, תעבורת הנתונים הנכנסת של ממשק Private Service Connect משמשת כברירת מחדל עם תעבורת הנתונים היוצאת של ממשק Private Service Connect. כדי להתחבר ל-Ray Client או לשלוח משימות מ-Notebook לאשכול עם ממשק Ingress של Private Service Connect, ודאו שה-Notebook נמצא ב-VPC וברשת המשנה של פרויקט המשתמש. פרטים נוספים על הגדרת VPC Service Controls מופיעים במאמר VPC Service Controls עם Gemini Enterprise Agent Platform.

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

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

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

המסוף

  1. בזמן יצירת האשכול, אחרי שמציינים את Name and region ואת Compute settings, מופיעה האפשרות Networking.

    ‫Console: ציון רשת

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

    • צריך להשתמש בשם של NETWORK_ATTACHMENT_NAME שציינתם כשהגדרתם את המשאבים ל-Private Service Connect.
    • כדי ליצור מחבר רשת חדש, לוחצים על הכפתור Create network attachment שמופיע בתפריט הנפתח.

    יצירת רשת חדשה במסוף

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

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

    מחבר רשת

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

‫Ray ב-Agent Platform SDK

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

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 בפרויקט המשתמש.

מערכת קובצי רשת (NFS) של Ray ב-Agent Platform

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

הגדרת VPC

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

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

הגדרת מכונת NFS

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

שימוש במערכת קובצי רשת (NFS)

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

המסוף

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

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

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

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

  3. לוחצים על יצירה. כך נוצר אשכול Ray.

מרכז הבקרה של Ray ומעטפת אינטראקטיבית עם 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: מזהה הפרויקט. אפשר למצוא את המזהים האלה בדף הכניסה למסוף 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 וקישור בין רשתות VPC שכנות (peering) מופעלים.

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

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

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

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

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