יצירת צינורות עיבוד נתונים לאימון

צינורות עיבוד נתונים לאימון מאפשרים לכם לבצע אימון מותאם אישית של למידת מכונה (ML) וליצור באופן אוטומטי משאב  על סמך פלט האימון.Model

אם המשימה שלכם כוללת רק הפעלה של משימת אימון ויצירה אוטומטית של משאב מודל בלי תזמור של תהליך עבודה מלא, יכול להיות ששימוש בצינור אימון עצמאי כפי שמתואר במסמך הזה יספיק. עם זאת, אם המטרה שלכם היא ליצור מחזור חיים חזק, אוטומטי וניתן לחזרה של ML מקצה לקצה, שכולל מספר שלבים (כמו עיבוד נתונים, אימון, הערכה, פריסה או מעקב), מומלץ להשתמש בצינורות של Gemini Enterprise Agent Platform, כי הם מיועדים לתיאום תהליכי עבודה.

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

לפני שיוצרים צינור הדרכה ב-Agent Platform, צריך ליצור אפליקציית הדרכה ב-Python או מאגר מותאם אישית כדי להגדיר את קוד ההדרכה ואת התלות שרוצים להפעיל ב-Agent Platform. אם יוצרים אפליקציית אימון ב-Python באמצעות PyTorch,‏ TensorFlow,‏ scikit-learn או XGBoost, אפשר להשתמש בקונטיינרים המובנים שלנו כדי להריץ את הקוד. אם אתם לא בטוחים איזו מהאפשרויות האלה לבחור, כדאי לעיין בדרישות לגבי קוד האימון כדי לקבל מידע נוסף.

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

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

  • מפעילים CustomJob ומעלים את המודל שנוצר ל-Agent Platform
  • מפעילים משימת כוונון של היפר-פרמטרים ומעלים את המודל שמתקבל אל Agent Platform

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

מה כלול בCustomJob

כשיוצרים משימה בהתאמה אישית, מציינים הגדרות ש-Agent Platform צריכה כדי להריץ את קוד ההדרכה, כולל:

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

אם רוצים ליצור משימה מותאמת אישית עצמאית מחוץ לצינור של Vertex AI Training, אפשר לעיין במדריך בנושא משימות בהתאמה אישית.

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

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

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

  1. יוצרים את מערך הנתונים.
  2. מעדכנים את אפליקציית האימון כך שתשתמש במערך נתונים מנוהל. מידע נוסף זמין במאמר בנושא איך Agent Platform מעבירה את מערך הנתונים לאפליקציית האימון.
  3. מציינים מערך נתונים מנוהל כשיוצרים את צינור האימון. לדוגמה, אם יוצרים את פייפליין האימון באמצעות API בארכיטקטורת REST, צריך לציין את הגדרות קבוצת הנתונים בקטע inputDataConfig.

    צריך ליצור את צינור האימון באותו אזור שבו יצרתם את מערך הנתונים.

מידע נוסף זמין במאמר בנושא הפניית API ב-TrainingPipeline.

הגדרת אימון מבוזר

בפייפליין ההדרכה, אפשר להגדיר את משימת ההדרכה בלי שרת (serverless) או את משימת הכוונון של היפר-פרמטרים להדרכה מבוזרת על ידי ציון של כמה מאגרי worker.

כל הדוגמאות בדף הזה מציגות משימות אימון עם רפליקה אחת ועם worker pool אחד. כדי לשנות אותן לאימון מבוזר:

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

מידע נוסף על שימוש באימון מבוזר

העלאה של מודל ושל CustomJob

צינור ההדרכה הזה כולל משימה בהתאמה אישית עם שלב נוסף שנועד להקל על פריסת המודל ב-Agent Platform אחרי ההדרכה. צינור ההכשרה הזה מבצע שני דברים עיקריים:

  1. צינור עיבוד הנתונים של האימון יוצר משאב CustomJob. המשימה בהתאמה אישית מפעילה את אפליקציית האימון באמצעות משאבי המחשוב שאתם מציינים.

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

יש שתי דרכים שונות להגדיר את המיקום של ארטיפקטים של מודלים:

  • אם הגדרתם baseOutputDirectory למשימת האימון, ודאו שקוד האימון שומר את ארטיפקטים של המודל במיקום הזה באמצעות משתנה הסביבה $AIP_MODEL_DIR שהוגדר על ידי Agent Platform. אחרי שמשימת האימון מסתיימת, Agent Platform מחפש את ארטיפקטי המודל שנוצרו ב-gs://BASE_OUTPUT_DIRECTORY/model.

  • אם מגדירים את השדה modelToUpload.artifactUri, צינור ההדרכה מעלה את ארטיפקטים של המודל מה-URI הזה. חובה להגדיר את השדה הזה אם לא הגדרתם את baseOutputDirectory.

אם מציינים גם את baseOutputDirectory וגם את modelToUpload.artifactUri, פלטפורמת הסוכן משתמשת ב-modelToUpload.artifactUri.

כדי ליצור צינור אימונים מהסוג הזה:

