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

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

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

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

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

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

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

הגדרת המפרט להתאמה לעומס (autoscaling) של מאגר ה-workers

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

‫Ray ב-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, מספר המעבדים הלוגיים בצומת הראשי של 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 ובוחרים מיקום לאשכול.
    2. בקטע Compute settings, מציינים את ההגדרות של אשכול Ray בצומת הראשי, כולל סוג המכונה, סוג המאיץ ומספר המאיצים, סוג הדיסק וגודל הדיסק ומספר הרפליקות. אפשר להוסיף URI של קובץ אימג' בהתאמה אישית כדי לציין קובץ אימג' של קונטיינר בהתאמה אישית, ולהוסיף יחסי תלות של Python שלא מסופקים על ידי קובץ האימג' של הקונטיינר שמוגדר כברירת מחדל. תמונה בהתאמה אישית

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

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

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

שינוי קנה מידה ידני

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

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

כשמשנים את קנה המידה של אשכולות, אפשר לשנות רק את מספר הרפליקות במאגרי ה-worker הקיימים. לדוגמה, אי אפשר להוסיף או להסיר מאגרי Worker מהאשכול, או לשנות את סוג המכונה של מאגרי ה-Worker. בנוסף, מספר הרפליקות של מאגרי ה-Workers לא יכול להיות קטן מ-1.

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

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

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

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

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

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

הכלי 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 Platform, ‏ 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 הוא מספר המאגרים באשכול.

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

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

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

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

‫Ray ב-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. בדף Cluster details, לוחצים על Edit cluster.

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

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

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

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