בדף הזה מוסבר איך לאמן מודל לזיהוי אובייקטים ב-AutoML מתוך מערך נתונים של תמונות באמצעות Google Cloud המסוף או Agent Platform API.
אימון מודל AutoML
מסוף Google Cloud
במסוף Google Cloud , בקטע Agent Platform, עוברים לדף Datasets.
לוחצים על שם מערך הנתונים שבו רוצים להשתמש כדי לאמן את המודל, כדי לפתוח את דף הפרטים שלו.
לוחצים על Train new model (אימון מודל חדש).
בקטע 'שיטת האימון', בוחרים באפשרות AutoML.
בקטע Choose where to use the model (בחירת המקום לשימוש במודל), בוחרים את המיקום של מארח המודל: Cloud (ענן), Edge (קצה) או Agent Platform Vision (פלטפורמת סוכנים לראייה).
לוחצים על Continue.
מזינים שם למודל.
אם רוצים להגדיר ידנית איך נתוני האימון יפוצלו, מרחיבים את האפשרויות המתקדמות ובוחרים אפשרות לפיצול הנתונים. מידע נוסף זמין במאמר מידע על פיצול נתונים למודלים של AutoML.
לוחצים על התחלת ההדרכה.
אימון המודל יכול להימשך שעות רבות, בהתאם לגודל ולמורכבות של הנתונים ולתקציב האימון, אם ציינתם תקציב כזה. אפשר לסגור את הכרטיסייה הזו ולחזור אליה מאוחר יותר. תקבלו אימייל כשהאימון של המודל יסתיים.
API
בוחרים את הכרטיסייה של השפה או הסביבה שלכם:
REST
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- LOCATION: האזור שבו נמצא מערך הנתונים והמודל נוצר. לדוגמה:
us-central1. - PROJECT: מזהה הפרויקט.
- TRAININGPIPELINE_DISPLAYNAME: שדה חובה. שם תצוגה ל-trainingPipeline.
- DATASET_ID: מספר המזהה של מערך הנתונים שמשמש לאימון.
-
fractionSplit: אופציונלי. אחת מתוך כמה אפשרויות לשימוש בלמידת מכונה (ML) בנתונים שלכם. במקרה שלfractionSplit, סכום הערכים צריך להיות 1. לדוגמה:-
{"trainingFraction": "0.7","validationFraction": "0.15","testFraction": "0.15"}
-
- MODEL_DISPLAYNAME*: שם מוצג של המודל שהועלה (נוצר) על ידי TrainingPipeline.
- MODEL_DESCRIPTION*: תיאור של המודל.
- modelToUpload.labels*: כל קבוצה של זוגות מפתח/ערך לארגון המודלים. לדוגמה:
- "env": "prod"
- "tier": "backend"
- MODELTYPE†: סוג המודל שמתארח בענן לאימון. האפשרויות הן:
-
CLOUD_1– מודל שמותאם לשימוש ב-Google Cloud, ואי אפשר לייצא אותו. בהשוואה למודלים CLOUD_HIGH_ACCURACY_1 ו-CLOUD_LOW_LATENCY_1 שצוינו למעלה, צפוי שהמודל הזה יספק איכות חיזוי גבוהה יותר וזמן אחזור נמוך יותר. -
CLOUD_HIGH_ACCURACY_1– מודל שמותאם לשימוש ב-Google Cloud, ואי אפשר לייצא אותו. למודל הזה צפוי זמן אחזור ארוך יותר, אבל גם איכות חיזוי גבוהה יותר בהשוואה למודלים אחרים בענן. -
CLOUD_LOW_LATENCY_1– מודל שמתאים במיוחד לשימוש ב-Google Cloud, ולא ניתן לייצא אותו. המודל הזה צפוי להיות בעל זמן אחזור נמוך, אבל יכול להיות שאיכות התחזיות שלו תהיה נמוכה יותר מזו של מודלים אחרים בענן.
-
- NODE_HOUR_BUDGET†: עלות האימון בפועל תהיה שווה לערך הזה או נמוכה ממנו. במודלים של Cloud, התקציב צריך להיות בין 20,000 ל-900,000 מילי-שעות של צומת (כולל). ערך ברירת המחדל הוא 216,000, שמייצג יום אחד בזמן בפועל, בהנחה שנעשה שימוש ב-9 צמתים.
- PROJECT_NUMBER: מספר הפרויקט שנוצר באופן אוטומטי
| * | התיאור של קובץ הסכימה שציינתם ב-trainingTaskDefinition מתאר את השימוש בשדה הזה. |
| † | קובץ הסכימה שציינתם ב-trainingTaskDefinition מכריז על השדה הזה ומתאר אותו. |
ה-method של ה-HTTP וכתובת ה-URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines
גוף בקשת JSON:
{
"displayName": "TRAININGPIPELINE_DISPLAYNAME",
"inputDataConfig": {
"datasetId": "DATASET_ID",
"fractionSplit": {
"trainingFraction": "DECIMAL",
"validationFraction": "DECIMAL",
"testFraction": "DECIMAL"
}
},
"modelToUpload": {
"displayName": "MODEL_DISPLAYNAME",
"description": "MODEL_DESCRIPTION",
"labels": {
"KEY": "VALUE"
}
},
"trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_image_object_detection_1.0.0.yaml",
"trainingTaskInputs": {
"modelType": ["MODELTYPE"],
"budgetMilliNodeHours": NODE_HOUR_BUDGET
}
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
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-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/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-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines" | Select-Object -Expand Content
התשובה מכילה מידע על המפרטים וגם על TRAININGPIPELINE_ID.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaההוראות להגדרה במאמר מדריך למתחילים של Agent Platform באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Agent Platform Java API.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Node.jsההוראות להגדרה במאמר מדריך למתחילים של Agent Platform באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Agent Platform Node.js API.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Python
במאמר התקנת Vertex AI SDK ל-Python מוסבר איך להתקין או לעדכן את Vertex AI SDK ל-Python. מידע נוסף מופיע ב מאמרי העזרה של Python API.
שליטה בפיצול הנתונים באמצעות REST
אתם יכולים לשלוט באופן שבו נתוני האימון מחולקים בין קבוצות האימון, האימות והבדיקה. כשמשתמשים ב-Agent Platform API, משתמשים באובייקט Split כדי לקבוע את חלוקת הנתונים. אפשר לכלול את האובייקט Split באובייקט InputConfig כאחד מכמה סוגי אובייקטים, שכל אחד מהם מספק דרך שונה לפצל את נתוני האימון. אפשר לבחור רק שיטה אחת.
-
FractionSplit:- TRAINING_FRACTION: השבר של נתוני האימון שישמשו לקבוצת נתונים לאימון.
- VALIDATION_FRACTION: השבר של נתוני האימון שישמשו לקבוצת נתונים לתיקוף. לא משמש לנתוני סרטונים.
- TEST_FRACTION: החלק מנתוני האימון שישמשו לקבוצת נתונים לבדיקה.
אם מציינים אחד מהשברים, צריך לציין את כולם. השברים צריכים להסתכם ב-1.0. ערכי ברירת המחדל של השברים משתנים בהתאם לסוג הנתונים. מידע נוסף
"fractionSplit": { "trainingFraction": TRAINING_FRACTION, "validationFraction": VALIDATION_FRACTION, "testFraction": TEST_FRACTION }, -
FilterSplit: - TRAINING_FILTER: פריטי נתונים שתואמים למסנן הזה משמשים לקבוצת נתונים לאימון.
- VALIDATION_FILTER: פריטי נתונים שתואמים למסנן הזה משמשים לקבוצת נתונים לתיקוף. הערך חייב להיות '-' לנתוני סרטונים.
- TEST_FILTER: פריטי נתונים שתואמים למסנן הזה משמשים לקבוצת נתונים לבדיקה.
אפשר להשתמש במסננים האלה עם התווית ml_use או עם כל תוויות אחרות שאתם מוסיפים לנתונים. מידע נוסף על שימוש בתווית ml-use ובתוויות אחרות לסינון הנתונים
בדוגמה הבאה אפשר לראות איך משתמשים באובייקט filterSplit
עם התווית ml_use, עם קבוצת האימות שמוגדרת:
"filterSplit": {
"trainingFilter": "labels.aiplatform.googleapis.com/ml_use=training",
"validationFilter": "labels.aiplatform.googleapis.com/ml_use=validation",
"testFilter": "labels.aiplatform.googleapis.com/ml_use=test"
}