הגדרת הפעלה של צינור עיבוד נתונים במשאב מתמשך

משאב מתמשך ב-Vertex AI הוא אשכול שפועל לאורך זמן, שאפשר להשתמש בו כדי להריץ משימות אימון בהתאמה אישית והרצות של צינורות עיבוד נתונים. שימוש במשאב קבוע להרצת צינור עיבוד נתונים יכול לעזור להבטיח את הזמינות של משאבי מחשוב ולקצר את זמן ההפעלה של משימות בצינור עיבוד הנתונים. משאבים מתמשכים תומכים בכל מכונות ה-VM וכרטיסי ה-GPU שנתמכים על ידי משימות אימון בהתאמה אישית. מידע נוסף על משאבים קבועים זמין במאמר סקירה כללית של משאבים קבועים.

בדף הזה מוסבר איך:

לפני שמתחילים

לפני שיוצרים הפעלה של צינור עם משאב מתמשך, צריך קודם להשלים את הדרישות המוקדמות הבאות.

הגדרה וקומפילציה של צינור עיבוד נתונים

מגדירים את צינור עיבוד הנתונים ואז מבצעים קומפילציה של הגדרת צינור עיבוד הנתונים לקובץ YAML. מידע נוסף על הגדרה והידור של צינור זמין במאמר יצירת צינור.

התפקידים שצריך ב-IAM

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

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

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

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

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

gcloud

כדי ליצור משאב קבוע שאפשר לשייך להרצת צינור, משתמשים בפקודה gcloud ai persistent-resources create עם הדגל --enable-custom-service-account.

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

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

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

  • PROJECT_ID: מזהה הפרויקט של Google Cloud הפרויקט שבו רוצים ליצור את המשאב הקבוע.
  • LOCATION: האזור שבו רוצים ליצור את המשאב הקבוע. רשימה של האזורים הנתמכים מופיעה במאמר בנושא זמינות התכונות.
  • PERSISTENT_RESOURCE_ID: מזהה ייחודי שהמשתמש מגדיר למשאב הקבוע. הוא צריך להתחיל באות, להסתיים באות או במספר, ולהכיל רק אותיות קטנות, מספרים ומקפים (-).
  • DISPLAY_NAME: אופציונלי. השם המוצג של המשאב המתמשך.
  • MACHINE_TYPE: סוג המכונה הווירטואלית (VM) שרוצים להשתמש בה. רשימה של מכונות וירטואליות נתמכות זמינה במאמר סוגי מכונות. השדה הזה תואם לשדה machineSpec.machineType בהודעת ResourcePool API.
  • REPLICA_COUNT: אופציונלי. מספר העותקים שייווצרו למאגר המשאבים, אם לא רוצים להשתמש בהתאמת קנה מידה אוטומטית. השדה הזה תואם לשדה replicaCount בהודעת ResourcePool API. חובה לציין את מספר הרפליקות אם לא מציינים את השדות MIN_REPLICA_COUNT ו-MAX_REPLICA_COUNT.
  • MIN_REPLICA_COUNT: אופציונלי. מספר הרפליקות המינימלי אם משתמשים בהתאמת קנה מידה אוטומטית למאגר המשאבים. כדי להשתמש בהתאמה אוטומטית לעומס (automatic scaling), צריך לציין גם את MIN_REPLICA_COUNT וגם את MAX_REPLICA_COUNT.
  • MAX_REPLICA_COUNT: אופציונלי. המספר המקסימלי של העותקים אם משתמשים בהתאמת קנה מידה אוטומטית למאגר המשאבים. כדי להשתמש בהתאמה אוטומטית לעומס (automatic scaling), צריך לציין גם את MIN_REPLICA_COUNT וגם את MAX_REPLICA_COUNT.
  • 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,machine-type=MACHINE_TYPE,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT" \
    --enable-custom-service-account

‏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,machine-type=MACHINE_TYPE,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT" `
    --enable-custom-service-account

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,machine-type=MACHINE_TYPE,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT" ^
    --enable-custom-service-account

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

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

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

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

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

gcloud ai persistent-resources create \
    --persistent-resource-id=my-persistent-resource \
    --region=us-central1 \
    --resource-pool-spec="replica-count=4,machine-type=n1-standard-4"
    --enable-custom-service-account

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

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

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

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

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,
)

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

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

REST