המסוף

  1. במסוף Google Cloud , בקטע Agent Platform, עוברים לדף Training pipelines.

    מעבר אל Training pipelines

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

  3. בשלב שיטת האימון, מציינים את ההגדרות הבאות:

    1. אם רוצים להשתמש במערך נתונים מנוהל לאימון, צריך לציין Dataset ו-Annotation set.

      אחרת, בתפריט הנפתח מערך נתונים, בוחרים באפשרות אין מערך נתונים מנוהל.

    2. בוחרים באפשרות אימון מותאם אישית (מתקדם).

    לוחצים על Continue.

  4. בשלב פרטי המודל, בוחרים באפשרות אימון מודל חדש או אימון גרסה חדשה. אם בוחרים באפשרות 'אימון מודל חדש', מזינים שם לבחירה, MODEL_NAME, למודל. לוחצים על המשך.

  5. בשלב Training container (מאגר תגים לאימון), מציינים את ההגדרות הבאות:

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

    2. בהתאם לבחירה, מבצעים אחת מהפעולות הבאות:

    3. בשדה Model output directory (ספריית פלט של המודל), מציינים את ה-URI של Cloud Storage של ספרייה בקטגוריה שיש לכם גישה אליה. הספרייה לא צריכה להתקיים עדיין.

      הערך הזה מועבר ל-Agent Platform בשדה baseOutputDirectory API, שמגדיר כמה משתני סביבה שהאפליקציה להדרכה יכולה לגשת אליהם כשהיא פועלת.

      בסיום האימון, Agent Platform מחפש model artifacts בספריית משנה של ה-URI הזה כדי ליצור Model. (ספריית המשנה הזו זמינה לקוד האימון שלכם כמשתנה הסביבה AIP_MODEL_DIR).

      כשלא משתמשים בכוונון היפרפרמטרים, פלטפורמת הסוכנים מצפה למצוא ארטיפקטים של מודלים ב-BASE_OUTPUT_DIRECTORY/model/.

    4. אופציונלי: בשדה Arguments (ארגומנטים), אפשר לציין ארגומנטים לשימוש ב-Agent Platform כשהיא מתחילה להריץ את קוד האימון. האורך המקסימלי של כל הארגומנטים ביחד הוא 100,000 תווים. ההתנהגות של הארגומנטים האלה שונה בהתאם לסוג מאגר התגים שבו אתם משתמשים:

    לוחצים על Continue.

  6. בשלב Hyperparameter tuning (התאמת היפרפרמטרים), מוודאים שהתיבה Enable hyperparameter tuning (הפעלת התאמת היפרפרמטרים) לא מסומנת. לוחצים על המשך.

  7. בשלב Compute and pricing (חישוב ותמחור), מציינים את ההגדרות הבאות:

    1. בתפריט הנפתח Region, בוחרים באפשרות region that supports custom training (אזור שתומך באימון מותאם אישית).

    2. בקטע Worker pool 0, מציינים את משאבי המחשוב שבהם רוצים להשתמש לאימון.

      אם מציינים מאיצים, צריך לוודא שסוג המאיץ שנבחר זמין באזור שנבחר.

      אם רוצים לבצע אימון מבוזר, לוחצים על Add more worker pools (הוספת עוד מאגרי עובדים) ומציינים קבוצה נוספת של משאבי מחשוב לכל מאגר עובדים נוסף שרוצים להוסיף.

    לוחצים על Continue.

  8. בשלב Prediction container (מאגר תגים לחיזוי), מציינים את ההגדרות הבאות:

    1. בוחרים אם להשתמש בקונטיינר מוכן מראש או בקונטיינר בהתאמה אישית כדי להציג תחזיות מהמודל שאומן.

    2. בהתאם לבחירה, מבצעים אחת מהפעולות הבאות:

    3. השדה Model directory מכיל את הערך שהגדרתם קודם בשדה Model output directory בשלב Training container. השינוי בשני השדות האלה משפיע באותו אופן. מידע נוסף על השדה הזה מופיע בהוראות הקודמות.

    4. משאירים את השדות בקטע Predict schemata (תכנון סכמות לחיזוי) ריקים.

  9. כדי להפעיל את פייפליין האימון בלי שרת (serverless), לוחצים על Start training (התחלת אימון).

REST

בדוגמת הקוד הבאה מוצג אופן היצירה של צינור אימון באמצעות השיטה create של משאב trainingPipeline.

הערה: אם רוצים להגדיר את צינור העיבוד הזה ליצירת גרסה חדשה של המודל, אפשר להוסיף את PARENT_MODEL בשדה trainingPipeline.

