בדף הזה נסביר איך לאמן מודל לחיזוי מנתונים בפורמט טבלאי באמצעות Google Cloud המסוף או Vertex AI API.
לפני שמתחילים
לפני שמאמנים מודל לחיזוי, צריך לבצע את הפעולות הבאות:
אימון מודל
מסוף Google Cloud
במסוף Google Cloud , בקטע Vertex AI, עוברים לדף Datasets.
לוחצים על שם מערך הנתונים שבו רוצים להשתמש כדי לאמן את המודל, כדי לפתוח את דף הפרטים שלו.
אם סוג הנתונים שלכם משתמש בקבוצות של הערות, בוחרים את קבוצת ההערות שרוצים להשתמש בה במודל הזה.
לוחצים על Train new model (אימון מודל חדש).
בוחרים באפשרות אחר.
בדף Training method, קובעים את ההגדרות הבאות:
בוחרים את שיטת אימון המודל. מידע נוסף זמין במאמר בנושא שיטות לאימון מודלים.
לוחצים על Continue.
בדף פרטי המודל, מגדירים את האפשרויות הבאות:
מזינים את שם התצוגה של המודל החדש.
בוחרים את עמודת היעד.
עמודת היעד היא הערך שהמודל יחזה. מידע נוסף על הדרישות לגבי עמודת היעד
אם לא הגדרתם את מזהה הסדרה ואת החותמת לציון התאריך והשעה במערך הנתונים, עכשיו הזמן לעשות זאת.
בוחרים את רמת הפירוט של הנתונים. בוחרים באפשרות
Dailyאם רוצים להשתמש במודלים של אפקטים של חגים. איך בוחרים את רמת הפירוט של הנתוניםאופציונלי: בתפריט הנפתח Holiday regions, בוחרים אזור גיאוגרפי אחד או יותר כדי להפעיל את המודל של השפעת החגים. במהלך האימון, Vertex AI יוצר תכונות קטגוריות של חגים במודל על סמך התאריך מהעמודה Timestamp והאזורים הגיאוגרפיים שצוינו. אפשר לבחור באפשרות הזו רק אם רמת הפירוט של הנתונים מוגדרת לערך
Daily. כברירת מחדל, בניית מודלים של השפעות של חגים מושבתת. מידע על האזורים הגיאוגרפיים שמשמשים ליצירת מודלים של אפקטים של חגים זמין במאמר אזורים של חגים.מזינים את חלון ההקשר ואת האופק לתחזית.
אופק התחזית קובע עד כמה רחוק בעתיד המודל חוזה את ערך היעד לכל שורה של נתוני הסקה. התחזית מצוינת ביחידות של רמת הפירוט של הנתונים.
חלון ההקשר קובע עד כמה אחורה המודל מסתכל במהלך האימון (וגם לצורך תחזיות). במילים אחרות, לגבי כל נקודת נתונים לאימון, חלון ההקשר קובע עד כמה המודל יחזור אחורה כדי לחפש דפוסים לחיזוי. חלון ההקשר מצוין ביחידות של רמת הפירוט של הנתונים.
אם רוצים לייצא את מערך נתוני הבדיקה ל-BigQuery, מסמנים את האפשרות ייצוא מערך נתוני הבדיקה ל-BigQuery ומזינים את שם הטבלה.
אם רוצים לשלוט ידנית בחלוקת הנתונים או להגדיר את חלון התחזית, פותחים את האפשרויות המתקדמות.
חלוקת הנתונים שמוגדרת כברירת מחדל היא כרונולוגית, עם אחוזים סטנדרטיים של 80/10/10. אם רוצים לציין באופן ידני לאיזה פיצול מוקצות השורות, בוחרים באפשרות ידני ומציינים את העמודה של פיצול הנתונים.
בוחרים שיטת חלון מתגלגל ליצירת חלון תחזית. שיטת ברירת המחדל היא ספירה.
- Count (מספר): מזינים את הערך של המספר המקסימלי של חלונות בתיבת הטקסט שמופיעה.
- Stride (צעד): מגדירים את הערך של אורך פסיעה בתיבת הטקסט שמופיעה.
- עמודה: בוחרים את שם העמודה המתאים מהתפריט הנפתח.
לוחצים על Continue.
בדף Training options, קובעים את ההגדרות הבאות:
אם עדיין לא עשיתם זאת, לוחצים על יצירת נתונים סטטיסטיים.
כשמייצרים נתונים סטטיסטיים, התפריטים הנפתחים Transformation מתמלאים.
בודקים את רשימת העמודות ומוציאים מאימון המודל עמודות שלא אמורות לשמש לאימון.
אם משתמשים בעמודה לפיצול נתונים, צריך לכלול אותה.
בודקים את השינויים שנבחרו לתכונות הכלולות ומבצעים את העדכונים הנדרשים.
שורות שמכילות נתונים לא תקינים לטרנספורמציה שנבחרה לא נכללות באימון. מידע נוסף על טרנספורמציות
לכל עמודה שכללתם לצורך אימון, מציינים את סוג התכונה כדי להגדיר את הקשר בין התכונה לבין סדרת הזמן שלה, ואם היא זמינה בזמן התחזית. מידע נוסף על סוגי התכונות והזמינות שלהן
אם רוצים לציין עמודת משקל, לשנות את יעד האופטימיזציה מברירת המחדל או להפעיל תחזית היררכית, פותחים את האפשרויות המתקדמות.
אופציונלי. אם רוצים לציין עמודת משקל, בוחרים אותה מהרשימה הנפתחת. מידע נוסף על עמודות משקל
אופציונלי. כדי לבחור את יעד האופטימיזציה, בוחרים אותו מהרשימה. מידע נוסף על יעדי אופטימיזציה
אופציונלי. כדי להשתמש בתחזית היררכית, בוחרים באפשרות הפעלת תחזית היררכית. אפשר לבחור מבין שלוש אפשרויות קיבוץ:
No groupingGroup by columnsGroup all
אפשר גם להגדיר את משקלי ההפסד המצטברים הבאים:
Group total weight. אפשר להגדיר את השדה הזה רק אם בוחרים באפשרותGroup by columnsאו באפשרותGroup all.Temporal total weight.Group temporal total weight. אפשר להגדיר את השדה הזה רק אם בוחרים באפשרותGroup by columnsאו באפשרותGroup all.
לוחצים על Continue.
בדף Compute and pricing (חישוב וחיוב), מגדירים את האפשרויות הבאות:
מזינים את מספר השעות המקסימלי שרוצים לאמן את המודל. ההגדרה הזו עוזרת לכם להגביל את עלויות ההדרכה. הזמן שחלף בפועל יכול להיות ארוך יותר מהערך הזה, כי יש פעולות אחרות שקשורות ליצירת מודל חדש.
זמן האימון המומלץ קשור לגודל של טווח התחזית ולנתוני האימון. בטבלה הבאה מופיעות דוגמאות להרצות אימון של תחזיות, וטווח הזמן שנדרש לאימון של מודל באיכות גבוהה.
Rows תכונות אופק התחזית זמן האימון 12 מיליון 10 6 3 עד 6 שעות 20 מיליון 50 13 6 עד 12 שעות 16 מיליון 30 365 24-48 שעות למידע על תמחור של אימון מודלים, אפשר לעיין בדף התמחור.
לוחצים על התחלת ההדרכה.
אימון המודל יכול להימשך שעות רבות, בהתאם לגודל ולמורכבות של הנתונים ולתקציב האימון, אם ציינתם תקציב כזה. אפשר לסגור את הכרטיסייה הזו ולחזור אליה מאוחר יותר. תקבלו אימייל כשהאימון של המודל יסתיים.
API
בוחרים כרטיסייה לפי השפה או הסביבה:
REST
משתמשים בפקודה trainingPipelines.create כדי לאמן מודל.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- LOCATION: האזור שלכם.
- PROJECT: מזהה הפרויקט.
- TRAINING_PIPELINE_DISPLAY_NAME: השם המוצג של צינור העיבוד לאימון שנוצר עבור הפעולה הזו.
-
TRAINING_TASK_DEFINITION: שיטת אימון המודל.
- Time series Dense Encoder (TiDE)
gs://google-cloud-aiplatform/schema/trainingjob/definition/time_series_dense_encoder_forecasting_1.0.0.yaml - Temporal Fusion Transformer (TFT)
gs://google-cloud-aiplatform/schema/trainingjob/definition/temporal_fusion_transformer_time_series_forecasting_1.0.0.yaml - AutoML (L2L)
gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_forecasting_1.0.0.yaml - Seq2Seq+
gs://google-cloud-aiplatform/schema/trainingjob/definition/seq2seq_plus_time_series_forecasting_1.0.0.yaml
- Time series Dense Encoder (TiDE)
- TARGET_COLUMN: העמודה (הערך) שהמודל הזה אמור לחזות.
- TIME_COLUMN: עמודת השעה. מידע נוסף
- TIME_SERIES_IDENTIFIER_COLUMN: העמודה של מזהה סדרת הזמן. מידע נוסף
- WEIGHT_COLUMN: (אופציונלי) עמודת המשקל. מידע נוסף
- TRAINING_BUDGET: משך הזמן המקסימלי שרוצים שהמודל יתאמן, במילי-שעות שימוש בצומת (1,000 מילי-שעות שימוש בצומת שוות לשעת שימוש אחת בצומת).
-
GRANULARITY_UNIT: היחידה שבה יש להשתמש לגרנולריות של נתוני האימון, לאופק התחזית ולחלון ההקשר. הערכים האפשריים הם
minute,hour,day,week,monthאוyear. בוחרים באפשרותdayאם רוצים להשתמש במודלים של אפקטים של חגים. איך בוחרים את רמת הפירוט של הנתונים - GRANULARITY_QUANTITY: מספר היחידות של רמת הפירוט שמרכיבות את המרווח בין התצפיות בנתוני האימון. הערך חייב להיות 1 לכל היחידות, חוץ מדקות, שבהן הערך יכול להיות 1, 5, 10, 15 או 30. איך בוחרים את רמת הפירוט של הנתונים
- GROUP_COLUMNS: שמות העמודות בטבלת נתוני האימון שמזהות את הקיבוץ של רמת ההיררכיה. העמודות צריכות להיות מסוג time_series_attribute_columns. מידע נוסף
- GROUP_TOTAL_WEIGHT: המשקל של ההפסד המצטבר של הקבוצה ביחס להפסד האישי. התכונה מושבתת אם המדיניות מוגדרת לערך 0.0 או לא מוגדרת. אם לא מוגדרת עמודת קבוצה, כל סדרות הזמן ייחשבו כחלק מאותה קבוצה ויצטברו על פני כל סדרות הזמן. מידע נוסף
- TEMPORAL_TOTAL_WEIGHT: המשקל של ההפסד המצטבר לאורך זמן ביחס להפסד האישי. התכונה מושבתת אם המדיניות מוגדרת לערך 0.0 או לא מוגדרת. מידע נוסף
- GROUP_TEMPORAL_TOTAL_WEIGHT: משקל ההפסד הכולל (קבוצה x זמן) המצטבר ביחס להפסד האישי. התכונה מושבתת אם המדיניות מוגדרת לערך 0.0 או לא מוגדרת. אם עמודת הקבוצה לא מוגדרת, כל סדרות הזמן יטופלו כחלק מאותה קבוצה ויצטברו על פני כל סדרות הזמן. מידע נוסף
-
HOLIDAY_REGIONS: (אופציונלי) אתם יכולים לבחור אזור גיאוגרפי אחד או יותר כדי להפעיל מודלים של השפעות חגים. במהלך האימון, מערכת Vertex AI יוצרת תכונות קטגוריות של חגים במודל על סמך התאריך מ-TIME_COLUMN והאזורים הגיאוגרפיים שצוינו. כדי להפעיל אותו, מגדירים את GRANULARITY_UNIT ל-
dayומציינים אזור אחד או יותר בשדה HOLIDAY_REGIONS. כברירת מחדל, בניית מודלים של השפעות של חגים מושבתת. מידע נוסף זמין במאמר בנושא אזורים גיאוגרפיים לחגים. - FORECAST_HORIZON: אופק התחזית קובע עד כמה רחוק בעתיד המודל חוזה את ערך היעד לכל שורה של נתוני הסקה. אופק התחזית מצוין ביחידות של רמת הפירוט של הנתונים (GRANULARITY_UNIT). מידע נוסף
- CONTEXT_WINDOW: חלון ההקשר קובע כמה זמן אחורה המודל בודק במהלך האימון (ובתחזיות). במילים אחרות, לגבי כל נקודת נתונים לאימון, חלון ההקשר קובע עד כמה המודל יחזור אחורה כדי לחפש דפוסים לחיזוי. חלון ההקשר מצוין ביחידות של רמת פירוט הנתונים (GRANULARITY_UNIT). מידע נוסף
- OPTIMIZATION_OBJECTIVE: כברירת מחדל, Vertex AI ממזער את השגיאה הריבועית הממוצעת (RMSE). אם רוצים להגדיר יעד אופטימיזציה אחר למודל התחזית, צריך לבחור אחת מהאפשרויות שמופיעות בקטע יעדי אופטימיזציה למודלים של תחזיות. אם בוחרים למזער את הפסד הכמותון, צריך גם לציין ערך ל-QUANTILES.
-
PROBABILISTIC_INFERENCE: (אופציונלי) אם הערך מוגדר ל-
true, המודלים של Vertex AI מחשבים את התפלגות ההסתברות של התחזית. הסקת מסקנות הסתברותית יכולה לשפר את איכות המודל על ידי טיפול בנתונים רועשים וכימות של אי-ודאות. אם מציינים את הערכים QUANTILES, Vertex AI מחזיר גם את הכמויות של התפלגות ההסתברות. הסקת מסקנות הסתברותית תואמת רק לשיטות האימוןTime series Dense Encoder (TiDE)ו-AutoML (L2L). היא לא תואמת לחיזוי היררכי וליעד האופטימיזציהminimize-quantile-loss. -
QUANTILES: קוונטילים לשימוש ביעד האופטימיזציה
minimize-quantile-lossוהסקת מסקנות הסתברותית. צריך לספק רשימה של עד חמישה מספרים ייחודיים בין0ל-1, לא כולל. - TIME_SERIES_ATTRIBUTE_COL: השם או השמות של העמודות שמכילות מאפיינים של סדרות זמן. מידע נוסף
- AVAILABLE_AT_FORECAST_COL: השם או השמות של עמודות המשתנים המסבירים שהערך שלהם ידוע בזמן התחזית. מידע נוסף
- UNAVAILABLE_AT_FORECAST_COL: השם או השמות של עמודות המשתנים המסבירים שהערך שלהם לא ידוע בזמן התחזית. מידע נוסף
- TRANSFORMATION_TYPE: סוג הטרנספורמציה מסופק לכל עמודה שמשמשת לאימון המודל. מידע נוסף
- COLUMN_NAME: שם העמודה עם סוג השינוי שצוין. צריך לציין כל עמודה שמשמשת לאימון המודל.
- MODEL_DISPLAY_NAME: השם המוצג של המודל החדש שאומן.
- DATASET_ID: מזהה של מערך הנתונים לאימון.
-
אתם יכולים לספק אובייקט
Splitכדי לשלוט בפיצול הנתונים. מידע על שליטה בפילוח הנתונים זמין במאמר שליטה בפילוח הנתונים באמצעות REST. -
אפשר לספק אובייקט
windowConfigכדי להגדיר שיטת חלון נע ליצירת חלון תחזית. מידע נוסף זמין במאמר בנושא הגדרת שיטת חלון נע באמצעות REST. - PROJECT_NUMBER: מספר הפרויקט שנוצר באופן אוטומטי בפרויקט
ה-method של ה-HTTP וכתובת ה-URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines
תוכן בקשת JSON:
{
"displayName": "TRAINING_PIPELINE_DISPLAY_NAME",
"trainingTaskDefinition": "TRAINING_TASK_DEFINITION",
"trainingTaskInputs": {
"targetColumn": "TARGET_COLUMN",
"timeColumn": "TIME_COLUMN",
"timeSeriesIdentifierColumn": "TIME_SERIES_IDENTIFIER_COLUMN",
"weightColumn": "WEIGHT_COLUMN",
"trainBudgetMilliNodeHours": TRAINING_BUDGET,
"dataGranularity": {"unit": "GRANULARITY_UNIT", "quantity": GRANULARITY_QUANTITY},
"hierarchyConfig": {"groupColumns": GROUP_COLUMNS, "groupTotalWeight": GROUP_TOTAL_WEIGHT, "temporalTotalWeight": TEMPORAL_TOTAL_WEIGHT, "groupTemporalTotalWeight": GROUP_TEMPORAL_TOTAL_WEIGHT}
"holidayRegions" : ["HOLIDAY_REGIONS_1", "HOLIDAY_REGIONS_2", ...]
"forecast_horizon": FORECAST_HORIZON,
"context_window": CONTEXT_WINDOW,
"optimizationObjective": "OPTIMIZATION_OBJECTIVE",
"quantiles": "QUANTILES",
"enableProbabilisticInference": "PROBABILISTIC_INFERENCE",
"time_series_attribute_columns": ["TIME_SERIES_ATTRIBUTE_COL_1", "TIME_SERIES_ATTRIBUTE_COL_2", ...]
"available_at_forecast_columns": ["AVAILABLE_AT_FORECAST_COL_1", "AVAILABLE_AT_FORECAST_COL_2", ...]
"unavailable_at_forecast_columns": ["UNAVAILABLE_AT_FORECAST_COL_1", "UNAVAILABLE_AT_FORECAST_COL_2", ...]
"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/LOCATION/trainingPipelines/TRAINING_PIPELINE_ID",
"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"
}
Python
במאמר התקנת Vertex AI SDK ל-Python מוסבר איך להתקין או לעדכן את Vertex AI SDK ל-Python. מידע נוסף מופיע ב מאמרי העזרה של Python API.
שליטה בפיצול הנתונים באמצעות REST
אתם קובעים איך נתוני האימון יפוצלו בין קבוצות האימון, האימות והבדיקה. משתמשים בעמודה מפוצלת כדי לציין ידנית את פיצול הנתונים לכל שורה, ומספקים אותם כחלק מPredefinedSplitאובייקט Split בinputDataConfig של בקשת ה-JSON.
DATA_SPLIT_COLUMN היא העמודה שמכילה את הערכים המפוצלים של הנתונים (TRAIN, VALIDATION, TEST).
"predefinedSplit": {
"key": DATA_SPLIT_COLUMN
},
הגדרה של שיטת חלון מתגלגל באמצעות REST
מספקים אובייקט windowConfig כדי להגדיר אסטרטגיה של חלון נע ליצירת חלון תחזית. שיטת ברירת המחדל היא maxCount.
כדי להשתמש באפשרות
maxCount, מוסיפים את הקוד הבא ל-trainingTaskInputsשל בקשת ה-JSON. MAX_COUNT_VALUE מתייחס למספר המקסימלי של חלונות."windowConfig": { "maxCount": MAX_COUNT_VALUE }, ```כדי להשתמש באפשרות
strideLength, מוסיפים את השורה הבאה ל-trainingTaskInputsשל בקשת ה-JSON. STRIDE_LENGTH_VALUE מתייחס לערך של אורך פסיעה."windowConfig": { "strideLength": STRIDE_LENGTH_VALUE }, ```כדי להשתמש באפשרות
column, מוסיפים את הקוד הבא ל-trainingTaskInputsשל בקשת ה-JSON. COLUMN_NAME מתייחס לשם העמודה עם הערכיםTrueאוFalse."windowConfig": { "column": "COLUMN_NAME" }, ```