רישום נתונים באופן ידני להרצת ניסוי

למטרות רישום ביומן, משתמשים ב-Vertex AI SDK ל-Python.

מדדים ופרמטרים נתמכים:

  • מדדי סיכום
  • מדדים של סדרות עיתיות
  • parameters
  • מדדי סיווג

‫Vertex AI SDK ל-Python

הערה: אם הפרמטר האופציונלי resume מוגדר כ-TRUE, הריצה שהתחילה קודם תתחדש. אם לא מציינים ערך, resume מקבל כברירת מחדל את הערך FALSE ונוצרת הרצה חדשה.

בדוגמה הבאה נעשה שימוש בשיטה init מתוך הפונקציות של aiplatform.

מדדי סיכום

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

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

Python

from typing import Dict

from google.cloud import aiplatform


def log_metrics_sample(
    experiment_name: str,
    run_name: str,
    metrics: Dict[str, float],
    project: str,
    location: str,
):
    aiplatform.init(experiment=experiment_name, project=project, location=location)

    aiplatform.start_run(run=run_name)

    aiplatform.log_metrics(metrics)

  • experiment_name: מציינים שם לניסוי. כדי לראות את רשימת הניסויים, בוחרים באפשרות Experiments בסרגל הניווט של הקטע במסוף Google Cloud .
  • run_name: מציינים שם להרצה (ראו start_run).
  • metric: צמדי מפתח/ערך של מדדים. לדוגמה: {'learning_rate': 0.1}
  • project: . אפשר למצוא אותם בדף welcome במסוף Google Cloud .
  • location: ראו רשימה של מיקומים זמינים

מדדים של פעולות על ציר הזמן

כדי לרשום מדדים של סדרות זמן, צריך להשתמש ב-Vertex AI Experiments במכונת TensorBoard של Vertex AI.

הקצאת משאב גיבוי של Vertex AI TensorBoard לרישום ביומן של מדד סדרת זמנים.

כל המדדים שנרשמים ביומן באמצעות log_time_series_metrics מאוחסנים כמדדים של סדרות עיתיות. ‫Vertex AI TensorBoard הוא מאגר המדדים של סדרות הזמן.

אפשר להגדיר את experiment_tensorboard גם ברמת הניסוי וגם ברמת הפעלת הניסוי. הגדרה של experiment_tensorboard ברמת ההרצה מבטלת את ההגדרה ברמת הניסוי. אחרי שמגדירים את experiment_tensorboard בהרצה, אי אפשר לשנות את experiment_tensorboard של ההרצה.

  • הגדרת experiment_tensorboard ברמת הניסוי:
      aiplatform.init(experiment='my-experiment',
                   experiment_tensorboard='projects/.../tensorboard/my-tb-resource')
  • מגדירים את experiment_tensorboard ברמת ההרצה: הערה: ההגדרה הזו מבטלת את ההגדרה ברמת הניסוי.
      aiplatform.start_run(run_name='my-other-run',
                        tensorboard='projects/.../.../other-resource')
    aiplatform.log_time_series_metrics(...)

Python

from typing import Dict, Optional

from google.cloud import aiplatform
from google.protobuf import timestamp_pb2


def log_time_series_metrics_sample(
    experiment_name: str,
    run_name: str,
    metrics: Dict[str, float],
    step: Optional[int],
    wall_time: Optional[timestamp_pb2.Timestamp],
    project: str,
    location: str,
):
    aiplatform.init(experiment=experiment_name, project=project, location=location)

    aiplatform.start_run(run=run_name, resume=True)

    aiplatform.log_time_series_metrics(metrics=metrics, step=step, wall_time=wall_time)

  • experiment_name: מציינים את שם הניסוי. רשימת הניסויים מופיעה במסוף Google Cloud אחרי שבוחרים באפשרות ניסויים בסרגל הניווט של הקטע.
  • run_name: מציינים שם להרצה (ראו start_run).
  • metrics: מילון שבו המפתחות הם שמות של מדדים והערכים הם ערכים של מדדים.
  • step: אופציונלי. אינדקס השלב של נקודה על הגרף הזו בהרצה.
  • wall_time: אופציונלי. חותמת הזמן של השעון שעל הקיר שבה נקודה על הגרף הזו נוצרת על ידי משתמש הקצה. אם לא מספקים ערך, המערכת יוצרת את הערך wall_time על סמך הערך של time.time()
  • project: . אפשר למצוא אותם בדף welcome במסוף Google Cloud .
  • location: ראו רשימה של מיקומים זמינים

שלב וזמן בפועל

ממשק log_time_series_metrics API מקבל באופן אופציונלי את step וגם את walltime.

  • step: אופציונלי. אינדקס השלב של נקודה על הגרף הזו בהרצה. אם לא מציינים ערך, המערכת משתמשת בתוספת מעל השלב האחרון מבין כל מדדי סדרות הזמן שכבר נרשמו. אם השלב קיים עבור אחד ממפתחות המדדים שצוינו, הוא יידרס.
  • wall_time: אופציונלי. מספר השניות שעברו מאז תקופת ה-Epoch של המדד שנרשם ביומן. אם לא מציינים את הערך הזה, ברירת המחדל היא time.time של Python.