מידע נוסף על ניהול גרסאות של מודלים באמצעות Gemini Enterprise Agent Platform Model Registry

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

  • LOCATION_ID: האזור שבו מורץ קוד האימון והמודל Model מאוחסן.
  • PROJECT_ID: מזהה הפרויקט.
  • TRAINING_PIPELINE_NAME: שדה חובה. שם תצוגה ל-trainingPipeline.
  • אם אפליקציית האימון משתמשת במערך נתונים של Agent Platform, צריך לציין את הפרטים הבאים:
    • DATASET_ID: מזהה קבוצת הנתונים.
    • ANNOTATIONS_FILTER: מסנן את מערך הנתונים לפי ההערות שאתם מציינים.
    • ANNOTATION_SCHEMA_URI: מסנן את מערך הנתונים לפי ה-URI של סכימת ההערות שצוין.
    • אפשר להשתמש באחת מהאפשרויות הבאות כדי לציין איך פריטי הנתונים יפוצלו לקבוצות אימון, אימות ובדיקה.
      • כדי לפצל את מערך הנתונים על סמך שברים שמגדירים את הגודל של כל קבוצה, מציינים את הפרטים הבאים:
        • TRAINING_FRACTION: החלק ממערך הנתונים שישמש לאימון המודל.
        • VALIDATION_FRACTION: השבר של מערך הנתונים שמשמש לאימות המודל.
        • TEST_FRACTION: החלק ממערך הנתונים שמשמש להערכת המודל.
      • כדי לפצל את מערך הנתונים על סמך מסננים, מציינים את הפרטים הבאים:
        • TRAINING_FILTER: מסנן את מערך הנתונים כדי להציג את פריטי הנתונים שישמשו לאימון המודל.
        • VALIDATION_FILTER: מסנן את מערך הנתונים כך שיכלול רק את פריטי הנתונים שישמשו לאימות המודל.
        • TEST_FILTER: מסנן את מערך הנתונים כך שיוצגו רק פריטי הנתונים שישמשו להערכת המודל.
      • כדי להשתמש בחלוקה מוגדרת מראש, מציינים את הפרטים הבאים:
        • PREDEFINED_SPLIT_KEY: שם העמודה שמשמשת לפיצול מערך הנתונים. הערכים הקבילים בעמודה הזו כוללים את הערכים training,‏ validation ו-test.
      • כדי לפצל את מערך הנתונים על סמך חותמת הזמן בפריטי הנתונים, מציינים את הפרטים הבאים:
        • TIMESTAMP_TRAINING_FRACTION: החלק ממערך הנתונים שישמש לאימון המודל.
        • TIMESTAMP_VALIDATION_FRACTION: החלק ממערך הנתונים שישמש לאימות המודל.
        • TIMESTAMP_TEST_FRACTION: החלק ממערך הנתונים שמשמש להערכת המודל.
        • TIMESTAMP_SPLIT_KEY: השם של עמודת חותמת הזמן שמשמשת לפיצול מערך הנתונים.
    • OUTPUT_URI_PREFIX: המיקום ב-Cloud Storage שאליו Agent Platform מייצאת את מערך נתוני האימון, אחרי שהוא פוצל למערכי אימון, אימות ובדיקה.
  • מגדירים את משימת האימון בהתאמה אישית:
    • MACHINE_TYPE: סוג המכונה. אפשר לעיין בסוגי המכונות שזמינים לאימון.
    • ACCELERATOR_TYPE: (אופציונלי). סוג המאיץ לצירוף לכל תקופת ניסיון.
    • ACCELERATOR_COUNT: (אופציונלי). מספר המאיצים לצירוף לכל תקופת ניסיון.
    • REPLICA_COUNT: מספר העותקים המשוכפלים של העובדים שבהם יש להשתמש בכל ניסיון.
    • אם אפליקציית האימון פועלת בקונטיינר בהתאמה אישית, צריך לציין את הפרטים הבאים:
      • CUSTOM_CONTAINER_IMAGE_URI: ה-URI של קובץ אימג' בקונטיינר ב-Artifact Registry או ב-Docker Hub, שיופעל בכל עותק של העובד.
      • CUSTOM_CONTAINER_COMMAND: (אופציונלי). הפקודה שתופעל כשהקונטיינר יופעל. הפקודה הזו מבטלת את נקודת הכניסה שמוגדרת כברירת מחדל במאגר.
      • CUSTOM_CONTAINER_ARGS: (אופציונלי). הארגומנטים שיועברו כשמפעילים את הקונטיינר. האורך המקסימלי של כל הארגומנטים ביחד הוא 100,000 תווים.
    • אם אפליקציית האימון היא חבילת Python שפועלת בקונטיינר מוכן מראש, מציינים את הפרטים הבאים:
      • PYTHON_PACKAGE_EXECUTOR_IMAGE_URI: ה-URI של קובץ אימג' של קונטיינר שמריץ את חבילת Python שצוינה. אפשר לעיין בקונטיינרים מוכנים מראש שזמינים לאימון.
      • PYTHON_PACKAGE_URIS: המיקום ב-Cloud Storage של קובצי חבילת Python, שהם תוכנית האימון והחבילות שתלויות בה. המספר המקסימלי של כתובות ה-URI של החבילות הוא 100.
      • PYTHON_MODULE: השם של מודול Python להפעלה אחרי התקנת החבילות.
      • PYTHON_PACKAGE_ARGS: (אופציונלי). ארגומנטים של שורת הפקודה שיועברו אל מודול Python. האורך המקסימלי של כל הארגומנטים ביחד הוא 100,000 תווים.
    • TIMEOUT: (אופציונלי). זמן הריצה המקסימלי של העבודה.
  • MODEL_NAME: שם מוצג של המודל שהועלה (נוצר) על ידי TrainingPipeline.
  • MODEL_DESCRIPTION: תיאור של המודל.
  • IMAGE_URI: ה-URI של קובץ האימג' של הקונטיינר שבו רוצים להשתמש להרצת תחזיות. לדוגמה: us-docker.pkg.dev/vertex-ai/prediction/tf2-cpu.2-1:latest. אפשר להשתמש בקונטיינרים מוגדרים מראש או בקונטיינרים בהתאמה אישית.
  • modelToUpload.labels: כל קבוצה של צמדי מפתח/ערך לארגון המודלים. לדוגמה:
    • ‪"env": "prod"
    • ‪"tier": "backend"
  • מציינים את התוויות LABEL_NAME ו-LABEL_VALUE שרוצים להחיל על צינור האימון הזה.

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

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/trainingPipelines

גוף בקשת JSON:

