אימון מודל באמצעות AutoML מקצה לקצה

בדף הזה נסביר איך לאמן מודל סיווג או רגרסיה מתוך מערך נתונים טבלאי באמצעות Tabular Workflow for End-to-End AutoML.

לפני שמתחילים

לפני שמבצעים אימון של מודל, צריך לבצע את הפעולות הבאות:

אם אתם מקבלים שגיאה שקשורה למכסות בזמן הפעלת Tabular Workflow for End-to-End AutoML, יכול להיות שתצטרכו לבקש מכסה גבוהה יותר. מידע נוסף זמין במאמר ניהול מכסות ל-Tabular Workflows.

קבלת ה-URI של תוצאת כוונון ההיפר-פרמטרים הקודמת

אם השלמתם בעבר הרצה של תהליך עבודה מקצה לקצה של AutoML, תוכלו להשתמש בתוצאה של כוונון ההיפרפרמטרים מההרצה הקודמת כדי לחסוך זמן ומשאבים בתהליך האימון. כדי למצוא את התוצאה הקודמת של כוונון ההיפרפרמטרים, אפשר להשתמש במסוף Google Cloud או לטעון אותה באופן פרוגרמטי באמצעות ה-API.

מסוף Google Cloud

כדי למצוא את ה-URI של תוצאת האופטימיזציה של ההיפרפרמטרים באמצעות מסוף Google Cloud , פועלים לפי השלבים הבאים:

  1. במסוף Google Cloud , בקטע Agent Platform, עוברים לדף Pipelines.

    כניסה לדף Pipelines

  2. לוחצים על הכרטיסייה הפעלות.

  3. בוחרים את ההרצה של צינור הנתונים שרוצים להשתמש בה.

  4. בוחרים באפשרות הרחבת ארטיפקטים.

  5. לוחצים על הרכיב exit-handler-1.

  6. לוחצים על הרכיב stage_1_tuning_result_artifact_uri_empty.

  7. מחפשים את הרכיב automl-tabular-cv-trainer-2.

  8. לוחצים על הארטיפקט המשויך tuning_result_output.

  9. בוחרים בכרטיסייה Node Info (פרטי הצומת).

  10. מעתיקים את ה-URI לשימוש בשלב אימון מודל.

תוצאת חיפוש של ארכיטקטורה

‫API: Python

בדוגמת הקוד הבאה אפשר לראות איך טוענים את התוצאה של כוונון ההיפרפרמטרים באמצעות ה-API. המשתנה job מתייחס להרצת צינור עיבוד הנתונים הקודם של אימון המודל.


def get_task_detail(
  task_details: List[Dict[str, Any]], task_name: str
) -> List[Dict[str, Any]]:
  for task_detail in task_details:
      if task_detail.task_name == task_name:
          return task_detail

pipeline_task_details = job.gca_resource.job_detail.task_details

stage_1_tuner_task = get_task_detail(
    pipeline_task_details, "automl-tabular-stage-1-tuner"
)
stage_1_tuning_result_artifact_uri = (
    stage_1_tuner_task.outputs["tuning_result_output"].artifacts[0].uri
)

אימון מודל

מסוף Google Cloud