כדי ליצור משאב PersistentResource שאפשר לשייך להרצת צינור, שולחים בקשת POST באמצעות השיטה persistentResources/create עם הפרמטר enable_custom_service_account שמוגדר לערך true בגוף הבקשה.

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

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

  • PROJECT_ID: מזהה הפרויקט של Google Cloud הפרויקט שבו רוצים ליצור את המשאב הקבוע.
  • LOCATION: האזור שבו רוצים ליצור את המשאב הקבוע. רשימה של האזורים הנתמכים מופיעה במאמר בנושא זמינות התכונות.
  • PERSISTENT_RESOURCE_ID: מזהה ייחודי שהמשתמש מגדיר למשאב הקבוע. הוא צריך להתחיל באות, להסתיים באות או במספר, ולהכיל רק אותיות קטנות, מספרים ומקפים (-).
  • DISPLAY_NAME: אופציונלי. השם המוצג של המשאב המתמשך.
  • MACHINE_TYPE: סוג המכונה הווירטואלית (VM) שרוצים להשתמש בה. רשימה של מכונות וירטואליות נתמכות זמינה במאמר סוגי מכונות. השדה הזה תואם לשדה machineSpec.machineType בהודעת ResourcePool API.
  • REPLICA_COUNT: אופציונלי. מספר העותקים שייווצרו למאגר המשאבים, אם לא רוצים להשתמש בהתאמת קנה מידה אוטומטית. השדה הזה תואם לשדה replicaCount בהודעת ResourcePool API. חובה לציין את מספר הרפליקות אם לא מציינים את השדות MIN_REPLICA_COUNT ו-MAX_REPLICA_COUNT.
  • MIN_REPLICA_COUNT: אופציונלי. מספר הרפליקות המינימלי אם משתמשים בהתאמת קנה מידה אוטומטית למאגר המשאבים. כדי להשתמש בהתאמה אוטומטית לעומס (automatic scaling), צריך לציין גם את MIN_REPLICA_COUNT וגם את MAX_REPLICA_COUNT.
  • MAX_REPLICA_COUNT: אופציונלי. המספר המקסימלי של העותקים אם משתמשים בהתאמת קנה מידה אוטומטית למאגר המשאבים. כדי להשתמש בהתאמה אוטומטית לעומס (automatic scaling), צריך לציין גם את MIN_REPLICA_COUNT וגם את MAX_REPLICA_COUNT.

ה-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"
      },
      "replica_count": REPLICA_COUNT,
      "autoscaling_spec": {
        "min_replica_count": MIN_REPLICA_COUNT,
        "max_replica_count": MAX_REPLICA_COUNT
      }
    }
  ],
  "resource_runtime_spec": {
    "service_account_spec": {
      "enable_custom_service_account": true
    }
  }
}

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

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

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/persistentResources/mypersistentresource/operations/OPERATION_ID",
  "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"
    }
  }
}

יצירת הפעלה של צינור עיבוד נתונים באמצעות המשאב המתמשך

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

יצירת מפרט של צינור עיבוד נתונים

כדי ליצור מפרט של צינור לעיבוד נתונים בזיכרון שאפשר להשתמש בו כדי ליצור את ההרצה של צינור לעיבוד נתונים, פועלים לפי ההוראות הבאות:

  1. מגדירים צינור עיבוד נתונים ומקמפלים אותו לקובץ YAML. מידע נוסף על הגדרה והידור של צינור זמין במאמר יצירת צינור.

  2. אפשר להשתמש בדוגמת הקוד הבאה כדי להמיר את קובץ ה-YAML של צינור עיבוד הנתונים שעבר קומפילציה למפרט של צינור עיבוד נתונים בזיכרון.

    import yaml
    with open("COMPILED_PIPELINE_PATH", "r") as stream:
      try:
        pipeline_spec = yaml.safe_load(stream)
        print(pipeline_spec)
      except yaml.YAMLError as exc:
        print(exc)
    

    מחליפים את COMPILED_PIPELINE_PATH בנתיב המקומי לקובץ ה-YAML של צינור העיבוד (pipeline) שקומפל.

יצירת הפעלה של צינור עיבוד נתונים

בדוגמת הקוד הבאה ב-Python אפשר לראות איך ליצור הרצה של צינור עיבוד נתונים שמשתמש במשאב מתמשך:

# Import aiplatform and the appropriate API version v1beta1
from google.cloud import aiplatform, aiplatform_v1beta1
from google.cloud.aiplatform_v1beta1.types import pipeline_job as pipeline_job_types

# Initialize the Vertex SDK using PROJECT_ID and LOCATION
aiplatform.init(project='PROJECT_ID', location='LOCATION')

