הגדלת אשכולות Ray ב-Gemini Enterprise Agent Platform

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

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

התאמה אוטומטית לעומס (Automatic scaling)

כדי להפעיל את התכונה של התאמה אוטומטית לעומס (automatic scaling) של אשכול Ray, צריך לציין את המספר המינימלי של העותקים (min_replica_count) ואת המספר המקסימלי של העותקים (max_replica_count) של מאגר העובדים.

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

  • הגדרת מפרט ההתאמה האוטומטית לעומס של כל מאגרי העובדים.
  • אין תמיכה במהירות מותאמת אישית של הגדלה והקטנה. ערכי ברירת המחדל מפורטים במאמר מהירות הגדלה והקטנה במסמכי Ray.

הגדרת מפרט של התאמה אוטומטית לעומס (autoscaling) של מאגר עובדים

כדי להפעיל את התכונה של התאמה אוטומטית לעומס (autoscaling) באשכול Ray, משתמשים ב Google Cloud מסוף או ב-Agent Platform SDK for Python.

Ray on Agent Platform SDK

from google.cloud import aiplatform
import vertex_ray
from vertex_ray import AutoscalingSpec

autoscaling_spec = AutoscalingSpec(
 min_replica_count=1,
 max_replica_count=3,
)

head_node_type = Resources(
 machine_type="n1-standard-16",
 node_count=1,
)

worker_node_types = [Resources(
 machine_type="n1-standard-16",
 accelerator_type="NVIDIA_TESLA_T4",
 accelerator_count=1,
 autoscaling_spec=autoscaling_spec,
)]

# Create the Ray cluster on Gemini Enterprise Agent Platform
CLUSTER_RESOURCE_NAME = vertex_ray.create_ray_cluster(
head_node_type=head_node_type,
worker_node_types=worker_node_types,
...
)

המסוף

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

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

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

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

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

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

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

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

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

שינוי גודל ידני

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

מגבלות בקישור בין רשתות VPC שכנות (peering)

כשמשנים את גודל האשכולות, אפשר לשנות רק את מספר העותקים המשוכפלים במאגרי העובדים הקיימים. לדוגמה, אי אפשר להוסיף או להסיר מאגרי עובדים מהאשכול או לשנות את סוג המכונה של מאגרי העובדים. בנוסף, מספר הרפליקות של מאגרי העובדים לא יכול להיות נמוך מאחת.

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

שיטות מומלצות להקצאת רשתות משנה

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

לחלופין, מומלץ לפרוס את Ray בפלטפורמת Agent עם ממשק Private Service Connect, שמצמצם את צריכת כתובות ה-IP לרשת משנה /28.

מעקב אחרי גישה לשירותים פרטיים

מומלץ להשתמש בNetwork Analyzer, כלי אבחון ב-Network Intelligence Center של Google Cloud, שמנטר באופן אוטומטי את ההגדרות של רשת הענן הווירטואלי הפרטי (VPC) כדי לזהות הגדרות שגויות והגדרות לא אופטימליות. כלי Network Analyzer פועל באופן רציף, ומריץ בדיקות באופן יזום כדי ליצור תובנות שיעזרו לכם לזהות בעיות ברשת, לאבחן אותן ולפתור אותן לפני שהן משפיעות על זמינות השירות.

ל-Network Analyzer יש אפשרות לעקוב אחרי רשתות משנה שמשמשות לגישה פרטית לשירותים (PSA), והוא מספק תובנות ספציפיות שקשורות אליהן. זו פונקציה חשובה לניהול שירותים כמו Cloud SQL, ‏ Memorystore ו-Agent Platform, שמשתמשים ב-PSA.

