יצירת משאב מתמשך

כשיוצרים משאב מתמשך, שירות ההדרכה קודם מוצא משאבים ממאגר המשאבים של Compute Engine על סמך המפרט שסיפקתם, ואז מקצה לכם אשכול לטווח ארוך. בדף הזה מוסבר איך ליצור משאב קבוע להרצת משימות אימון בלי שרתים באמצעות מסוף Google Cloud‏, Google Cloud CLI ו-API בארכיטקטורת REST. Google Cloud

התפקידים הנדרשים

כדי לקבל את ההרשאה שנדרשת ליצירת משאב קבוע, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM‏ Vertex AI Administrator ‏ (roles/aiplatform.admin) בפרויקט. להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

התפקיד המוגדר מראש הזה מכיל את ההרשאה aiplatform.persistentResources.create, שנדרשת כדי ליצור משאב קבוע.

יכול להיות שתוכלו לקבל את ההרשאה הזו גם בתפקידים בהתאמה אישית או בתפקידים אחרים שמוגדרים מראש.

יצירת משאב מתמשך

כדי לקבל הוראות ליצירת משאב מתמשך, צריך לבחור באחת מהכרטיסיות הבאות.

המסוף

כדי ליצור משאב קבוע באמצעות המסוף Google Cloud :

  1. נכנסים לדף Persistent resources במסוף Google Cloud .

    כניסה לדף Persistent resources

  2. לוחצים על יצירת אשכול.

  3. מגדירים את האשכול באופן הבא:

    • שם: מזינים שם לאשכול.
    • תיאור: (אופציונלי) מזינים תיאור של האשכול.
    • Region: בוחרים את האזור שבו רוצים ליצור את האשכול.
  4. לוחצים על Continue.

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

    1. לוחצים על Worker pool 1 (מאגר עובדים 1).
    2. בוחרים את הכרטיסייה של משפחת המכונות שרוצים להשתמש בה ומגדירים את מאגר העובדים באופן הבא:

      לשימוש כללי

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

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

      מותאם לצריכת מעבד גבוהה (compute-optimized)

      מכונות וירטואליות שמותאמות לצריכת מעבד גבוהה (compute-optimized) מציעות את הביצועים הכי גבוהים לכל ליבה, והן מותאמות לעומסי עבודה שדורשים הרבה משאבי מחשוב.

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

      מותאמת לצריכת זיכרון גבוהה (memory-optimized)

      מכונות וירטואליות מותאמות לצריכת זיכרון גבוהה (memory-optimized) הן אידיאליות לעומסי עבודה שדורשים הרבה זיכרון. הן מציעות יותר זיכרון לכל ליבה בהשוואה למשפחות אחרות של מכונות, עם זיכרון של עד 12TB.

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

      יחידות GPU

      המכונות הווירטואליות האלה שעברו אופטימיזציה לשימוש במאיצים מתאימות במיוחד לעומסי עבודה של מחשוב מקבילי מאסיבי של Compute Unified Device Architecture ‏ (CUDA), כמו למידת מכונה (ML) ומחשוב עתיר ביצועים (HPC). הסדרה הזו היא האפשרות הכי טובה לעומסי עבודה שדורשים מעבדי GPU.

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

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

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

gcloud

למשאב קבוע יכולים להיות מאגר משאבים אחד או יותר. כדי ליצור כמה מאגרי משאבים במשאב קבוע, מציינים כמה דגלים של --resource-pool-spec.

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

אפשר לציין את כל ההגדרות של מאגר המשאבים כחלק משורת הפקודה, או להשתמש בדגל --config כדי לציין את הנתיב לקובץ YAML שמכיל את ההגדרות.

לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט של Google Cloud הפרויקט שבו רוצים ליצור את המשאב הקבוע.
  • LOCATION: האזור שבו רוצים ליצור את המשאב הקבוע. רשימה של האזורים הנתמכים מופיעה במאמר בנושא זמינות התכונות.
  • PERSISTENT_RESOURCE_ID: המזהה של המשאב המתמשך.
  • DISPLAY_NAME: (אופציונלי) השם המוצג של המשאב הקבוע.
  • MACHINE_TYPE: סוג המכונה הווירטואלית שבה רוצים להשתמש. רשימה של מכונות וירטואליות נתמכות זמינה במאמר סוגי מכונות. השדה הזה תואם לשדה machineSpec.machineType בהודעת ResourcePool API.
  • ACCELERATOR_TYPE: (אופציונלי) סוג ה-GPU לצירוף לכל מכונת VM במאגר המשאבים. רשימת מעבדי ה-GPU הנתמכים מופיעה כאן. השדה הזה תואם לשדה machineSpec.acceleratorType בהודעת ResourcePool API.
  • ACCELERATOR_COUNT: (אופציונלי) מספר יחידות ה-GPU לצירוף לכל מכונת VM במאגר המשאבים. ערך ברירת המחדל הוא 1. השדה הזה תואם לשדה machineSpec.acceleratorCount בהודעת ResourcePool API.
  • REPLICA_COUNT: מספר העותקים שייווצרו כשיוצרים את מאגר המשאבים הזה. השדה הזה תואם לשדה replicaCount בהודעת ResourcePool API. חובה למלא את השדה הזה אם לא מציינים את MIN_REPLICA_COUNT ואת MAX_REPLICA_COUNT.
  • MIN_REPLICA_COUNT: (אופציונלי) המספר המינימלי של רפליקות שהתאמה אוטומטית לעומס יכולה לצמצם במאגר המשאבים הזה. כדי להפעיל את ההתאמה האוטומטית לעומס במאגר המשאבים הזה, צריך להגדיר את שני המאפיינים: MIN_REPLICA_COUNT ו-MAX_REPLICA_COUNT.
  • MAX_REPLICA_COUNT: (אופציונלי) המספר המקסימלי של רפליקות שהתאמה אוטומטית לעומס יכולה להגדיל עבור מאגר המשאבים הזה. כדי להפעיל את ההתאמה האוטומטית לעומס במאגר המשאבים הזה, צריך להגדיר את שני המאפיינים: MIN_REPLICA_COUNT ו-MAX_REPLICA_COUNT.
  • BOOT_DISK_TYPE: (אופציונלי) סוג הדיסק שבו רוצים להשתמש כדיסק האתחול של כל מכונה וירטואלית במאגר המשאבים. השדה הזה תואם לשדה diskSpec.bootDiskType בהודעת ResourcePool API. הערכים הקבילים כוללים את האפשרויות הבאות:
    • pd-standard (ברירת מחדל)
    • pd-ssd
  • BOOT_DISK_SIZE_GB: (אופציונלי) גודל הדיסק ב-GiB של דיסק האתחול של כל מכונה וירטואלית במאגר המשאבים. הערכים הקבילים הם 100 (ברירת מחדל) עד 64000. השדה הזה תואם לשדה diskSpec.bootDiskSizeGb בהודעת ResourcePool API.
  • CONFIG: הנתיב לקובץ התצורה של משאב ה-YAML הקבוע. הקובץ הזה צריך להכיל רשימה של ResourcePool. אם אפשרות מסוימת מצוינת גם בקובץ התצורה וגם בארגומנטים של שורת הפקודה, הארגומנטים של שורת הפקודה מבטלים את קובץ התצורה. חשוב לדעת: מפתחות עם קווים תחתונים הם לא תקינים.

    קובץ תצורה לדוגמה ב-YAML:

    resourcePoolSpecs:
      machineSpec:
        machineType: n1-standard-4
      replicaCount: 1
        

מריצים את הפקודה הבאה:

‫Linux,‏ macOS או Cloud Shell

gcloud ai persistent-resources create \
    --persistent-resource-id=PERSISTENT_RESOURCE_ID \
    --display-name=DISPLAY_NAME \
    --project=PROJECT_ID \
    --region=LOCATION \
    --resource-pool-spec="replica-count=REPLICA_COUNT,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT,machine-type=MACHINE_TYPE,accelerator-type=ACCELERATOR_TYPE,accelerator-count=ACCELERATOR_COUNT,disk-type=BOOT_DISK_TYPE,disk-size=BOOT_DISK_SIZE_GB"

‏Windows (PowerShell)