{
  "displayName": "TRAINING_PIPELINE_NAME",
  "inputDataConfig": {
    "datasetId": DATASET_ID,
    "annotationsFilter": ANNOTATIONS_FILTER,
    "annotationSchemaUri": ANNOTATION_SCHEMA_URI,

    // Union field split can be only one of the following:
    "fractionSplit": {
      "trainingFraction": TRAINING_FRACTION,
      "validationFraction": VALIDATION_FRACTION,
      "testFraction": TEST_FRACTION
    },
    "filterSplit": {
      "trainingFilter": TRAINING_FILTER,
      "validationFilter": VALIDATION_FILTER,
      "testFilter": TEST_FILTER
    },
    "predefinedSplit": {
      "key": PREDEFINED_SPLIT_KEY
    },
    "timestampSplit": {
      "trainingFraction": TIMESTAMP_TRAINING_FRACTION,
      "validationFraction": TIMESTAMP_VALIDATION_FRACTION,
      "testFraction": TIMESTAMP_TEST_FRACTION,
      "key": TIMESTAMP_SPLIT_KEY
    }
    // End of list of possible types for union field split.
    "gcsDestination": {
      "outputUriPrefix": OUTPUT_URI_PREFIX
    }
  },
  "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/custom_task_1.0.0.yaml",
  "trainingTaskInputs": {
    "workerPoolSpecs": [
        {
          "machineSpec": {
            "machineType": MACHINE_TYPE,
            "acceleratorType": ACCELERATOR_TYPE,
            "acceleratorCount": ACCELERATOR_COUNT
          },
          "replicaCount": REPLICA_COUNT,

          // Union field task can be only one of the following:
          "containerSpec": {
            "imageUri": CUSTOM_CONTAINER_IMAGE_URI,
            "command": [
              CUSTOM_CONTAINER_COMMAND
            ],
            "args": [
              CUSTOM_CONTAINER_ARGS
            ]
          },
          "pythonPackageSpec": {
            "executorImageUri": PYTHON_PACKAGE_EXECUTOR_IMAGE_URI,
            "packageUris": [
              PYTHON_PACKAGE_URIS
            ],
            "pythonModule": PYTHON_MODULE,
            "args": [
              PYTHON_PACKAGE_ARGS
            ]
          }
          // End of list of possible types for union field task.
        }
      ],
      "scheduling": {
        "TIMEOUT": TIMEOUT
      }
    }
  },
  "modelToUpload": {
    "displayName": "MODEL_NAME",
    "predictSchemata": {},
    "containerSpec": {
      "imageUri": "IMAGE_URI"
    }
  },
  "labels": {
    LABEL_NAME_1": LABEL_VALUE_1,
    LABEL_NAME_2": LABEL_VALUE_2
  }
}

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

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/trainingPipelines"

PowerShell

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/trainingPipelines" | Select-Object -Expand Content

התגובה מכילה מידע על המפרטים וגם על TRAININGPIPELINE_ID.

Java

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaההוראות להגדרה במאמר מדריך למתחילים של Agent Platform באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Agent Platform Java API.

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

import com.google.cloud.aiplatform.v1.LocationName;
import com.google.cloud.aiplatform.v1.Model;
import com.google.cloud.aiplatform.v1.ModelContainerSpec;
import com.google.cloud.aiplatform.v1.PipelineServiceClient;
import com.google.cloud.aiplatform.v1.PipelineServiceSettings;
import com.google.cloud.aiplatform.v1.TrainingPipeline;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.protobuf.Value;
import com.google.protobuf.util.JsonFormat;
import java.io.IOException;

public class CreateTrainingPipelineCustomJobSample {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String project = "PROJECT";
    String displayName = "DISPLAY_NAME";
    String modelDisplayName = "MODEL_DISPLAY_NAME";
    String containerImageUri = "CONTAINER_IMAGE_URI";
    String baseOutputDirectoryPrefix = "BASE_OUTPUT_DIRECTORY_PREFIX";
    createTrainingPipelineCustomJobSample(
        project, displayName, modelDisplayName, containerImageUri, baseOutputDirectoryPrefix);
  }

  static void createTrainingPipelineCustomJobSample(
      String project,
      String displayName,
      String modelDisplayName,
      String containerImageUri,
      String baseOutputDirectoryPrefix)
      throws IOException {
    PipelineServiceSettings settings =
        PipelineServiceSettings.newBuilder()
            .setEndpoint("us-central1-aiplatform.googleapis.com:443")
            .build();
    String location = "us-central1";

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (PipelineServiceClient client = PipelineServiceClient.create(settings)) {
      JsonObject jsonMachineSpec = new JsonObject();
      jsonMachineSpec.addProperty("machineType", "n1-standard-4");

      // A working docker image can be found at
      // gs://cloud-samples-data/ai-platform/mnist_tfrecord/custom_job
      // This sample image accepts a set of arguments including model_dir.
      JsonObject jsonContainerSpec = new JsonObject();
      jsonContainerSpec.addProperty("imageUri", containerImageUri);
      JsonArray jsonArgs = new JsonArray();
      jsonArgs.add("--model_dir=$(AIP_MODEL_DIR)");
      jsonContainerSpec.add("args", jsonArgs);

      JsonObject jsonJsonWorkerPoolSpec0 = new JsonObject();
      jsonJsonWorkerPoolSpec0.addProperty("replicaCount", 1);
      jsonJsonWorkerPoolSpec0.add("machineSpec", jsonMachineSpec);
      jsonJsonWorkerPoolSpec0.add("containerSpec", jsonContainerSpec);

      JsonArray jsonWorkerPoolSpecs = new JsonArray();
      jsonWorkerPoolSpecs.add(jsonJsonWorkerPoolSpec0);

      JsonObject jsonBaseOutputDirectory = new JsonObject();
      // The GCS location for outputs must be accessible by the project's AI Platform
      // service account.
      jsonBaseOutputDirectory.addProperty("output_uri_prefix", baseOutputDirectoryPrefix);

      JsonObject jsonTrainingTaskInputs = new JsonObject();
      jsonTrainingTaskInputs.add("workerPoolSpecs", jsonWorkerPoolSpecs);
      jsonTrainingTaskInputs.add("baseOutputDirectory", jsonBaseOutputDirectory);

      Value.Builder trainingTaskInputsBuilder = Value.newBuilder();
      JsonFormat.parser().merge(jsonTrainingTaskInputs.toString(), trainingTaskInputsBuilder);
      Value trainingTaskInputs = trainingTaskInputsBuilder.build();
      String trainingTaskDefinition =
          "gs://google-cloud-aiplatform/schema/trainingjob/definition/custom_task_1.0.0.yaml";
      String imageUri = "gcr.io/cloud-aiplatform/prediction/tf-cpu.1-15:latest";
      ModelContainerSpec containerSpec =
          ModelContainerSpec.newBuilder().setImageUri(imageUri).build();
      Model modelToUpload =
          Model.newBuilder()
              .setDisplayName(modelDisplayName)
              .setContainerSpec(containerSpec)
              .build();
      TrainingPipeline trainingPipeline =
          TrainingPipeline.newBuilder()
              .setDisplayName(displayName)
              .setTrainingTaskDefinition(trainingTaskDefinition)
              .setTrainingTaskInputs(trainingTaskInputs)
              .setModelToUpload(modelToUpload)
              .build();
      LocationName parent = LocationName.of(project, location);
      TrainingPipeline response = client.createTrainingPipeline(parent, trainingPipeline);
      System.out.format("response: %s\n", response);
      System.out.format("Name: %s\n", response.getName());
    }
  }
}

