תזמון משימות אימון על סמך זמינות המשאבים

במשימות אימון ללא שרת שמבקשות משאבי GPU, הכלי Dynamic Workload Scheduler מאפשר לתזמן את המשימות לפי הזמן שבו משאבי ה-GPU המבוקשים יהיו זמינים. בדף הזה מוסבר איך לתזמן משימות אימון ללא שרת באמצעות Dynamic Workload Scheduler, ואיך להתאים אישית את התנהגות התזמון ב-Gemini Enterprise Agent Platform.

תרחישים מומלצים לדוגמה

מומלץ להשתמש ב-Dynamic Workload Scheduler כדי לתזמן משימות אימון ללא שרת במצבים הבאים:

  • הבקשות לעבודות אימון ללא שרתים הן ל-GPU מסוג L4, ‏ A100, ‏ H100, ‏ H200 או B200, ואתם רוצים להריץ את העבודה ברגע שהמשאבים המבוקשים יהיו זמינים. לדוגמה, כשפלטפורמת הסוכנים של Gemini Enterprise מקצה את משאבי ה-GPU מחוץ לשעות השיא.
  • עומס העבודה שלכם דורש כמה צמתים ולא יכול להתחיל לפעול עד שכל צמתי ה-GPU יוקצו ויהיו מוכנים בו-זמנית. לדוגמה, אתם יוצרים משימת אימון מבוזרת.

דרישות

כדי להשתמש ב-Dynamic Workload Scheduler, עבודת האימון שלכם בשרתים צריכה לעמוד בדרישות הבאות:

  • הבקשות שלכם לעבודות אימון ללא שרתים כוללות מעבדי GPU מסוג L4,‏ A100,‏ H100,‏ H200 או B200.
  • עבודת האימון ללא שרתים יכולה להימשך עד timeout ימים.
  • משימת האימון ללא שרת משתמשת באותה תצורת מכונה לכל מאגרי העובדים.

סוגי המשרות הנתמכים

כל סוגי משימות ההדרכה ללא שרת נתמכים, כולל CustomJob,‏ HyperparameterTuningjob ו-TrainingPipeline.

הפעלת Dynamic Workload Scheduler במשימת אימון ללא שרת

כדי להפעיל את Dynamic Workload Scheduler (תזמון דינמי של עומסי עבודה) במשימת אימון בלי שרת, מגדירים את שדה ה-API‏ scheduling.strategy לערך FLEX_START כשיוצרים את המשימה.

לפרטים על יצירת משימת אימון ללא שרת, אפשר לעיין בקישורים הבאים.

הגדרת משך ההמתנה עד שהמשאב יהיה זמין

אפשר להגדיר כמה זמן העבודה יכולה לחכות למשאבים בשדה scheduling.maxWaitDuration. הערך 0 מציין שהעבודה תמתין ללא הגבלת זמן עד שהמשאבים המבוקשים יהיו זמינים. ערך ברירת המחדל הוא יום אחד.

דוגמאות

בדוגמאות הבאות מוצגות הדרכים להפעלת Dynamic Workload Scheduler עבור customJob. בוחרים את הכרטיסייה של הממשק שרוצים להשתמש בו.

gcloud

כששולחים עבודה באמצעות Google Cloud CLI, מוסיפים את השדה scheduling.strategy לקובץ config.yaml.

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

workerPoolSpecs:
  machineSpec:
    machineType: a2-highgpu-1g
    acceleratorType: NVIDIA_TESLA_A100
    acceleratorCount: 1
  replicaCount: 1
  containerSpec:
    imageUri: gcr.io/ucaip-test/ucaip-training-test
    args:
    - port=8500
    command:
    - start
scheduling:
  strategy: FLEX_START
  maxWaitDuration: 7200s

Python

כששולחים משימה באמצעות Agent Platform SDK for Python, מגדירים את השדה scheduling_strategy בשיטת היצירה הרלוונטית CustomJob.

from google.cloud.aiplatform_v1.types import custom_job as gca_custom_job_compat

def create_custom_job_with_dws_sample(
    project: str,
    location: str,
    staging_bucket: str,
    display_name: str,
    script_path: str,
    container_uri: str,
    service_account: str,
    experiment: str,
    experiment_run: Optional[str] = None,
) -> None:
    aiplatform.init(project=project, location=location, staging_bucket=staging_bucket, experiment=experiment)

    job = aiplatform.CustomJob.from_local_script(
        display_name=display_name,
        script_path=script_path,
        container_uri=container_uri,
        enable_autolog=True,
        machine_type="a2-highgpu-1g",
        accelerator_type="NVIDIA_TESLA_A100",
        accelerator_count=1,
    )

    job.run(
        service_account=service_account,
        experiment=experiment,
        experiment_run=experiment_run,
        max_wait_duration=1800,
        scheduling_strategy=gca_custom_job_compat.Scheduling.Strategy.FLEX_START
    )

REST

כששולחים משימה באמצעות Gemini Enterprise Agent Platform REST API, צריך להגדיר את השדות scheduling.strategy ו-scheduling.maxWaitDuration כשיוצרים את משימת האימון ללא שרת.

דוגמה לתוכן בקשת JSON:

{
  "displayName": "MyDwsJob",
  "jobSpec": {
    "workerPoolSpecs": [
      {
        "machineSpec": {
          "machineType": "a2-highgpu-1g",
          "acceleratorType": "NVIDIA_TESLA_A100",
          "acceleratorCount": 1
        },
        "replicaCount": 1,
        "diskSpec": {
          "bootDiskType": "pd-ssd",
          "bootDiskSizeGb": 100
        },
        "containerSpec": {
          "imageUri": "python:3.10",
          "command": [
            "sleep"
          ],
          "args": [
            "100"
          ]
        }
      }
    ],
    "scheduling": {
      "maxWaitDuration": "1800s",
      "strategy": "FLEX_START"
    }
  }
}

מכסה

כששולחים משימה באמצעות Dynamic Workload Scheduler, במקום לצרוך מכסת שימוש לפי דרישה ב-Gemini Enterprise Agent Platform, המערכת צורכת מכסת שימוש ניתנת להפסקת פעולה ב-Gemini Enterprise Agent Platform. לדוגמה, כדי להשתמש ב-GPU מסוג Nvidia H100, במקום להשתמש בפקודה:

aiplatform.googleapis.com/custom_model_training_nvidia_h100_gpus,

הפלטפורמה Gemini Enterprise Agent Platform צורכת:

aiplatform.googleapis.com/custom_model_training_preemptible_nvidia_h100_gpus.

עם זאת, המכסה preemptible משמשת רק בשם. המשאבים שלכם לא ניתנים להפקעה ומתנהגים כמו משאבים רגילים.

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

חיוב

כשמשתמשים ב-DWS flex start, החיוב מתבצע בהתאם לתמחור של Dynamic Workload Scheduler. בנוסף לשימוש בתשתית, יש עמלות על ניהול אימון ללא שרתים.

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