# Create the API Endpoint
client_options = {
    "api_endpoint": f"LOCATION-aiplatform.googleapis.com"
}

# Initialize the PipeLineServiceClient
client = aiplatform_v1beta1.PipelineServiceClient(client_options=client_options)

# Construct the runtime detail
pr_runtime_detail = pipeline_job_types.PipelineJob.RuntimeConfig.PersistentResourceRuntimeDetail(
    persistent_resource_name=(
        f"projects/PROJECT_NUMBER/"
        f"locations/LOCATION/"
        f"persistentResources/PERSISTENT_RESOURCE_ID"
    ),
    task_resource_unavailable_wait_time_ms=WAIT_TIME,
    task_resource_unavailable_timeout_behavior='TIMEOUT_BEHAVIOR',
)

# Construct the default runtime configuration block
default_runtime = pipeline_job_types.PipelineJob.RuntimeConfig.DefaultRuntime(
    persistent_resource_runtime_detail=pr_runtime_detail
)

# Construct the main runtime configuration
runtime_config = pipeline_job_types.PipelineJob.RuntimeConfig(
    gcs_output_directory='PIPELINE_ROOT',
    parameter_values={
        'project_id': 'PROJECT_ID'
    },
    default_runtime=default_runtime
)

# Construct the pipeline job object
pipeline_job = pipeline_job_types.PipelineJob(
    display_name='PIPELINE_DISPLAY_NAME',
    pipeline_spec=PIPELINE_SPEC,
    runtime_config=runtime_config,
)

# Construct the request
parent_path = f"projects/PROJECT_ID/locations/LOCATION"
request = aiplatform_v1beta1.CreatePipelineJobRequest(
    parent=parent_path,
    pipeline_job=pipeline_job,
)

# Make the API Call to create the pipeline job
response = client.create_pipeline_job(request=request)

# Construct the Google Cloud console link
job_id = response.name.split('/')[-1]
console_link = (
    f"https://console.cloud.google.com/vertex-ai/locations/LOCATION"
    f"/pipelines/runs/{job_id}"
    f"?project=PROJECT_ID"
)

# Print the Google Cloud console link to the pipeline run
print(f"View Pipeline Run in Google Cloud console: {console_link}")

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

  • PROJECT_ID: Google Cloud הפרויקט שבו הצינור פועל.

  • LOCATION: האזור שבו מופעל צינור עיבוד הנתונים. מידע נוסף על האזורים שבהם Vertex AI Pipelines זמין מופיע במדריך מיקומי Vertex AI. אם לא מגדירים את הפרמטר הזה, Vertex AI Pipelines משתמש במיקום ברירת המחדל שמוגדר ב-aiplatform.init.

  • PERSISTENT_RESOURCE_ID: המזהה של המשאב הקבוע שיצרתם.

  • PROJECT_NUMBER: מספר הפרויקט ב- Google Cloud. זה שונה ממזהה הפרויקט. אפשר לראות את מספר הפרויקט בדף Project Settings (הגדרות הפרויקט) ב Google Cloud קונסולה.

  • COMPILED_PIPELINE_PATH: הנתיב לקובץ ה-YAML של צינור העיבוד שעבר קומפילציה. זה יכול להיות נתיב מקומי או URI של Cloud Storage.

  • WAIT_TIME: משך הזמן באלפיות השנייה להמתנה אם המשאב המתמשך לא זמין.

  • TIMEOUT_BEHAVIOR: התנהגות ברירת המחדל של משימת צינור עיבוד הנתונים במקרה של חריגה מהערך WAIT_TIME. הערכים האפשריים כוללים את אלה:

    • FAIL המשימה בצינור נכשלת אחרי שזמן ההמתנה חלף.

    • FALL_BACK_TO_ON_DEMAND המשימה בצינור תמשיך לפעול באמצעות משאבי האימון שמוגדרים כברירת מחדל ב-Vertex AI, בלי להשתמש במשאב הקבוע.

  • PIPELINE_ROOT: הנתיב ל-URI של Cloud Storage שבו יישמרו הארטיפקטים של הרצת צינור העיבוד.

  • PIPELINE_DISPLAY_NAME: השם של הפעלת צינור הנתונים. האורך המקסימלי של שם לתצוגה הוא 128 תווים בקידוד UTF-8.

  • PIPELINE_SPEC: מפרט הפייפליין שיצרתם במאמר יצירת מפרט פייפליין.

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