כדי לאמן מודל באמצעות מסוף Google Cloud , פועלים לפי השלבים הבאים:

  1. במסוף Google Cloud , בקטע Agent Platform, עוברים לדף Pipelines.

    כניסה לדף Pipelines

  2. בוחרים בכרטיסייה גלריית התבניות.

  3. בכרטיס AutoML for Tabular Classification / Regression, לוחצים על Create run.

  4. בדף Run details, מגדירים את ההגדרות הבאות:

    1. מזינים שם להרצת הצינור.
    2. אופציונלי: אם רוצים להגדיר את חשבון השירות של Gemini Enterprise Agent Platform Pipelines או את חשבון השירות של Dataflow worker, פותחים את האפשרויות המתקדמות. מידע נוסף על חשבונות שירות
    3. לוחצים על Continue.

  5. בדף Runtime configuration, מגדירים את ההגדרות הבאות:

    1. מזינים קטגוריה של Cloud Storage או תיקייה בתוך הקטגוריה שרוצים להשתמש בה כתיקיית הפלט הראשית. הספרייה הזו תשמש לשמירת קובצי ביניים, כמו מערך הנתונים המגולם והמודל. חשוב לזכור לנקות את הספרייה אחרי שהאימון מסתיים והמודל ופריטים חשובים אחרים מועתקים לקטגוריה אחרת של Cloud Storage. אפשרות אחרת היא להגדיר אורך חיים (TTL) לקטגוריה של Cloud Storage.

      הקטגוריות של הפרויקט מופיעות בקטע Cloud Storage במסוף Google Cloud .

      כניסה לדף Buckets

    2. לוחצים על Continue.

  6. בדף Training method, קובעים את ההגדרות הבאות:

    1. בוחרים את השם של מערך הנתונים שרוצים להשתמש בו כדי לאמן את המודל.
    2. בוחרים את עמודת היעד. עמודת היעד היא הערך שהמודל יחזה. מידע נוסף על הדרישות לגבי עמודת היעד
    3. מזינים את שם התצוגה של המודל החדש.
    4. אופציונלי: כדי לבחור איך לפצל את הנתונים בין קבוצות האימון, הבדיקה והאימות, פותחים את האפשרויות המתקדמות. אפשר לבחור בין האפשרויות הבאות לפיצול הנתונים:
      • אקראי (ברירת מחדל): Agent Platform בוחרת באופן אקראי את השורות שמשויכות לכל אחת מקבוצות הנתונים. כברירת מחדל, Agent Platform בוחר 80% משורות הנתונים שלכם עבור קבוצת נתונים לאימון, 10% עבור קבוצת נתונים לתיקוף ו-10% עבור קבוצת נתונים לבדיקה. מגדירים את אחוז שורות הנתונים שרוצים לשייך לכל אחת מקבוצות הנתונים.
      • ידני: Agent Platform בוחרת שורות נתונים לכל אחד ממערכי הנתונים על סמך הערכים בעמודה של פיצול הנתונים. מזינים את השם של העמודה לפיצול הנתונים.
      • כרונולוגי: Agent Platform מפצלת את הנתונים על סמך חותמת הזמן בעמודת הזמן. מזינים את השם של עמודת הזמן. אפשר גם להגדיר את אחוז שורות הנתונים שרוצים לשייך לקבוצת נתונים לאימון, לקבוצת נתונים לתיקוף ולקבוצת נתונים לבדיקה.
      • שכבות: Agent Platform בוחרת באופן אקראי את השורות שמשויכות לכל אחד ממערכי הנתונים, אבל שומרת על חלוקת הערכים של עמודת היעד. מזינים את השם של עמודת היעד. אפשר גם להגדיר את אחוז שורות הנתונים שרוצים לשייך לקבוצת נתונים לאימון, לקבוצת נתונים לתיקוף ולקבוצת נתונים לבדיקה.
      מידע נוסף על פיצול נתונים
    5. אופציונלי: אפשר להריץ את צינור הנתונים בלי חיפוש הארכיטקטורה. אם בוחרים באפשרות Skip architecture search (דילוג על חיפוש ארכיטקטורה), תופיע בקשה לספק קבוצה של היפרפרמטרים מהרצת צינור קודמת בדף Training options (אפשרויות אימון).
    6. לוחצים על Continue.

  7. בדף Training options (אפשרויות אימון), מגדירים את האפשרויות הבאות:

    1. אופציונלי: לוחצים על יצירת נתונים סטטיסטיים. כשמייצרים נתונים סטטיסטיים, התפריטים הנפתחים שינוי מתמלאים.
    2. בודקים את רשימת העמודות ומוציאים מהאימון עמודות שלא אמורות לשמש לאימון המודל.
    3. בודקים את השינויים שנבחרו לתכונות הכלולות, ואם מותר להשתמש בנתונים לא תקינים, ומבצעים את העדכונים הנדרשים. מידע נוסף על טרנספורמציות ועל נתונים לא תקינים
    4. אם בחרתם לדלג על חיפוש הארכיטקטורה בדף שיטת האימון, צריך לספק את הנתיב אל תוצאת כוונון ההיפרפרמטרים מריצה קודמת של צינור.
    5. אופציונלי: אם רוצים לציין את עמודת המשקל, פותחים את האפשרויות המתקדמות ובוחרים את האפשרות הרצויה. מידע נוסף על עמודות משקל
    6. אופציונלי: אם רוצים לשנות את יעד האופטימיזציה מברירת המחדל, פותחים את האפשרויות המתקדמות ובוחרים את האפשרות הרצויה. מידע נוסף על יעדי אופטימיזציה
    7. אופציונלי: אם בוחרים לבצע את החיפוש של הארכיטקטורה בדף Training method (שיטת האימון), אפשר לציין את מספר הניסויים המקבילים. פותחים את האפשרויות המתקדמות ומזינים את הערך.
    8. אופציונלי: אפשר לספק ערכים קבועים לקבוצת משנה של היפרפרמטרים. Agent Platform מחפשת את הערכים האופטימליים של ההיפרפרמטרים הנותרים שלא תוקנו. האפשרות הזו מתאימה אם יש לכם העדפה ברורה לגבי סוג המודל. אתם יכולים לבחור בין רשתות עצביות ועצים מחוזקים לסוג המודל. פותחים את האפשרויות המתקדמות ומזינים החלפה של מפרט המחקר בפורמט JSON.

      לדוגמה, אם רוצים להגדיר את סוג המודל לרשתות נוירונים (NN), מזינים את הפקודה הבאה:

      [
        {
          "parameter_id": "model_type",
          "categorical_value_spec": {
            "values": ["nn"]
          }
        }
      ]
      

    9. לוחצים על Continue.

  8. בדף Compute and pricing (חישוב וחיוב), מבצעים את ההגדרות הבאות:

    1. מזינים את מספר השעות המקסימלי שרוצים לאמן את המודל. מידע נוסף על תמחור
    2. אופציונלי: בקטע Compute Settings אפשר להגדיר את סוגי המכונות ואת מספר המכונות לכל שלב בתהליך העבודה. האפשרות הזו מתאימה אם יש לכם מערך נתונים גדול ואתם רוצים לבצע אופטימיזציה של חומרת המכונה בהתאם.

  9. לוחצים על שליחה.

