בדף הזה מוסבר איך לאמן מודל סיווג או רגרסיה מתוך מערך נתונים טבלאי באמצעות Google Cloud המסוף או Agent Platform API.
לפני שמתחילים
לפני שמבצעים אימון של מודל, צריך לבצע את הפעולות הבאות:
אימון מודל
מסוף Google Cloud
במסוף Google Cloud , בקטע Agent Platform, עוברים לדף Datasets.
לוחצים על שם מערך הנתונים שבו רוצים להשתמש כדי לאמן את המודל, כדי לפתוח את דף הפרטים שלו.
אם סוג הנתונים שלכם משתמש בקבוצות של הערות, בוחרים את קבוצת ההערות שרוצים להשתמש בה במודל הזה.
לוחצים על Train new model (אימון מודל חדש).
בוחרים באפשרות אחר.
בדף Train new model (אימון מודל חדש), מבצעים את הפעולות הבאות:
בוחרים את שיטת אימון המודל.
-
AutoMLהיא בחירה טובה למגוון רחב של תרחישי שימוש.
לוחצים על Continue.
-
מזינים את שם התצוגה של המודל החדש.
בוחרים את עמודת היעד.
עמודת היעד היא הערך שהמודל יחזה.
אופציונלי: כדי לייצא את מערך הנתונים של הבדיקה ל-BigQuery, מסמנים את התיבה ייצוא מערך נתוני הבדיקה ל-BigQuery ומזינים את שם הטבלה.
אופציונלי: כדי לבחור איך לפצל את הנתונים בין קבוצות האימון, הבדיקה והאימות, פותחים את האפשרויות המתקדמות. אפשר לבחור מבין האפשרויות הבאות לפיצול הנתונים:
- אקראי (ברירת מחדל): Agent Platform בוחרת באופן אקראי את השורות שמשויכות לכל אחת מקבוצות הנתונים. כברירת מחדל, Agent Platform בוחרת 80% משורות הנתונים שלכם לקבוצת נתונים לאימון, 10% לקבוצת נתונים לתיקוף ו-10% לקבוצת נתונים לבדיקה.
- ידני: Agent Platform בוחרת שורות נתונים לכל אחד ממערכי הנתונים על סמך הערכים בעמודה של פיצול הנתונים. מזינים את השם של העמודה לפיצול הנתונים.
- כרונולוגי: Agent Platform מפצלת את הנתונים על סמך חותמת הזמן בעמודת הזמן. מזינים את השם של עמודת הזמן.
לוחצים על Continue.
אופציונלי: לוחצים על יצירת סטטיסטיקות. יצירת נתונים סטטיסטיים מאכלסת את התפריטים הנפתחים של ההמרה.
בדף 'אפשרויות אימון', בודקים את רשימת העמודות ומוציאים מהאימון עמודות שלא אמורות לשמש לאימון המודל.
בודקים את השינויים שנבחרו לתכונות הכלולות, וגם אם מותרים נתונים לא תקינים, ומבצעים את העדכונים הנדרשים.
אם רוצים לציין עמודת משקל או לשנות את יעד האופטימיזציה מברירת המחדל, פותחים את האפשרויות המתקדמות ומבצעים את הבחירות הרצויות.
לוחצים על Continue.
בחלון Compute and pricing (חישוב ותמחור), מבצעים את ההגדרות הבאות:
מזינים את מספר השעות המקסימלי שרוצים לאמן את המודל.
ההגדרה הזו עוזרת לכם להגביל את עלויות האימון. הזמן שחלף בפועל יכול להיות ארוך יותר מהערך הזה, כי יש פעולות אחרות שקשורות ליצירת מודל חדש.
זמן האימון המומלץ קשור לגודל של נתוני האימון. בטבלה הבאה מוצגים טווחי הזמן המומלצים לאימון לפי מספר השורות. מספר גדול של עמודות יגדיל גם את הזמן הנדרש לאימון.
למידע על תמחור האימון, אפשר לעיין בדף התמחור.Rows הצעה לזמן אימון פחות מ-100,000 1-3 שעות 100,000-1,000,000 שעה עד 6 שעות 1,000,000 עד 10,000,000 שעה עד 12 שעות יותר מ-10,000,000 3-24 שעות לוחצים על התחלת ההדרכה.
אימון המודל יכול להימשך שעות רבות, בהתאם לגודל ולמורכבות של הנתונים ולתקציב האימון, אם ציינתם תקציב כזה. אפשר לסגור את הכרטיסייה הזו ולחזור אליה מאוחר יותר. תקבלו אימייל כשהאימון של המודל יסתיים.
API
בוחרים יעד של סוג נתונים טבלאי.
סיווג
בוחרים כרטיסייה לפי השפה או הסביבה:
REST
משתמשים בפקודה trainingPipelines.create כדי לאמן מודל.
מאמנים את המודל.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- LOCATION: האזור שלכם.
- PROJECT: מזהה הפרויקט.
- TRAININGPIPELINE_DISPLAY_NAME: השם המוצג של צינור העיבוד לאימון שנוצר עבור הפעולה הזו.
- TARGET_COLUMN: העמודה (הערך) שהמודל הזה אמור לחזות.
- WEIGHT_COLUMN: (אופציונלי) עמודת המשקל. מידע נוסף
- TRAINING_BUDGET: משך הזמן המקסימלי שבו רוצים שהמודל יתאמן, במילי-שעות שימוש בצומת (1,000 מילי-שעות שימוש בצומת שוות לשעת שימוש בצומת אחת).
- OPTIMIZATION_OBJECTIVE: נדרש רק אם לא רוצים את יעד האופטימיזציה שמוגדר כברירת מחדל לסוג החיזוי. מידע נוסף
- TRANSFORMATION_TYPE: סוג הטרנספורמציה מופיע בכל עמודה שמשמשת לאימון המודל. מידע נוסף
- COLUMN_NAME: שם העמודה עם סוג השינוי שצוין. צריך לציין כל עמודה שמשמשת לאימון המודל.
- MODEL_DISPLAY_NAME: השם המוצג של המודל החדש שאומן.
- DATASET_ID: מזהה של מערך הנתונים לאימון.
-
אתם יכולים לספק אובייקט
Splitכדי לשלוט בפיצול הנתונים. מידע על שליטה בפילוח הנתונים זמין במאמר שליטה בפילוח הנתונים באמצעות REST. - PROJECT_NUMBER: מספר הפרויקט שנוצר באופן אוטומטי
ה-method של ה-HTTP וכתובת ה-URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines
תוכן בקשת JSON:
{
"displayName": "TRAININGPIPELINE_DISPLAY_NAME",
"trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_tabular_1.0.0.yaml",
"trainingTaskInputs": {
"targetColumn": "TARGET_COLUMN",
"weightColumn": "WEIGHT_COLUMN",
"predictionType": "classification",
"trainBudgetMilliNodeHours": TRAINING_BUDGET,
"optimizationObjective": "OPTIMIZATION_OBJECTIVE",
"transformations": [
{"TRANSFORMATION_TYPE_1": {"column_name" : "COLUMN_NAME_1"} },
{"TRANSFORMATION_TYPE_2": {"column_name" : "COLUMN_NAME_2"} },
...
},
"modelToUpload": {"displayName": "MODEL_DISPLAY_NAME"},
"inputDataConfig": {
"datasetId": "DATASET_ID",
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/PROJECT_NUMBER/locations/us-central1/trainingPipelines/4567",
"displayName": "myModelName",
"trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_tabular_1.0.0.yaml",
"modelToUpload": {
"displayName": "myModelName"
},
"state": "PIPELINE_STATE_PENDING",
"createTime": "2020-08-18T01:22:57.479336Z",
"updateTime": "2020-08-18T01:22:57.479336Z"
}
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
משתמשים בפקודה trainingPipelines.create כדי לאמן מודל.
מאמנים את המודל.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- LOCATION: האזור שלכם.
- PROJECT: .
- TRAININGPIPELINE_DISPLAY_NAME: השם המוצג של צינור העיבוד לאימון שנוצר עבור הפעולה הזו.
- TARGET_COLUMN: העמודה (הערך) שהמודל הזה אמור לחזות.
- WEIGHT_COLUMN: (אופציונלי) עמודת המשקל. מידע נוסף
- TRAINING_BUDGET: משך הזמן המקסימלי שבו רוצים שהמודל יתאמן, במילי-שעות שימוש בצומת (1,000 מילי-שעות שימוש בצומת שוות לשעת שימוש בצומת אחת).
- OPTIMIZATION_OBJECTIVE: נדרש רק אם לא רוצים להשתמש ביעד האופטימיזציה שמוגדר כברירת מחדל לסוג החיזוי. מידע נוסף
- TRANSFORMATION_TYPE: סוג הטרנספורמציה מופיע בכל עמודה שמשמשת לאימון המודל. מידע נוסף
- COLUMN_NAME: שם העמודה עם סוג השינוי שצוין. צריך לציין כל עמודה שמשמשת לאימון המודל.
- MODEL_DISPLAY_NAME: השם המוצג של המודל החדש שאומן.
- DATASET_ID: מזהה של מערך הנתונים לאימון.
-
אתם יכולים לספק אובייקט
Splitכדי לשלוט בפיצול הנתונים. מידע על שליטה בפילוח הנתונים זמין במאמר שליטה בפילוח הנתונים באמצעות REST. - PROJECT_NUMBER: מספר הפרויקט שנוצר באופן אוטומטי
ה-method של ה-HTTP וכתובת ה-URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines
תוכן בקשת JSON:
{
"displayName": "TRAININGPIPELINE_DISPLAY_NAME",
"trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_tabular_1.0.0.yaml",
"trainingTaskInputs": {
"targetColumn": "TARGET_COLUMN",
"weightColumn": "WEIGHT_COLUMN",
"predictionType": "regression",
"trainBudgetMilliNodeHours": TRAINING_BUDGET,
"optimizationObjective": "OPTIMIZATION_OBJECTIVE",
"transformations": [
{"TRANSFORMATION_TYPE_1": {"column_name" : "COLUMN_NAME_1"} },
{"TRANSFORMATION_TYPE_2": {"column_name" : "COLUMN_NAME_2"} },
...
},
"modelToUpload": {"displayName": "MODEL_DISPLAY_NAME"},
"inputDataConfig": {
"datasetId": "DATASET_ID",
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/PROJECT_NUMBER/locations/us-central1/trainingPipelines/4567",
"displayName": "myModelName",
"trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_tabular_1.0.0.yaml",
"modelToUpload": {
"displayName": "myModelName"
},
"state": "PIPELINE_STATE_PENDING",
"createTime": "2020-08-18T01:22:57.479336Z",
"updateTime": "2020-08-18T01:22:57.479336Z"
}
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 באובייקט inputDataConfig כאחד מכמה סוגי אובייקטים, שכל אחד מהם מספק דרך שונה לפצל את נתוני האימון.
השיטות שבהן משתמשים כדי לפצל את הנתונים תלויות בסוג הנתונים:
FractionSplit:- TRAINING_FRACTION: החלק מנתוני האימון שישמשו לקבוצת נתונים לאימון.
- VALIDATION_FRACTION: השבר של נתוני האימון שייכללו בקבוצת הנתונים לתיקוף.
- TEST_FRACTION: החלק היחסי של נתוני האימון שמשמשים לקבוצת נתונים לבדיקה.
אם מציינים חלק מהשברים, צריך לציין את כולם. סכום השברים צריך להיות 1.0. מידע נוסף
"fractionSplit": { "trainingFraction": TRAINING_FRACTION, "validationFraction": VALIDATION_FRACTION, "testFraction": TEST_FRACTION },PredefinedSplit:- DATA_SPLIT_COLUMN: העמודה שמכילה את ערכי פיצול הנתונים (
TRAIN, VALIDATION, TEST).
מציינים ידנית את פיצול הנתונים לכל שורה באמצעות עמודת פיצול. מידע נוסף
"predefinedSplit": { "key": DATA_SPLIT_COLUMN },- DATA_SPLIT_COLUMN: העמודה שמכילה את ערכי פיצול הנתונים (
TimestampSplit:- TRAINING_FRACTION: אחוז נתוני האימון שישמשו לאימון. ברירת המחדל היא 0.80.
- VALIDATION_FRACTION: אחוז נתוני האימון שישמשו לקבוצת הנתונים לאימות. ברירת המחדל היא 0.10.
- TEST_FRACTION: אחוז נתוני האימון שישמשו לקבוצת נתונים לבדיקה. ברירת המחדל היא 0.10.
- TIME_COLUMN: העמודה שמכילה את חותמות הזמן.
אם מציינים חלק מהשברים, צריך לציין את כולם. השברים חייבים להסתכם ב-1.0. מידע נוסף
"timestampSplit": { "trainingFraction": TRAINING_FRACTION, "validationFraction": VALIDATION_FRACTION, "testFraction": TEST_FRACTION, "key": TIME_COLUMN }
יעדי אופטימיזציה למודלים של סיווג או רגרסיה
כשמאמנים מודל, Agent Platform בוחר יעד אופטימיזציה שמוגדר כברירת מחדל על סמך סוג המודל וסוג הנתונים שמשמשים לעמודת היעד.
מודלים של סיווג מתאימים במיוחד למקרים הבאים:| יעד האופטימיזציה | ערך API | כדאי להשתמש ביעד הזה אם רוצים… |
|---|---|---|
| AUC ROC | maximize-au-roc |
מקסום השטח מתחת לעקומת מאפייני ההפעלה של המקלט (ROC). מבדיל בין כיתות. ערך ברירת המחדל לסיווג בינארי. |
| אובדן לוגריתמי | minimize-log-loss |
לשמור על רמת דיוק גבוהה ככל האפשר בהסתברויות של ההסקות. היעד היחיד שנתמך לסיווג לכמה כיתות. |
| AUC PR | maximize-au-prc |
מגדילים את השטח מתחת לעקומת הדיוק וההחזרה. מבצע אופטימיזציה של התוצאות להסקת מסקנות לגבי הסיווג הפחות נפוץ. |
| Precision at Recall | maximize-precision-at-recall |
אופטימיזציה של הדיוק בערך ספציפי של ההחזרה. |
| Recall at Precision | maximize-recall-at-precision |
אופטימיזציה של ההחזרה ברמת דיוק ספציפית. |
| יעד האופטימיזציה | ערך API | כדאי להשתמש ביעד הזה אם רוצים… |
|---|---|---|
| RMSE | minimize-rmse |
ממזערים את שורש הטעות הריבועית הממוצעת (RMSE). מציג ערכים קיצוניים בצורה מדויקת יותר. ערך ברירת המחדל. |
| MAE | minimize-mae |
ממזערים את השגיאה הממוצעת המוחלטת (MAE). המודל מתייחס לערכים קיצוניים כאל חריגים, ולכן הם משפיעים עליו פחות. |
| RMSLE | minimize-rmsle |
מזעור שורש טעות ריבועית ממוצעת של לוגריתם (RMSLE). העונש על שגיאה בגודל יחסי ולא בערך מוחלט. הפונקציה שימושית כשגם הערכים החזויים וגם הערכים בפועל יכולים להיות גדולים מאוד. |