Python

במאמר התקנת Vertex AI SDK ל-Python מוסבר איך להתקין או לעדכן את Vertex AI SDK ל-Python. מידע נוסף מופיע ב מאמרי העזרה של Python API.

הדוגמאות הבאות מציגות כיצד להשתמש ב-Agent Platform SDK for Python כדי ליצור פייפליין אימון בלי שרת (serverless). בוחרים אם להשתמש במאגר תגים מותאם אישית או במאגר תגים מוכן מראש לצורך אימון:

מאגר מוכן מראש

כשמשתמשים ב-Agent Platform SDK ל-Python כדי ליצור צינור אימון שמריץ את קוד ה-Python במאגר מידע מוכן מראש, אפשר לספק את קוד האימון באחת מהדרכים הבאות:

  • מציינים את מזהה ה-URI של חבילת הפצה של מקור Python ב-Cloud Storage.

    (האפשרות הזו זמינה גם כשיוצרים צינור להדרכה בלי להשתמש ב-Agent Platform SDK for Python).

  • מציינים את הנתיב לתסריט Python במחשב המקומי. לפני ש-Agent Platform SDK for Python יוצר פייפליין להרצת אימון, הוא אורז את הסקריפט כהפצה של מקור ומעלה אותו לקטגוריה של Cloud Storage שתבחרו.

    (האפשרות הזו זמינה רק כשמשתמשים ב-Agent Platform SDK for Python).

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

חבילה

בדוגמה הבאה נעשה שימוש בCustomPythonPackageTrainingJobclass.

def create_training_pipeline_custom_package_job_sample(
    project: str,
    location: str,
    staging_bucket: str,
    display_name: str,
    python_package_gcs_uri: str,
    python_module_name: str,
    container_uri: str,
    model_serving_container_image_uri: str,
    dataset_id: Optional[str] = None,
    model_display_name: Optional[str] = None,
    args: Optional[List[Union[str, float, int]]] = None,
    replica_count: int = 1,
    machine_type: str = "n1-standard-4",
    accelerator_type: str = "ACCELERATOR_TYPE_UNSPECIFIED",
    accelerator_count: int = 0,
    training_fraction_split: float = 0.8,
    validation_fraction_split: float = 0.1,
    test_fraction_split: float = 0.1,
    sync: bool = True,
    tensorboard_resource_name: Optional[str] = None,
    service_account: Optional[str] = None,
):
    aiplatform.init(project=project, location=location, staging_bucket=staging_bucket)

    job = aiplatform.CustomPythonPackageTrainingJob(
        display_name=display_name,
        python_package_gcs_uri=python_package_gcs_uri,
        python_module_name=python_module_name,
        container_uri=container_uri,
        model_serving_container_image_uri=model_serving_container_image_uri,
    )

    # This example uses an ImageDataset, but you can use another type
    dataset = aiplatform.ImageDataset(dataset_id) if dataset_id else None

    model = job.run(
        dataset=dataset,
        model_display_name=model_display_name,
        args=args,
        replica_count=replica_count,
        machine_type=machine_type,
        accelerator_type=accelerator_type,
        accelerator_count=accelerator_count,
        training_fraction_split=training_fraction_split,
        validation_fraction_split=validation_fraction_split,
        test_fraction_split=test_fraction_split,
        sync=sync,
        tensorboard=tensorboard_resource_name,
        service_account=service_account,
    )

    model.wait()

    print(model.display_name)
    print(model.resource_name)
    print(model.uri)
    return model

Script

בדוגמה הבאה נעשה שימוש בCustomTrainingJobclass.

def create_training_pipeline_custom_job_sample(
    project: str,
    location: str,
    staging_bucket: str,
    display_name: str,
    script_path: str,
    container_uri: str,
    model_serving_container_image_uri: str,
    dataset_id: Optional[str] = None,
    model_display_name: Optional[str] = None,
    args: Optional[List[Union[str, float, int]]] = None,
    replica_count: int = 0,
    machine_type: str = "n1-standard-4",
    accelerator_type: str = "ACCELERATOR_TYPE_UNSPECIFIED",
    accelerator_count: int = 0,
    training_fraction_split: float = 0.8,
    validation_fraction_split: float = 0.1,
    test_fraction_split: float = 0.1,
    sync: bool = True,
    tensorboard_resource_name: Optional[str] = None,
    service_account: Optional[str] = None,
):
    aiplatform.init(project=project, location=location, staging_bucket=staging_bucket)

    job = aiplatform.CustomTrainingJob(
        display_name=display_name,
        script_path=script_path,
        container_uri=container_uri,
        model_serving_container_image_uri=model_serving_container_image_uri,
    )

    # This example uses an ImageDataset, but you can use another type
    dataset = aiplatform.ImageDataset(dataset_id) if dataset_id else None

    model = job.run(
        dataset=dataset,
        model_display_name=model_display_name,
        args=args,
        replica_count=replica_count,
        machine_type=machine_type,
        accelerator_type=accelerator_type,
        accelerator_count=accelerator_count,
        training_fraction_split=training_fraction_split,
        validation_fraction_split=validation_fraction_split,
        test_fraction_split=test_fraction_split,
        sync=sync,
        tensorboard=tensorboard_resource_name,
        service_account=service_account,
    )

    model.wait()

    print(model.display_name)
    print(model.resource_name)
    print(model.uri)
    return model