‫API: Python

בדוגמת הקוד הבאה אפשר לראות איך מריצים צינור עיבוד נתונים לאימון מודל:

job = aiplatform.PipelineJob(
    ...
    template_path=template_path,
    parameter_values=parameter_values,
    ...
)
job.run(service_account=SERVICE_ACCOUNT)

הפרמטר האופציונלי service_account ב-job.run() מאפשר לכם להגדיר את חשבון השירות של Gemini Enterprise Agent Platform Pipelines לחשבון לפי בחירתכם.

הפונקציה הבאה מגדירה את צינור הנתונים ואת ערכי הפרמטרים. נתוני האימון יכולים להיות קובץ CSV ב-Cloud Storage או טבלה ב-BigQuery.

template_path, parameter_values = automl_tabular_utils.get_automl_tabular_pipeline_and_parameters(...)

זו קבוצת משנה של פרמטרים של get_automl_tabular_pipeline_and_parameters:

שם הפרמטר סוג הגדרה
data_source_csv_filenames String ‫URI של קובץ CSV שמאוחסן ב-Cloud Storage.
data_source_bigquery_table_path String כתובת URI של טבלה ב-BigQuery.
dataflow_service_account String (אופציונלי) חשבון שירות מותאם אישית להרצת משימות Dataflow. אפשר להגדיר את עבודת Dataflow כך שתשתמש בכתובות IP פרטיות וברשת משנה ספציפית של VPC. הפרמטר הזה משמש כשינוי של חשבון השירות שמוגדר כברירת מחדל לעובד Dataflow.
prediction_type String בוחרים באפשרות classification כדי לאמן מודל סיווג או באפשרות regression כדי לאמן מודל רגרסיה.
optimization_objective String אם מאמנים מודל סיווג בינארי, יעד ברירת המחדל הוא AUC ROC. אם מאמנים מודל רגרסיה, יעד ברירת המחדל הוא RMSE. אם רוצים להגדיר יעד אופטימיזציה אחר למודל, בוחרים באחת מהאפשרויות שמופיעות בקטע יעדי אופטימיזציה למודלים של סיווג או רגרסיה.
enable_probabilistic_inference בוליאני אם אתם מאמנים מודל רגרסיה והגדרתם את הערך הזה ל-true, מודלים של Agent Platform יוצרים מודל של התפלגות ההסתברות של ההיסק. הסקת מסקנות הסתברותית יכולה לשפר את איכות המודל על ידי טיפול בנתונים רועשים וכימות של אי-ודאות. אם מציינים את הערכים quantiles, Agent Platform מחזיר גם את הכמויות של ההתפלגות.
quantiles רשימה[מספר ממשי] הקוונטילים שבהם רוצים להשתמש להסקת מסקנות הסתברותית. קוונטיל מציין את הסבירות לכך שיעד יהיה נמוך מערך נתון. צריך לספק רשימה של עד חמישה מספרים ייחודיים בין 0 ל-1, לא כולל.

אפשרויות להתאמה אישית של תהליכי עבודה