gcloud ai persistent-resources create `
    --persistent-resource-id=PERSISTENT_RESOURCE_ID `
    --display-name=DISPLAY_NAME `
    --project=PROJECT_ID `
    --region=LOCATION `
    --resource-pool-spec="replica-count=REPLICA_COUNT,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT,machine-type=MACHINE_TYPE,accelerator-type=ACCELERATOR_TYPE,accelerator-count=ACCELERATOR_COUNT,disk-type=BOOT_DISK_TYPE,disk-size=BOOT_DISK_SIZE_GB"

Windows‏ (cmd.exe)

gcloud ai persistent-resources create ^
    --persistent-resource-id=PERSISTENT_RESOURCE_ID ^
    --display-name=DISPLAY_NAME ^
    --project=PROJECT_ID ^
    --region=LOCATION ^
    --resource-pool-spec="replica-count=REPLICA_COUNT,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT,machine-type=MACHINE_TYPE,accelerator-type=ACCELERATOR_TYPE,accelerator-count=ACCELERATOR_COUNT,disk-type=BOOT_DISK_TYPE,disk-size=BOOT_DISK_SIZE_GB"

אמורים לקבל תגובה שדומה לזו:

Using endpoint [https://us-central1-aiplatform.googleapis.com/]
Operation to create PersistentResource [projects/123456789012/locations/us-central1/persistentResources/mypersistentresource/operations/1234567890123456789] is submitted successfully.

You may view the status of your PersistentResource create operation with the command

  $ gcloud ai operations describe projects/sample-project/locations/us-central1/operations/1234567890123456789

פקודה gcloud לדוגמה:

gcloud ai persistent-resources create \
    --persistent-resource-id=my-persistent-resource \
    --region=us-central1 \
    --resource-pool-spec="min-replica-count=4,max-replica-count=12,machine-type=n1-highmem-2,accelerator-type=NVIDIA_TESLA_T4,accelerator-count=1,disk-type=pd-standard,disk-size=200" \
    --resource-pool-spec="replica-count=4,machine-type=n1-standard-4"

הגדרות מתקדמות gcloud

אם רוצים לציין אפשרויות הגדרה שלא זמינות בדוגמאות הקודמות, אפשר להשתמש בדגל --config כדי לציין את הנתיב לקובץ config.yaml בסביבה המקומית שמכיל את השדות של persistentResources. לדוגמה:

gcloud ai persistent-resources create \
    --persistent-resource-id=PERSISTENT_RESOURCE_ID \
    --project=PROJECT_ID \
    --region=LOCATION \
    --config=CONFIG

Python

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה במאמר Vertex AI quickstart using client libraries. מידע נוסף מופיע במאמרי העזרה של Vertex AI Python API.

כדי לבצע אימות ב-Vertex AI, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

כדי ליצור משאב קבוע שאפשר להשתמש בו בהרצת צינור, מגדירים את הפרמטר enable_custom_service_account לערך True באובייקט ResourceRuntimeSpec בזמן יצירת המשאב הקבוע.

from google.cloud.aiplatform.preview import persistent_resource
from google.cloud.aiplatform_v1beta1.types.persistent_resource import ResourcePool
from google.cloud.aiplatform_v1beta1.types.machine_resources import MachineSpec

# Create the persistent resource. This method returns the created resource.

my_example_resource = persistent_resource.PersistentResource.create(
    persistent_resource_id='PERSISTENT_RESOURCE_ID',
    display_name='DISPLAY_NAME',
    resource_pools=[
        ResourcePool(
            machine_spec=MachineSpec(
                machine_type='MACHINE_TYPE'
            ),
            replica_count=REPLICA_COUNT
        )
    ],
    enable_custom_service_account=True,
)

# Setting `sync` to `False` makes the method is non-blocking and the resource
# object returned syncs when the method completes.

SYNC=False

if not SYNC:
    my_example_resource.wait()

מחליפים את מה שכתוב בשדות הבאים:

  • PERSISTENT_RESOURCE_ID: מזהה ייחודי שהמשתמש מגדיר למשאב הקבוע. הוא צריך להתחיל באות, להסתיים באות או במספר, ולהכיל רק אותיות קטנות, מספרים ומקפים (-).
  • DISPLAY_NAME: אופציונלי. השם המוצג של המשאב הקבוע.
  • MACHINE_TYPE: סוג המכונה הווירטואלית (VM) שרוצים להשתמש בה. רשימה של מכונות וירטואליות נתמכות זמינה במאמר סוגי מכונות. השדה הזה תואם לשדה machineSpec.machineType ב
  • REPLICA_COUNT: מספר העותקים שייווצרו כשיוצרים את מאגר המשאבים הזה.

REST

למשאב קבוע יכול להיות מאגר משאבים אחד או יותר (machine_spec), ובכל מאגר משאבים אפשר להפעיל או להשבית את ההגדרה של התאמה אוטומטית לעומס.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט של Google Cloud הפרויקט שבו רוצים ליצור את המשאב הקבוע.
  • LOCATION: האזור שבו רוצים ליצור את המשאב הקבוע. רשימה של האזורים הנתמכים מופיעה במאמר בנושא זמינות התכונות.
  • PERSISTENT_RESOURCE_ID: המזהה של המשאב המתמשך.
  • DISPLAY_NAME: (אופציונלי) השם המוצג של המשאב הקבוע.
  • MACHINE_TYPE: סוג המכונה הווירטואלית שבה רוצים להשתמש. רשימה של מכונות וירטואליות נתמכות זמינה במאמר סוגי מכונות. השדה הזה תואם לשדה machineSpec.machineType בהודעת ResourcePool API.
  • ACCELERATOR_TYPE: (אופציונלי) סוג ה-GPU לצירוף לכל מכונת VM במאגר המשאבים. רשימת מעבדי ה-GPU הנתמכים מופיעה כאן. השדה הזה תואם לשדה machineSpec.acceleratorType בהודעת ResourcePool API.
  • ACCELERATOR_COUNT: (אופציונלי) מספר יחידות ה-GPU לצירוף לכל מכונת VM במאגר המשאבים. ערך ברירת המחדל הוא 1. השדה הזה תואם לשדה machineSpec.acceleratorCount בהודעת ResourcePool API.
  • REPLICA_COUNT: מספר העותקים שייווצרו כשיוצרים את מאגר המשאבים הזה. השדה הזה תואם לשדה replicaCount בהודעת ResourcePool API. חובה למלא את השדה הזה אם לא מציינים את MIN_REPLICA_COUNT ואת MAX_REPLICA_COUNT.
  • MIN_REPLICA_COUNT: (אופציונלי) המספר המינימלי של רפליקות שהתאמה אוטומטית לעומס יכולה לצמצם במאגר המשאבים הזה. כדי להפעיל את ההתאמה האוטומטית לעומס במאגר המשאבים הזה, צריך להגדיר את שני המאפיינים: MIN_REPLICA_COUNT ו-MAX_REPLICA_COUNT.
  • MAX_REPLICA_COUNT: (אופציונלי) המספר המקסימלי של רפליקות שהתאמה אוטומטית לעומס יכולה להגדיל עבור מאגר המשאבים הזה. כדי להפעיל את ההתאמה האוטומטית לעומס במאגר המשאבים הזה, צריך להגדיר את שני המאפיינים: MIN_REPLICA_COUNT ו-MAX_REPLICA_COUNT.
  • BOOT_DISK_TYPE: (אופציונלי) סוג הדיסק שבו רוצים להשתמש כדיסק האתחול של כל מכונה וירטואלית במאגר המשאבים. השדה הזה תואם לשדה diskSpec.bootDiskType בהודעת ResourcePool API. הערכים הקבילים כוללים את האפשרויות הבאות:
    • pd-standard (ברירת מחדל)
    • pd-ssd
  • BOOT_DISK_SIZE_GB: (אופציונלי) גודל הדיסק ב-GiB של דיסק האתחול של כל מכונה וירטואלית במאגר המשאבים. הערכים הקבילים הם 100 (ברירת מחדל) עד 64000. השדה הזה תואם לשדה diskSpec.bootDiskSizeGb בהודעת ResourcePool API.

ה-method של ה-HTTP וכתובת ה-URL:

POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/persistentResources?persistent_resource_id=PERSISTENT_RESOURCE_ID

תוכן בקשת JSON:

{
  "display_name": "DISPLAY_NAME",
  "resource_pools": [
    {
      "machine_spec": {
        "machine_type": "MACHINE_TYPE",
        "accelerator_type": "ACCELERATOR_TYPE",
        "accelerator_count": ACCELERATOR_COUNT
      },
      "replica_count": REPLICA_COUNT,
      "autoscaling_spec": {
        "min_replica_count": MIN_REPLICA_COUNT,
        "max_replica_count": MAX_REPLICA_COUNT
      },
      "disk_spec": {
        "boot_disk_type": "BOOT_DISK_TYPE",
        "boot_disk_size_gb": BOOT_DISK_SIZE_GB
      }
    }
  ]
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "name": "projects/123456789012/locations/us-central1/persistentResources/mypersistentresource/operations/1234567890123456789",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreatePersistentResourceOperationMetadata",
    "genericMetadata": {
      "createTime": "2023-02-08T21:17:15.009668Z",
      "updateTime": "2023-02-08T21:17:15.009668Z"
    }
  }
}

מלאי משאבים אזל

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

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

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

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

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

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