הדרך העיקרית שבה Network Analyzer עוקב אחרי רשתות משנה של PSA היא באמצעות תובנות לגבי ניצול כתובות ה-IP בטווחים שהוקצו.

  • ניצול טווח כתובות PSA: Network Analyzer עוקב באופן פעיל אחרי אחוז ההקצאה של כתובות IP בתוך בלוקי ה-CIDR הייעודיים שהקציתם ל-PSA. זה חשוב כי כשיוצרים שירות מנוהל (למשל, Agent Platform), Google יוצרת VPC של בעלים של שירות מנוהל ורשת משנה בתוכו, ומקצה טווח כתובות IP מתוך הבלוק שהוקצה לכם.

  • התראות פרואקטיביות: אם ניצול כתובות ה-IP בטווח שהוקצה ל-PSA חורג מסף מסוים (לדוגמה, 75%), Network Analyzer יוצר תובנה של אזהרה. ההתראה הזו מאפשרת לכם לדעת מראש על בעיות פוטנציאליות בקיבולת, וכך יש לכם זמן להרחיב את טווח כתובות ה-IP שהוקצה לפני שלא יישארו כתובות זמינות למשאבי שירות חדשים.

עדכונים ברשתות המשנה של גישה לשירותים פרטיים

בפריסות של Ray בפלטפורמת Agent, ‏ Google ממליצה להקצות בלוק CIDR של ‎/16 או ‎ /17 לחיבור PSA. כך מתקבל בלוק גדול מספיק של כתובות IP רציפות לתמיכה בהרחבה משמעותית, עם אפשרות להקצות עד 65,536 או 32,768 כתובות IP ייחודיות, בהתאמה. כך אפשר למנוע מיצוי של כתובות IP גם באשכולות גדולים של Ray.

אם מיציתם את מרחב כתובות ה-IP שהוקצה לכם,הפונקציה Google Cloud מחזירה את השגיאה הבאה:

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

מומלץ להרחיב את טווח רשת המשנה הנוכחי או להקצות טווח שיאפשר צמיחה עתידית.

חישוב המספר המקסימלי של צמתים

אם אתם משתמשים בגישה לשירותים פרטיים (VPC Peering) כדי להתחבר לצמתים, אתם יכולים להשתמש בנוסחאות הבאות כדי לוודא שלא חרגתם מהמספר המקסימלי של צמתים (M), בהנחה ש-f(x) = min(29, (32 - ceiling(log2(x))):

  • f(2 * M) = f(2 * N)
  • f(64 * M) = f(64 * N)
  • f(max(32, 16 + M)) = f(max(32, 16 + N))

מספר הצמתים הכולל המקסימלי באשכול Ray ב-Agent Platform שאפשר להגדיל את מספרם (M) תלוי במספר הצמתים הכולל הראשוני שהגדרתם (N). אחרי שיוצרים את אשכול Ray ב-Agent Platform, אפשר לשנות את מספר הצמתים הכולל לכל מספר בין P לבין M כולל, כאשר P הוא מספר המאגרים באשכול.

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

תרשים שמציג את הקשר בין מספר הצמתים הראשוני למספר הצמתים אחרי שינוי הגודל

עדכון מספר העותקים

כדי לעדכן את מספר הרפליקות של מאגר העובדים, אפשר להשתמש ב- Google Cloud console או ב-Agent Platform SDK for Python. אם האשכול כולל כמה מאגרי עובדים, אפשר לשנות את מספר העותקים של כל אחד מהם בנפרד בבקשה אחת.

Ray on Agent Platform SDK

import vertexai
import vertex_ray

vertexai.init()
cluster = vertex_ray.get_ray_cluster("CLUSTER_NAME")

# Get the resource name.
cluster_resource_name = cluster.cluster_resource_name

# Create the new worker pools
new_worker_node_types = []
for worker_node_type in cluster.worker_node_types:
 worker_node_type.node_count = REPLICA_COUNT # new worker pool size
 new_worker_node_types.append(worker_node_type)

# Make update call
updated_cluster_resource_name = vertex_ray.update_ray_cluster(
 cluster_resource_name=cluster_resource_name,
 worker_node_types=new_worker_node_types,
)

המסוף

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

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

  2. ברשימת האשכולות, לוחצים על האשכול שרוצים לשנות.

  3. בדף פרטי האשכול, לוחצים על עריכת האשכול.

  4. בחלונית Edit cluster (עריכת אשכול), בוחרים את מאגר העובדים שרוצים לעדכן ומשנים את מספר העותקים.

  5. לוחצים על עדכון.

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

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