אפשר להתאים אישית את תהליך העבודה מקצה לקצה של AutoML על ידי הגדרת ערכי ארגומנטים שמועברים במהלך הגדרת צינור הנתונים. אפשר להתאים אישית את תהליך העבודה בדרכים הבאות:

  • ביטול של מרחב החיפוש
  • הגדרת ציוד ואביזרים
  • זיקוק המודל
  • דילוג על חיפוש הארכיטקטורה

שינוי מרחב החיפוש

הפרמטר get_automl_tabular_pipeline_and_parameters הבא מאפשר לספק ערכים קבועים לקבוצת משנה של היפרפרמטרים. Agent Platform מחפשת את הערכים האופטימליים של ההיפר-פרמטרים הנותרים שלא תוקנו. צריך להשתמש בפרמטר הזה אם רוצים לבחור בין רשתות נוירונים לבין עצים משופרים לסוג המודל.

שם הפרמטר סוג הגדרה
study_spec_parameters_override List[Dict[String, Any]] (אופציונלי) קבוצת משנה מותאמת אישית של היפרפרמטרים. הפרמטר הזה מגדיר את רכיב automl-tabular-stage-1-tuner בצינור עיבוד הנתונים.

בדוגמת הקוד הבאה אפשר לראות איך מגדירים את סוג המודל כרשתות נוירונים (NN):

study_spec_parameters_override = [
  {
    "parameter_id": "model_type",
    "categorical_value_spec": {
      "values": ["nn"] # The default value is ["nn", "boosted_trees"], this reduces the search space
    }
  }
]

הגדרת החומרה

הפרמטרים הבאים get_automl_tabular_pipeline_and_parameters מאפשרים להגדיר את סוגי המכונות ואת מספר המכונות לאימון. האפשרות הזו מתאימה אם יש לכם מערך נתונים גדול ואתם רוצים לבצע אופטימיזציה של חומרת המכונה בהתאם.

שם הפרמטר סוג הגדרה
stage_1_tuner_worker_pool_specs_override Dict[String, Any] (אופציונלי) הגדרה בהתאמה אישית של סוגי המכונות ומספר המכונות לאימון. הפרמטר הזה מגדיר את רכיב automl-tabular-stage-1-tuner בצינור עיבוד הנתונים.
cv_trainer_worker_pool_specs_override Dict[String, Any] (אופציונלי) הגדרה בהתאמה אישית של סוגי המכונות ומספר המכונות לאימון. הפרמטר הזה מגדיר את רכיב automl-tabular-stage-1-tuner בצינור עיבוד הנתונים.

הקוד הבא מדגים איך להגדיר n1-standard-8 סוג מכונה לצומת הראשי של TensorFlow וn1-standard-4 סוג מכונה לצומת ההערכה של TensorFlow:

worker_pool_specs_override = [
  {"machine_spec": {"machine_type": "n1-standard-8"}}, # override for TF chief node
  {},  # override for TF worker node, since it's not used, leave it empty
  {},  # override for TF ps node, since it's not used, leave it empty
  {
    "machine_spec": {
        "machine_type": "n1-standard-4" # override for TF evaluator node
    }
  }
]

זיקוק המודל

הפרמטר get_automl_tabular_pipeline_and_parameters הבא מאפשר ליצור גרסה קטנה יותר של מודל האנסמבל. מודל קטן יותר מקטין את זמן האחזור ואת העלות של ההסקה.

שם הפרמטר סוג הגדרה
run_distillation בוליאני אם מציבים TRUE, נוצרת גרסה קטנה יותר של מודל האנסמבל.

דילוג על חיפוש ארכיטקטורה

הפרמטר get_automl_tabular_pipeline_and_parameters הבא מאפשר להריץ את צינור העיבוד בלי חיפוש הארכיטקטורה, ולספק במקום זאת קבוצה של היפרפרמטרים מהרצה קודמת של צינור העיבוד.

שם הפרמטר סוג הגדרה
stage_1_tuning_result_artifact_uri String (אופציונלי) כתובת ה-URI של תוצאת כוונון ההיפרפרמטרים מהרצת צינור קודמת.

יעדי אופטימיזציה למודלים של סיווג או רגרסיה

כשמאמנים מודל, Agent Platform בוחר יעד אופטימיזציה שמוגדר כברירת מחדל על סמך סוג המודל וסוג הנתונים שמשמשים לעמודת היעד.

מודלים של סיווג מתאימים במיוחד למקרים הבאים:
יעד האופטימיזציה ערך 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). העונש על שגיאה בגודל יחסי ולא בערך מוחלט. הפונקציה שימושית כשגם הערכים החזויים וגם הערכים בפועל יכולים להיות גדולים מאוד.

המאמרים הבאים