בדף הזה מוסבר איך לאמן מודל לחיזוי מתוך מערך נתונים טבלאי באמצעות Google Cloud המסוף או Agent Platform API.
לפני שמתחילים
לפני שמאמנים מודל לחיזוי, צריך לבצע את הפעולות הבאות:
אימון מודל
מסוף Google Cloud
במסוף Google Cloud , בקטע Agent Platform, עוברים לדף Datasets.
לוחצים על שם מערך הנתונים שבו רוצים להשתמש כדי לאמן את המודל, כדי לפתוח את דף הפרטים שלו.
אם סוג הנתונים שלכם משתמש בקבוצות של הערות, בוחרים את קבוצת ההערות שרוצים להשתמש בה במודל הזה.
לוחצים על Train new model (אימון מודל חדש).
בוחרים באפשרות אחר.
בדף Training method, קובעים את ההגדרות הבאות:
בוחרים את שיטת אימון המודל. מידע נוסף זמין במאמר בנושא שיטות לאימון מודלים.
לוחצים על Continue.
בדף פרטי המודל, מגדירים את האפשרויות הבאות:
מזינים את שם התצוגה של המודל החדש.
בוחרים את עמודת היעד.
עמודת היעד היא הערך שהמודל יחזה. מידע נוסף על הדרישות לגבי עמודת היעד
אם לא הגדרתם את מזהה הסדרה ואת החותמת לציון התאריך והשעה בעמודות של מערך הנתונים, עכשיו צריך לבחור אותן.
בוחרים את רמת הפירוט של הנתונים. בוחרים באפשרות
Dailyאם רוצים להשתמש במודלים של אפקטים של חגים. איך בוחרים את רמת הפירוט של הנתוניםאופציונלי: בתפריט הנפתח Holiday regions, בוחרים אזור גיאוגרפי אחד או יותר כדי להפעיל מודלים של השפעות חגים. במהלך האימון, Agent Platform יוצר תכונות קטגוריות של חגים במודל על סמך התאריך מהעמודה Timestamp והאזורים הגיאוגרפיים שצוינו. אפשר לבחור באפשרות הזו רק אם רמת הפירוט של הנתונים מוגדרת לערך
Daily. כברירת מחדל, בניית מודלים של השפעות של חגים מושבתת. מידע על האזורים הגיאוגרפיים שמשמשים למודלים של אפקטים של חגים זמין במאמר אזורים של חגים.מזינים את חלון ההקשר ואת האופק של התחזית.
אופק התחזית קובע עד כמה רחוק בעתיד המודל חוזה את ערך היעד לכל שורה של נתוני הסקה. התחזית מצוינת ביחידות של רמת פירוט הנתונים.
חלון ההקשר מגדיר עד כמה המודל חוזר אחורה בזמן במהלך האימון (ובמהלך התחזיות). במילים אחרות, לגבי כל נקודת נתונים לאימון, חלון ההקשר קובע עד כמה המודל יחזור אחורה כדי לחפש דפוסים לחיזוי. חלון ההקשר מצוין ביחידות של רמת פירוט הנתונים.
אם רוצים לייצא את מערך נתוני הבדיקה ל-BigQuery, מסמנים את האפשרות ייצוא מערך נתוני הבדיקה ל-BigQuery ומזינים את שם הטבלה.
אם רוצים לשלוט ידנית בחלוקת הנתונים או להגדיר את חלון התחזית, פותחים את האפשרויות המתקדמות.
פיצול הנתונים שמוגדר כברירת מחדל הוא כרונולוגי, עם האחוזים הרגילים של 80/10/10. אם רוצים לציין באופן ידני לאיזה פיצול מוקצות השורות, בוחרים באפשרות ידני ומציינים את העמודה של פיצול הנתונים.
בוחרים שיטת חלון נע ליצירת חלון התחזית. שיטת ברירת המחדל היא ספירה.
- Count (מספר): מגדירים את הערך של המספר המקסימלי של חלונות בתיבת הטקסט שמופיעה.
- Stride (צעד): מגדירים את הערך של אורך פסיעה בתיבת הטקסט שמופיעה.
- עמודה: בוחרים את שם העמודה המתאים מהתפריט הנפתח.
לוחצים על Continue.
בדף Training options, מגדירים את האפשרויות הבאות:
אם עדיין לא עשיתם זאת, לוחצים על יצירת נתונים סטטיסטיים.
כשמייצרים נתונים סטטיסטיים, התפריטים הנפתחים שינוי מתמלאים.
בודקים את רשימת העמודות ומוציאים מהאימון עמודות שלא אמורות לשמש לאימון המודל.
אם משתמשים בעמודה לפיצול נתונים, צריך לכלול אותה.
בודקים את השינויים שנבחרו לתכונות הכלולות ומבצעים את העדכונים הנדרשים.
שורות שמכילות נתונים לא תקינים עבור השינוי שנבחר לא נכללות באימון. מידע נוסף על שינויים
לכל עמודה שכללתם לצורך אימון, מציינים את סוג התכונה כדי להסביר איך התכונה הזו קשורה לסדרת הזמן שלה, ואם היא זמינה בזמן התחזית. מידע נוסף על סוגי התכונות והזמינות שלהן
אם רוצים לציין עמודת משקל, לשנות את יעד האופטימיזציה מברירת המחדל או להפעיל תחזית היררכית, פותחים את האפשרויות המתקדמות.
אופציונלי. אם רוצים לציין עמודת משקל, בוחרים אותה מהרשימה הנפתחת. מידע נוסף על עמודות משקל
אופציונלי. אם רוצים לבחור את יעד האופטימיזציה, בוחרים אותו מהרשימה. מידע נוסף על יעדי אופטימיזציה
אופציונלי. כדי להשתמש בתחזית היררכית, בוחרים באפשרות הפעלת תחזית היררכית. אפשר לבחור מבין שלוש אפשרויות קיבוץ:
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: (אופציונלי) אתם יכולים לבחור אזור גיאוגרפי אחד או יותר כדי להפעיל מודלים של השפעות חגים. במהלך האימון, Agent Platform יוצר תכונות קטגוריות של חגים במודל על סמך התאריך מ-TIME_COLUMN והאזורים הגיאוגרפיים שצוינו. כדי להפעיל אותו, מגדירים את GRANULARITY_UNIT ל-
dayומציינים אזור אחד או יותר בשדה HOLIDAY_REGIONS. כברירת מחדל, בניית מודלים של השפעות של חגים מושבתת. מידע נוסף זמין במאמר בנושא אזורים גיאוגרפיים לחגים. - FORECAST_HORIZON: אופק התחזית קובע עד כמה רחוק בעתיד המודל חוזה את ערך היעד לכל שורה של נתוני הסקה. אופק התחזית מצוין ביחידות של רמת הפירוט של הנתונים (GRANULARITY_UNIT). מידע נוסף
- CONTEXT_WINDOW: חלון ההקשר קובע כמה זמן אחורה המודל בודק במהלך האימון (ובתחזיות). במילים אחרות, לגבי כל נקודת נתונים לאימון, חלון ההקשר קובע עד כמה המודל יחזור אחורה כדי לחפש דפוסים לחיזוי. חלון ההקשר מצוין ביחידות של רמת פירוט הנתונים (GRANULARITY_UNIT). מידע נוסף
- OPTIMIZATION_OBJECTIVE: כברירת מחדל, Agent Platform ממזער את שורש הטעות הריבועית הממוצעת (RMSE). אם רוצים להגדיר יעד אופטימיזציה אחר למודל התחזית, צריך לבחור אחת מהאפשרויות שמופיעות בקטע יעדי אופטימיזציה למודלים של תחזיות. אם בוחרים למזער את הפסד הכמותון, צריך גם לציין ערך ל-QUANTILES.
-
PROBABILISTIC_INFERENCE: (אופציונלי) אם הערך מוגדר כ-
true, המודלים של Agent Platform מחשבים את התפלגות ההסתברות של התחזית. הסקת מסקנות הסתברותית יכולה לשפר את איכות המודל על ידי טיפול בנתונים רועשים וכימות של אי הוודאות. אם מציינים את הערכים QUANTILES, פלטפורמת Agent מחזירה גם את הכמויות של התפלגות ההסתברות. הסקת מסקנות הסתברותית תואמת רק לשיטות האימון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" }, ```