בדף הזה מוסבר איך לאמן מודל סיווג או רגרסיה מתוך מערך נתונים טבלאי באמצעות מסוף Google Cloud או Vertex AI API.
לפני שמתחילים
לפני שמבצעים אימון של מודל, צריך לבצע את הפעולות הבאות:
אימון מודל
מסוף Google Cloud
במסוף Google Cloud , בקטע Vertex AI, עוברים לדף Datasets.
לוחצים על שם מערך הנתונים שבו רוצים להשתמש כדי לאמן את המודל, כדי לפתוח את דף הפרטים שלו.
אם סוג הנתונים שלכם משתמש בקבוצות של הערות, בוחרים את קבוצת ההערות שרוצים להשתמש בה במודל הזה.
לוחצים על Train new model (אימון מודל חדש).
בוחרים באפשרות אחר.
בדף Train new model (אימון מודל חדש), מבצעים את הפעולות הבאות:
בוחרים את שיטת אימון המודל.
-
AutoMLהוא בחירה טובה למגוון רחב של תרחישי שימוש.
לוחצים על Continue.
-
מזינים את שם התצוגה של המודל החדש.
בוחרים את עמודת היעד.
עמודת היעד היא הערך שהמודל יחזה.
אופציונלי: כדי לייצא את מערך הנתונים של הבדיקה ל-BigQuery, מסמנים את התיבה ייצוא מערך הנתונים של הבדיקה ל-BigQuery ומזינים את שם הטבלה.
אופציונלי: כדי לבחור איך לפצל את הנתונים בין קבוצות האימון, הבדיקה והאימות, פותחים את האפשרויות המתקדמות. אפשר לבחור מבין האפשרויות הבאות לפיצול הנתונים:
- Random (אקראי) (ברירת מחדל): Vertex AI בוחר באופן אקראי את השורות שמשויכות לכל אחד ממערכי הנתונים. כברירת מחדל, מערכת Vertex AI בוחרת 80% משורות הנתונים שלכם עבור קבוצת נתונים לאימון, 10% עבור קבוצת נתונים לתיקוף ו-10% עבור קבוצת נתונים לבדיקה.
- ידני: מערכת Vertex AI בוחרת שורות נתונים לכל אחד ממערכי הנתונים על סמך הערכים בעמודה של פיצול הנתונים. מזינים את השם של העמודה לפיצול הנתונים.
- כרונולוגי: מערכת Vertex AI מפצלת את הנתונים על סמך חותמת הזמן בעמודת זמן. מזינים את השם של עמודת הזמן.
לוחצים על Continue.
אופציונלי: לוחצים על יצירת נתונים סטטיסטיים. יצירת נתונים סטטיסטיים מאכלסת את התפריטים הנפתחים Transformation.
בדף 'אפשרויות אימון', בודקים את רשימת העמודות ומוציאים מהאימון עמודות שלא אמורות לשמש לאימון המודל.
בודקים את השינויים שנבחרו לתכונות הכלולות, וגם אם מותר להשתמש בנתונים לא תקינים, ומבצעים את העדכונים הנדרשים.
אם רוצים לציין עמודת משקל או לשנות את יעד האופטימיזציה מברירת המחדל, פותחים את האפשרויות המתקדמות ומבצעים את הבחירות הרצויות.
לוחצים על Continue.
בחלון Compute and pricing (חישוב ותמחור), מבצעים את ההגדרות הבאות:
מזינים את מספר השעות המקסימלי שרוצים לאמן את המודל.
ההגדרה הזו עוזרת לכם להגביל את עלויות ההדרכה. הזמן שחלף בפועל יכול להיות ארוך יותר מהערך הזה, כי יש פעולות אחרות שקשורות ליצירת מודל חדש.
זמן האימון המומלץ קשור לגודל של נתוני האימון. בטבלה הבאה מוצגים טווחי הזמן המומלצים לאימון לפי מספר השורות. מספר גדול של עמודות יגדיל גם את הזמן הנדרש לאימון.
מידע על תמחור האימון מופיע בדף התמחור.Rows הצעה לזמן הדרכה פחות מ-100,000 שעה עד 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הוראות ההגדרה במאמר Vertex AI quickstart using client libraries. מידע נוסף מופיע במאמרי העזרה של Vertex AI Java API.
כדי לבצע אימות ב-Vertex AI, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Node.jsהוראות ההגדרה במאמר Vertex AI quickstart using client libraries. מידע נוסף מופיע במאמרי העזרה של Vertex AI Node.js API.
כדי לבצע אימות ב-Vertex AI, צריך להגדיר את 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הוראות ההגדרה במאמר Vertex AI quickstart using client libraries. מידע נוסף מופיע במאמרי העזרה של Vertex AI Java API.
כדי לבצע אימות ב-Vertex AI, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Node.jsהוראות ההגדרה במאמר Vertex AI quickstart using client libraries. מידע נוסף מופיע במאמרי העזרה של Vertex AI Node.js API.
כדי לבצע אימות ב-Vertex AI, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Python
במאמר התקנת Vertex AI SDK ל-Python מוסבר איך להתקין או לעדכן את Vertex AI SDK ל-Python. מידע נוסף מופיע ב מאמרי העזרה של Python API.
שליטה בפיצול הנתונים באמצעות REST
אתם יכולים לשלוט באופן שבו נתוני האימון מחולקים בין קבוצות האימון, האימות והבדיקה. כשמשתמשים ב-Vertex AI 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 }
יעדי אופטימיזציה למודלים של סיווג או רגרסיה
כשמאמנים מודל, מערכת Vertex AI בוחרת יעד אופטימיזציה שמוגדר כברירת מחדל על סמך סוג המודל וסוג הנתונים שמשמשים לעמודת היעד.
מודלים של סיווג מתאימים במיוחד למקרים הבאים:| יעד האופטימיזציה | ערך API | כדאי להשתמש ביעד הזה אם רוצים… |
|---|---|---|
| AUC ROC | maximize-au-roc |
מקסום השטח מתחת לעקומת מאפייני ההפעלה של המקלט (ROC). מבחין בין מחלקות. ערך ברירת המחדל לסיווג בינארי. |
| אובדן לוגריתמי | minimize-log-loss |
לשמור על רמת דיוק גבוהה ככל האפשר בהסתברויות של ההסקות. היעד היחיד שנתמך לסיווג לכמה כיתות. |
| AUC PR | maximize-au-prc |
מגדילים את השטח מתחת לעקומת הדיוק וההחזרה. מבצע אופטימיזציה של התוצאות להסקת מסקנות לגבי הסיווג הפחות נפוץ. |
| Precision at Recall | maximize-precision-at-recall |
אופטימיזציה של הדיוק בערך ספציפי של היענות. |
| ריקול ברמת דיוק | maximize-recall-at-precision |
אופטימיזציה של ההחזרה ברמת דיוק ספציפית. |
| יעד האופטימיזציה | ערך API | כדאי להשתמש ביעד הזה אם רוצים… |
|---|---|---|
| RMSE | minimize-rmse |
ממזערים את שורש הטעות הריבועית הממוצעת (RMSE). מציג ערכים קיצוניים בצורה מדויקת יותר. ערך ברירת המחדל. |
| MAE | minimize-mae |
ממזערים את השגיאה הממוצעת המוחלטת (MAE). המודל מתייחס לערכים קיצוניים כאל חריגים עם השפעה נמוכה יותר. |
| RMSLE | minimize-rmsle |
מזעור שורש טעות ריבועית ממוצעת של לוגריתם (RMSLE). העונש ניתן על שגיאה בגודל יחסי ולא על שגיאה בערך מוחלט. המדד הזה שימושי כשגם הערכים החזויים וגם הערכים בפועל יכולים להיות גדולים מאוד. |