מאגר תגים בהתאמה אישית

בדוגמה הבאה נעשה שימוש בCustomContainerTrainingJobclass.

def create_training_pipeline_custom_container_job_sample(
    project: str,
    location: str,
    staging_bucket: str,
    display_name: str,
    container_uri: str,
    model_serving_container_image_uri: str,
    dataset_id: Optional[str] = None,
    model_display_name: Optional[str] = None,
    args: Optional[List[Union[str, float, int]]] = None,
    replica_count: int = 1,
    machine_type: str = "n1-standard-4",
    accelerator_type: str = "ACCELERATOR_TYPE_UNSPECIFIED",
    accelerator_count: int = 0,
    training_fraction_split: float = 0.8,
    validation_fraction_split: float = 0.1,
    test_fraction_split: float = 0.1,
    sync: bool = True,
    tensorboard_resource_name: Optional[str] = None,
    service_account: Optional[str] = None,
):
    aiplatform.init(project=project, location=location, staging_bucket=staging_bucket)

    job = aiplatform.CustomContainerTrainingJob(
        display_name=display_name,
        container_uri=container_uri,
        model_serving_container_image_uri=model_serving_container_image_uri,
    )

    # This example uses an ImageDataset, but you can use another type
    dataset = aiplatform.ImageDataset(dataset_id) if dataset_id else None

    model = job.run(
        dataset=dataset,
        model_display_name=model_display_name,
        args=args,
        replica_count=replica_count,
        machine_type=machine_type,
        accelerator_type=accelerator_type,
        accelerator_count=accelerator_count,
        training_fraction_split=training_fraction_split,
        validation_fraction_split=validation_fraction_split,
        test_fraction_split=test_fraction_split,
        sync=sync,
        tensorboard=tensorboard_resource_name,
        service_account=service_account,
    )

    model.wait()

    print(model.display_name)
    print(model.resource_name)
    print(model.uri)
    return model

משימת כוונון של היפר-פרמטרים והעלאת מודל

צינור האימון הזה כולל משימת כוונון של היפר-פרמטרים עם שלב נוסף שנועד להקל על פריסת המודל ב-Agent Platform אחרי האימון. צינור ההכשרה הזה מבצע שני דברים עיקריים:

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

  2. אחרי שמשימת ההתאמה של ההיפר-פרמטרים מסתיימת, צינור ההכשרה מוצא את ארטיפקטי המודל מהניסיון הטוב ביותר, בספריית הפלט (baseOutputDirectory) שציינתם עבור דלי Cloud Storage. צינור האימון משתמש בארטיפקטים האלה כדי ליצור משאב מודל, שמאפשר פריסת מודל.

בפייפליין האימון הזה, צריך לציין baseOutputDirectory שבו Agent Platform מחפשת את ארטיפקטים של המודל מהניסיון הטוב ביותר.

משימות כוונון של היפר-פרמטר כוללות הגדרות נוספות שאפשר לקבוע. מידע נוסף על ההגדרות של HyperparameterTuningJob

REST

