צינורות עיבוד נתונים לאימון מאפשרים לכם לבצע אימון מותאם אישית של למידת מכונה (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 צריכה כדי להריץ את קוד ההדרכה, כולל:
- מאגר worker אחד
לאימון של צומת יחיד (
WorkerPoolSpec), או כמה מאגרי worker לאימון מבוזר - הגדרות אופציונליות להגדרת תזמון של עבודות (
Scheduling), הגדרת משתני סביבה מסוימים לקוד האימון, שימוש בחשבון שירות בהתאמה אישית ושימוש ב-VPC Network Peering
במאגרי העובדים אפשר לציין את ההגדרות הבאות:
- סוגי מכונות ומאיצים
- הגדרה של סוג קוד ההדרכה שמאגר העובדים מריץ: אפליקציית הדרכה של Python (
PythonPackageSpec) או קונטיינר בהתאמה אישית (ContainerSpec)
אם רוצים ליצור משימה מותאמת אישית עצמאית מחוץ לצינור של Vertex AI Training, אפשר לעיין במדריך בנושא משימות בהתאמה אישית.
הגדרת צינור עיבוד הנתונים לשימוש במערך נתונים מנוהל
בפייפליין האימון, אפשר להגדיר את משימת האימון בלי שרת (serverless) או את משימת הכוונון של היפר-פרמטרים כך שישתמשו במערך נתונים מנוהל. מערכי נתונים מנוהלים מאפשרים לכם לנהל את מערכי הנתונים באמצעות אפליקציות האימון והמודלים שלכם.
כדי להשתמש במערך נתונים מנוהל בצינור האימון:
- יוצרים את מערך הנתונים.
- מעדכנים את אפליקציית האימון כך שתשתמש במערך נתונים מנוהל. מידע נוסף זמין במאמר בנושא איך Agent Platform מעבירה את מערך הנתונים לאפליקציית האימון.
מציינים מערך נתונים מנוהל כשיוצרים את צינור האימון. לדוגמה, אם יוצרים את פייפליין האימון באמצעות API בארכיטקטורת REST, צריך לציין את הגדרות קבוצת הנתונים בקטע
inputDataConfig.צריך ליצור את צינור האימון באותו אזור שבו יצרתם את מערך הנתונים.
מידע נוסף זמין במאמר בנושא הפניית API ב-TrainingPipeline.
הגדרת אימון מבוזר
בפייפליין ההדרכה, אפשר להגדיר את משימת ההדרכה בלי שרת (serverless) או את משימת הכוונון של היפר-פרמטרים להדרכה מבוזרת על ידי ציון של כמה מאגרי worker.
כל הדוגמאות בדף הזה מציגות משימות אימון עם רפליקה אחת ועם worker pool אחד. כדי לשנות אותן לאימון מבוזר:
- משתמשים במאגר העובדים הראשון כדי להגדיר את העותק הראשי, ומגדירים את מספר העותקים ל-1.
- אפשר להוסיף עוד מאגרי עובדים כדי להגדיר רפליקות של עובדים, רפליקות של שרת פרמטרים או רפליקות של מעריך, אם מסגרת למידת המכונה תומכת במשימות נוספות של אשכולות לאימון מבוזר.
מידע נוסף על שימוש באימון מבוזר
העלאה של מודל ושל CustomJob
צינור ההדרכה הזה כולל משימה בהתאמה אישית עם שלב נוסף שנועד להקל על פריסת המודל ב-Agent Platform אחרי ההדרכה. צינור ההכשרה הזה מבצע שני דברים עיקריים:
צינור עיבוד הנתונים של האימון יוצר משאב
CustomJob. המשימה בהתאמה אישית מפעילה את אפליקציית האימון באמצעות משאבי המחשוב שאתם מציינים.אחרי שהמשימה המותאמת אישית מסתיימת, צינור האימון מוצא את ארטיפקטים של המודל שנוצרו על ידי אפליקציית האימון בספריית הפלט שציינתם עבור קטגוריה של Cloud Storage. הוא משתמש בארטיפקטים האלה כדי ליצור משאב מודל, שמאפשר פריסת מודל.
יש שתי דרכים שונות להגדיר את המיקום של ארטיפקטים של מודלים:
אם הגדרתם
baseOutputDirectoryלמשימת האימון, ודאו שקוד האימון שומר את ארטיפקטים של המודל במיקום הזה באמצעות משתנה הסביבה$AIP_MODEL_DIRשהוגדר על ידי Agent Platform. אחרי שמשימת האימון מסתיימת, Agent Platform מחפש את ארטיפקטי המודל שנוצרו ב-gs://BASE_OUTPUT_DIRECTORY/model.אם מגדירים את השדה
modelToUpload.artifactUri, צינור ההדרכה מעלה את ארטיפקטים של המודל מה-URI הזה. חובה להגדיר את השדה הזה אם לא הגדרתם אתbaseOutputDirectory.
אם מציינים גם את baseOutputDirectory וגם את modelToUpload.artifactUri, פלטפורמת הסוכן משתמשת ב-modelToUpload.artifactUri.
כדי ליצור צינור אימונים מהסוג הזה:
המסוף
במסוף Google Cloud , בקטע Agent Platform, עוברים לדף Training pipelines.
לוחצים על יצירה כדי לפתוח את החלונית אימון מודל חדש.
בשלב שיטת האימון, מציינים את ההגדרות הבאות:
אם רוצים להשתמש במערך נתונים מנוהל לאימון, צריך לציין Dataset ו-Annotation set.
אחרת, בתפריט הנפתח מערך נתונים, בוחרים באפשרות אין מערך נתונים מנוהל.
בוחרים באפשרות אימון מותאם אישית (מתקדם).
לוחצים על Continue.
בשלב פרטי המודל, בוחרים באפשרות אימון מודל חדש או אימון גרסה חדשה. אם בוחרים באפשרות 'אימון מודל חדש', מזינים שם לבחירה, MODEL_NAME, למודל. לוחצים על המשך.
בשלב Training container (מאגר תגים לאימון), מציינים את ההגדרות הבאות:
בוחרים אם להשתמש במאגר תגים מוכן מראש או במאגר תגים בהתאמה אישית להדרכה.
בהתאם לבחירה, מבצעים אחת מהפעולות הבאות:
אם רוצים להשתמש בקונטיינר מוכן מראש לאימון, צריך לספק ל-Agent Platform את המידע הדרוש כדי להשתמש בחבילת האימון שהעליתם ל-Cloud Storage:
משתמשים בתפריטים הנפתחים Model framework (מסגרת מודל) ו-Model framework version (גרסת מסגרת המודל) כדי לציין את מאגר התגים המובנה שבו רוצים להשתמש.
בשדה Package location (מיקום החבילה), מציינים את ה-URI של Cloud Storage של אפליקציית האימון של Python שיצרתם והעליתם. הקובץ הזה בדרך כלל מסתיים ב-
.tar.gz.בשדה Python module [מודול Python], מזינים את שם המודול של נקודת הכניסה של אפליקציית האימון.
אם רוצים להשתמש בקונטיינר בהתאמה אישית לאימון, בשדה Container image מציינים את ה-URI של קובץ האימג' של הקונטיינר ב-Artifact Registry או ב-Docker Hub.
בשדה Model output directory (ספריית פלט של המודל), מציינים את ה-URI של Cloud Storage של ספרייה בקטגוריה שיש לכם גישה אליה. הספרייה לא צריכה להתקיים עדיין.
הערך הזה מועבר ל-Agent Platform בשדה
baseOutputDirectoryAPI, שמגדיר כמה משתני סביבה שהאפליקציה להדרכה יכולה לגשת אליהם כשהיא פועלת.בסיום האימון, Agent Platform מחפש model artifacts בספריית משנה של ה-URI הזה כדי ליצור
Model. (ספריית המשנה הזו זמינה לקוד האימון שלכם כמשתנה הסביבהAIP_MODEL_DIR).כשלא משתמשים בכוונון היפרפרמטרים, פלטפורמת הסוכנים מצפה למצוא ארטיפקטים של מודלים ב-
BASE_OUTPUT_DIRECTORY/model/.אופציונלי: בשדה Arguments (ארגומנטים), אפשר לציין ארגומנטים לשימוש ב-Agent Platform כשהיא מתחילה להריץ את קוד האימון. האורך המקסימלי של כל הארגומנטים ביחד הוא 100,000 תווים. ההתנהגות של הארגומנטים האלה שונה בהתאם לסוג מאגר התגים שבו אתם משתמשים:
אם אתם משתמשים במאגר מוכן מראש, Agent Platform מעביר את הארגומנטים כדגלים של שורת הפקודה אל מודול Python.
אם אתם משתמשים במאגר תגים בהתאמה אישית, Agent Platform מבטל את ההוראה
CMDבמאגר התגים שלכם באמצעות הארגומנטים.
לוחצים על Continue.
בשלב Hyperparameter tuning (התאמת היפרפרמטרים), מוודאים שהתיבה Enable hyperparameter tuning (הפעלת התאמת היפרפרמטרים) לא מסומנת. לוחצים על המשך.
בשלב Compute and pricing (חישוב ותמחור), מציינים את ההגדרות הבאות:
בתפריט הנפתח Region, בוחרים באפשרות region that supports custom training (אזור שתומך באימון מותאם אישית).
בקטע Worker pool 0, מציינים את משאבי המחשוב שבהם רוצים להשתמש לאימון.
אם מציינים מאיצים, צריך לוודא שסוג המאיץ שנבחר זמין באזור שנבחר.
אם רוצים לבצע אימון מבוזר, לוחצים על Add more worker pools (הוספת עוד מאגרי עובדים) ומציינים קבוצה נוספת של משאבי מחשוב לכל מאגר עובדים נוסף שרוצים להוסיף.
לוחצים על Continue.
בשלב Prediction container (מאגר תגים לחיזוי), מציינים את ההגדרות הבאות:
בוחרים אם להשתמש בקונטיינר מוכן מראש או בקונטיינר בהתאמה אישית כדי להציג תחזיות מהמודל שאומן.
בהתאם לבחירה, מבצעים אחת מהפעולות הבאות:
אם רוצים להשתמש במאגר תגים מוכן מראש כדי להציג תחזיות, צריך להשתמש בשדות Model framework, Model framework version ו-Accelerator type כדי לבחור באיזה מאגר תגים מוכן מראש של תחזיות להשתמש.
התאימו את מסגרת המודל ואת גרסת מסגרת המודל למסגרת למידת המכונה שבה השתמשתם לאימון. מציינים סוג של מאיץ רק אם רוצים להשתמש בהמשך במעבדי GPU לחיזויים אונליין או לחיזויים באצווה.
אם רוצים להשתמש במאגר תגים בהתאמה אישית כדי להציג תחזיות, צריך לבצע את הפעולות הבאות:
בשדה Container image (קובץ אימג' של קונטיינר), מציינים את ה-URI של קובץ האימג' של הקונטיינר ב-Artifact Registry.
אפשר גם לציין פקודה כדי לשנות את ההוראה
ENTRYPOINTשל הקונטיינר.
השדה Model directory מכיל את הערך שהגדרתם קודם בשדה Model output directory בשלב Training container. השינוי בשני השדות האלה משפיע באותו אופן. מידע נוסף על השדה הזה מופיע בהוראות הקודמות.
משאירים את השדות בקטע Predict schemata (תכנון סכמות לחיזוי) ריקים.
כדי להפעיל את פייפליין האימון בלי שרת (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. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
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.
Script
בדוגמה הבאה נעשה שימוש בCustomTrainingJobclass.
מאגר תגים בהתאמה אישית
בדוגמה הבאה נעשה שימוש בCustomContainerTrainingJobclass.
משימת כוונון של היפר-פרמטרים והעלאת מודל
צינור האימון הזה כולל משימת כוונון של היפר-פרמטרים עם שלב נוסף שנועד להקל על פריסת המודל ב-Agent Platform אחרי האימון. צינור ההכשרה הזה מבצע שני דברים עיקריים:
צינור האימון יוצר משאב של משימת כוונון של היפר-פרמטרים. משימת כוונון של היפר-פרמטר יוצרת כמה ניסויים. בכל ניסיון, משימה מותאמת אישית מריצה את אפליקציית האימון באמצעות משאבי המחשוב וההיפרפרמטרים שאתם מציינים.
אחרי שמשימת ההתאמה של ההיפר-פרמטרים מסתיימת, צינור ההכשרה מוצא את ארטיפקטי המודל מהניסיון הטוב ביותר, בספריית הפלט (
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: שדה חובה. מציינים אחת משתי האפשרויות הבאות:
- ה-URI של התמונה של הקונטיינר שנבנה מראש לשימוש לצורך חיזוי, כמו tf2-cpu.2-1:latest.
- ה-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.
מעקב אחרי אימון
כדי לראות את יומני האימון:
במסוף Google Cloud , בקטע Agent Platform, עוברים לדף Training.
לוחצים על שם המשרה כדי לעבור לדף המשרה המותאמת אישית.
לוחצים על הצגת יומנים.
אפשר גם להשתמש במעטפת אינטראקטיבית כדי לבדוק את קונטיינרי האימון בזמן שצינור האימון פועל.
צפייה במודל שאומן
אחרי שפייפליין האימון בלי שרת (serverless) מסתיים, אפשר למצוא את המודל שאומן במסוף Google Cloud , בקטע Agent Platform, בדף Models.
המאמרים הבאים
- Cloud Profiler עוזר לכם לזהות צווארי בקבוק בביצועי האימון כדי לאמן מודלים מהר יותר ובעלות נמוכה יותר.
- פורסים את המודל בנקודת קצה.
- יוצרים משימת כוונון של היפר-פרמטר.
- איך מתזמנים משימות אימון ללא שרתים על סמך זמינות המשאבים