לדוגמה:

aiplatform.log_time_series_metrics({"mse": 2500.00, "rmse": 50.00})
רישום ביומן של שלב ספציפי
aiplatform.log_time_series_metrics({"mse": 2500.00, "rmse": 50.00}, step=8)
כלול wall_time
aiplatform.log_time_series_metrics({"mse": 2500.00, "rmse": 50.00}, step=10)

פרמטרים

פרמטרים הם ערכי קלט עם מפתח שמגדירים הפעלה, מווסתים את ההתנהגות של ההפעלה ומשפיעים על התוצאות שלה. לדוגמה: קצב הלמידה, שיעור הנשירה ומספר שלבי האימון. רושמים פרמטרים ביומן באמצעות השיטה log_params.

Python

from typing import Dict, Union

from google.cloud import aiplatform


def log_params_sample(
    experiment_name: str,
    run_name: str,
    params: Dict[str, Union[float, int, str]],
    project: str,
    location: str,
):
    aiplatform.init(experiment=experiment_name, project=project, location=location)

    aiplatform.start_run(run=run_name, resume=True)

    aiplatform.log_params(params)

aiplatform.log_params({"learning_rate": 0.01, "n_estimators": 10})
  • experiment_name: מציינים שם לניסוי. רשימת הניסויים מופיעה במסוף Google Cloud אחרי שבוחרים באפשרות ניסויים בסרגל הניווט של הקטע.
  • run_name: מציינים שם להרצה (ראו start_run).
  • params: צמדי מפתח/ערך של פרמטרים לדוגמה: {'accuracy': 0.9} (ראו log_params). הדף welcome.
  • location: ראו רשימה של מיקומים זמינים

מדדי סיווג

בנוסף למדדי סיכום ולמדדים של סדרות זמן, משתמשים בדרך כלל במדדי מטריצת בלבול ועקומת ROC. אפשר לרשום אותם ביומן של Vertex AI Experiments באמצעות ה-API‏ log_classification_metrics.

Python

from typing import List, Optional

from google.cloud import aiplatform


def log_classification_metrics_sample(
    experiment_name: str,
    run_name: str,
    project: str,
    location: str,
    labels: Optional[List[str]] = None,
    matrix: Optional[List[List[int]]] = None,
    fpr: Optional[List[float]] = None,
    tpr: Optional[List[float]] = None,
    threshold: Optional[List[float]] = None,
    display_name: Optional[str] = None,
) -> None:
    aiplatform.init(experiment=experiment_name, project=project, location=location)

    aiplatform.start_run(run=run_name, resume=True)

    aiplatform.log_classification_metrics(
        labels=labels,
        matrix=matrix,
        fpr=fpr,
        tpr=tpr,
        threshold=threshold,
        display_name=display_name,
    )

  • experiment_name: מציינים שם לניסוי. כדי לראות את רשימת הניסויים, בוחרים באפשרות Experiments (ניסויים) בסרגל הניווט של הקטע במסוף Google Cloud .
  • run_name: מציינים שם להרצה (ראו start_run).
  • project: . אפשר למצוא אותם בדף welcome במסוף Google Cloud .
  • location: ראו רשימה של מיקומים זמינים.
  • labels: רשימה של שמות התוויות למטריצת השגיאה. חובה להגדיר את הערך הזה אם הערך של 'מטריצה' מוגדר.
  • matrix: ערכים למטריצת השגיאה. חובה להגדיר את הערך הזה אם מגדירים את הערך labels.
  • fpr: רשימה של שיעורי חיוביים כוזבים עבור עקומת ה-ROC. חובה להגדיר את הערך הזה אם מוגדרים הערכים tpr או thresholds.
  • tpr: רשימה של שיעורי חיוביים אמיתיים לשימוש בעקומת ROC. חובה להגדיר את הערך אם מוגדרים הערכים 'fpr' או 'thresholds'.
  • threshold: רשימת ערכי הסף של עקומת ה-ROC. חובה להגדיר את הערך הזה אם מוגדרים הערכים fpr או tpr.
  • display_name: השם שהוגדר על ידי המשתמש לארטיפקט של מדד הסיווג.

צפייה ברשימת הרצות של ניסויים במסוף Google Cloud

  1. נכנסים לדף Experiments במסוף Google Cloud .
    עוברים אל 'ניסויים'
    מוצגת רשימה של ניסויים.
  2. בוחרים את הניסוי שרוצים לבדוק.
    תופיע רשימה של הפעלות.

דף רשימת הניסויים ב-Vertex AI
מידע נוסף זמין במאמר השוואה וניתוח של ריצות.

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

מדריך ל-Notebook

פוסט בבלוג