בדוגמת הקוד הבאה מוצג אופן היצירה של צינור אימון באמצעות השיטה create של משאב trainingPipeline.

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

  • LOCATION_ID: האזור של הפרויקט.
  • PROJECT_ID: מזהה הפרויקט.
  • TRAINING_PIPELINE_NAME: שדה חובה. שם תצוגה ל-trainingPipeline.
  • אם אפליקציית האימון משתמשת במערך נתונים של Agent Platform, צריך לציין את הפרטים הבאים:
    • DATASET_ID: מזהה קבוצת הנתונים.
    • ANNOTATIONS_FILTER: מסנן את מערך הנתונים לפי ההערות שאתם מציינים.
    • ANNOTATION_SCHEMA_URI: מסנן את מערך הנתונים לפי ה-URI של סכימת ההערות שצוין.
    • אפשר להשתמש באחת מהאפשרויות הבאות כדי לציין איך פריטי הנתונים יפוצלו לקבוצות אימון, אימות ובדיקה.
      • כדי לפצל את מערך הנתונים על סמך שברים שמגדירים את הגודל של כל קבוצה, מציינים את הפרטים הבאים:
        • TRAINING_FRACTION: החלק ממערך הנתונים שישמש לאימון המודל.
        • VALIDATION_FRACTION: השבר של מערך הנתונים שמשמש לאימות המודל.
        • TEST_FRACTION: החלק ממערך הנתונים שמשמש להערכת המודל.
      • כדי לפצל את מערך הנתונים על סמך מסננים, מציינים את הפרטים הבאים:
        • TRAINING_FILTER: מסנן את מערך הנתונים כדי להציג את פריטי הנתונים שישמשו לאימון המודל.
        • VALIDATION_FILTER: מסנן את מערך הנתונים כך שיכלול רק את פריטי הנתונים שישמשו לאימות המודל.
        • TEST_FILTER: מסנן את מערך הנתונים כך שיוצגו רק פריטי הנתונים שישמשו להערכת המודל.
      • כדי להשתמש בחלוקה מוגדרת מראש, מציינים את הפרטים הבאים:
        • PREDEFINED_SPLIT_KEY: שם העמודה שמשמשת לפיצול מערך הנתונים. הערכים הקבילים בעמודה הזו כוללים את הערכים training,‏ validation ו-test.
      • כדי לפצל את מערך הנתונים על סמך חותמת הזמן בפריטי הנתונים, מציינים את הפרטים הבאים:
        • TIMESTAMP_TRAINING_FRACTION: החלק ממערך הנתונים שישמש לאימון המודל.
        • TIMESTAMP_VALIDATION_FRACTION: החלק ממערך הנתונים שישמש לאימות המודל.
        • TIMESTAMP_TEST_FRACTION: החלק ממערך הנתונים שמשמש להערכת המודל.
        • TIMESTAMP_SPLIT_KEY: השם של עמודת חותמת הזמן שמשמשת לפיצול מערך הנתונים.
    • OUTPUT_URI_PREFIX: המיקום ב-Cloud Storage שאליו Agent Platform מייצאת את מערך נתוני האימון, אחרי שהוא פוצל למערכי אימון, אימות ובדיקה.
  • מציינים את משימת כוונון ההיפר-פרמטר:
    • מציינים את המדדים:
      • METRIC_ID: השם של המדד הזה.
      • METRIC_GOAL: היעד של המדד הזה. הערך יכול להיות MAXIMIZE או MINIMIZE.
    • מציינים את ההיפרפרמטרים:
      • PARAMETER_ID: השם של ההיפר-פרמטר הזה.
      • PARAMETER_SCALE: (אופציונלי). איך צריך לשנות את קנה המידה של הפרמטר. לא מגדירים את הערך לפרמטרים מסוג CATEGORICAL. יכול להיות UNIT_LINEAR_SCALE, UNIT_LOG_SCALE, UNIT_REVERSE_LOG_SCALE או SCALE_TYPE_UNSPECIFIED
      • אם סוג ההיפרפרמטר הזה הוא DOUBLE, מציינים את הערכים המינימלי (DOUBLE_MIN_VALUE) והמקסימלי (DOUBLE_MAX_VALUE) של ההיפרפרמטר הזה.
      • אם הסוג של ההיפרפרמטר הזה הוא INTEGER, מציינים את הערכים המינימלי (INTEGER_MIN_VALUE) והמקסימלי (INTEGER_MAX_VALUE) של ההיפרפרמטר הזה.
      • אם סוג ההיפרפרמטר הזה הוא CATEGORICAL, מציינים את הערכים הקבילים (CATEGORICAL_VALUES) כמערך של מחרוזות.
      • אם סוג ההיפרפרמטר הזה הוא DISCRETE, מציינים את הערכים הקבילים (DISCRETE_VALUES) כמערך של מספרים.
    • ALGORITHM: (אופציונלי). אלגוריתם החיפוש שבו יש להשתמש במשימת כוונון ההיפר-פרמטרים הזו. הערכים האפשריים הם: יכול להיות ALGORITHM_UNSPECIFIED, GRID_SEARCH או RANDOM_SEARCH.
    • MAX_TRIAL_COUNT: המספר המקסימלי של ניסויים להרצה במשימה הזו.
    • PARALLEL_TRIAL_COUNT: המספר המקסימלי של ניסויים שאפשר להריץ במקביל.
    • MAX_FAILED_TRIAL_COUNT: מספר המשימות שיכולות להיכשל לפני שמשימת כוונון ההיפר-פרמטר נכשלת.
    • מגדירים את משימת ההכשרה בהתאמה אישית לניסיון:
      • MACHINE_TYPE: סוג המכונה. אפשר לעיין בסוגי המכונות שזמינים לאימון.
      • ACCELERATOR_TYPE: (אופציונלי). סוג המאיץ לצירוף לכל תקופת ניסיון.
      • ACCELERATOR_COUNT: (אופציונלי). מספר המאיצים לצירוף לכל תקופת ניסיון.
      • REPLICA_COUNT: מספר העותקים המשוכפלים של העובדים שבהם יש להשתמש בכל ניסיון.
      • אם אפליקציית האימון פועלת בקונטיינר בהתאמה אישית, צריך לציין את הפרטים הבאים:
        • CUSTOM_CONTAINER_IMAGE_URI: ה-URI של קובץ אימג' בקונטיינר ב-Artifact Registry או ב-Docker Hub, שיופעל בכל עותק של העובד.
        • CUSTOM_CONTAINER_COMMAND: (אופציונלי). הפקודה שתופעל כשהקונטיינר יופעל. הפקודה הזו מבטלת את נקודת הכניסה שמוגדרת כברירת מחדל במאגר.
        • CUSTOM_CONTAINER_ARGS: (אופציונלי). הארגומנטים שיועברו כשמפעילים את הקונטיינר.
      • אם אפליקציית האימון היא חבילת Python שפועלת בקונטיינר מוכן מראש, מציינים את הפרטים הבאים:
        • PYTHON_PACKAGE_EXECUTOR_IMAGE_URI: ה-URI של קובץ אימג' של קונטיינר שמריץ את חבילת Python שצוינה. אפשר לעיין בקונטיינרים מוכנים מראש שזמינים לאימון.
        • PYTHON_PACKAGE_URIS: המיקום ב-Cloud Storage של קובצי חבילת Python, שהם תוכנית האימון והחבילות שתלויות בה. המספר המקסימלי של כתובות ה-URI של החבילות הוא 100.
        • PYTHON_MODULE: השם של מודול Python להפעלה אחרי התקנת החבילות.
        • PYTHON_PACKAGE_ARGS: (אופציונלי). ארגומנטים של שורת פקודה שיועברו למודול Python.
    • מידע נוסף על אפשרויות לתזמון משימות
    • TIMEOUT: (אופציונלי). זמן הריצה המקסימלי לכל תקופת ניסיון.
    • מציינים את התוויות LABEL_NAME ו-LABEL_VALUE שרוצים להחיל על משימת הכוונון של ההיפר-פרמטר.
  • MODEL_NAME: שם מוצג של המודל שהועלה (נוצר) על ידי TrainingPipeline.
  • MODEL_DESCRIPTION: אופציונלי. תיאור של המודל.
  • PREDICTION_IMAGE_URI: שדה חובה. מציינים אחת משתי האפשרויות הבאות:
  • modelToUpload.labels: אופציונלי. כל קבוצה של צמדי מפתח/ערך שמשמשת לארגון המודלים. לדוגמה:
    • ‪"env": "prod"
    • ‪"tier": "backend"
  • מציינים את התוויות LABEL_NAME ו-LABEL_VALUE שרוצים להחיל על צינור האימון הזה.

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

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/trainingPipelines

גוף בקשת JSON:

{
  "displayName": "TRAINING_PIPELINE_NAME",
  "inputDataConfig": {
    "datasetId": DATASET_ID,
    "annotationsFilter": ANNOTATIONS_FILTER,
    "annotationSchemaUri": ANNOTATION_SCHEMA_URI,

    // Union field split can be only one of the following:
    "fractionSplit": {
      "trainingFraction": TRAINING_FRACTION,
      "validationFraction": VALIDATION_FRACTION,
      "testFraction": TEST_FRACTION
    },
    "filterSplit": {
      "trainingFilter": TRAINING_FILTER,
      "validationFilter": VALIDATION_FILTER,
      "testFilter": TEST_FILTER
    },
    "predefinedSplit": {
      "key": PREDEFINED_SPLIT_KEY
    },
    "timestampSplit": {
      "trainingFraction": TIMESTAMP_TRAINING_FRACTION,
      "validationFraction": TIMESTAMP_VALIDATION_FRACTION,
      "testFraction": TIMESTAMP_TEST_FRACTION,
      "key": TIMESTAMP_SPLIT_KEY
    }
    // End of list of possible types for union field split.
    "gcsDestination": {
      "outputUriPrefix": OUTPUT_URI_PREFIX
    }
  },
  "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/hyperparameter_tuning_task_1.0.0.yaml",
  "trainingTaskInputs": {
    "studySpec": {
    "metrics": [
      {
        "metricId": METRIC_ID,
        "goal": METRIC_GOAL
      }
    ],
    "parameters": [
      {
        "parameterId": PARAMETER_ID,
        "scaleType": PARAMETER_SCALE,

        // Union field parameter_value_spec can be only one of the following:
        "doubleValueSpec": {
            "minValue": DOUBLE_MIN_VALUE,
            "maxValue": DOUBLE_MAX_VALUE
        },
        "integerValueSpec": {
            "minValue": INTEGER_MIN_VALUE,
            "maxValue": INTEGER_MAX_VALUE
        },
        "categoricalValueSpec": {
            "values": [
              CATEGORICAL_VALUES
            ]
        },
        "discreteValueSpec": {
            "values": [
              DISCRETE_VALUES
            ]
        }
        // End of list of possible types for union field parameter_value_spec.
      }
    ],
    "ALGORITHM": ALGORITHM
  },
  "maxTrialCount": MAX_TRIAL_COUNT,
  "parallelTrialCount": PARALLEL_TRIAL_COUNT,
  "maxFailedTrialCount": MAX_FAILED_TRIAL_COUNT,
  "trialJobSpec": {
      "workerPoolSpecs": [
        {
          "machineSpec": {
            "machineType": MACHINE_TYPE,
            "acceleratorType": ACCELERATOR_TYPE,
            "acceleratorCount": ACCELERATOR_COUNT
          },
          "replicaCount": REPLICA_COUNT,

          // Union field task can be only one of the following:
          "containerSpec": {
            "imageUri": CUSTOM_CONTAINER_IMAGE_URI,
            "command": [
              CUSTOM_CONTAINER_COMMAND
            ],
            "args": [
              CUSTOM_CONTAINER_ARGS
            ]
          },
          "pythonPackageSpec": {
            "executorImageUri": PYTHON_PACKAGE_EXECUTOR_IMAGE_URI,
            "packageUris": [
              PYTHON_PACKAGE_URIS
            ],
            "pythonModule": PYTHON_MODULE,
            "args": [
              PYTHON_PACKAGE_ARGS
            ]
          }
          // End of list of possible types for union field task.
        }
      ],
      "scheduling": {
        "TIMEOUT": TIMEOUT
      }
    },
    "labels": {
      LABEL_NAME_1": LABEL_VALUE_1,
      LABEL_NAME_2": LABEL_VALUE_2
    }
  },
  "modelToUpload": {
    "displayName": "MODEL_NAME",
    "description": "MODEL_DESCRIPTION",
    "predictSchemata": {},
    "containerSpec": {
      "imageUri": "PREDICTION_IMAGE_URI"
    }
  },
  "labels": {
    LABEL_NAME_1": LABEL_VALUE_1,
    LABEL_NAME_2": LABEL_VALUE_2
  }
}

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

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/trainingPipelines"

PowerShell

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/trainingPipelines" | Select-Object -Expand Content

התגובה מכילה מידע על המפרטים וגם על TRAININGPIPELINE_ID.

מעקב אחרי אימון

כדי לראות את יומני האימון:

  1. במסוף Google Cloud , בקטע Agent Platform, עוברים לדף Training.

    כניסה לדף Training

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

  3. לוחצים על הצגת יומנים.

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

צפייה במודל שאומן

אחרי שפייפליין האימון בלי שרת (serverless) מסתיים, אפשר למצוא את המודל שאומן במסוף Google Cloud , בקטע Agent Platform, בדף Models.

כניסה לדף Models

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