הפעלה של Cloud Profiler לניפוי באגים בביצועים של אימון מודלים

בדף הזה מוסבר איך להפעיל את Cloud Profiler כדי שתוכלו לנפות באגים בביצועים של אימון מודלים במשימות אימון ללא שרת.

אימון מודלים יכול להיות יקר מבחינת משאבי מחשוב. בעזרת Profiler אפשר לעקוב אחרי ביצועי האימון של המודל ולבצע אופטימיזציה שלהם. הכלי עוזר להבין את צריכת המשאבים של פעולות האימון. המידע הזה מאפשר לכם לזהות צווארי בקבוק בביצועים ולתקן אותם כדי לאמן מודלים מהר יותר ובעלות נמוכה יותר.

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

הפעלת כלי לניתוח ביצועים (profiler)

כדי להפעיל את Profiler למשימת האימון, מוסיפים את השורות הבאות לסקריפט האימון:

  1. מוסיפים את cloud_profilerהייבוא לייבוא ברמה העליונה:

    from google.cloud.aiplatform.training_utils import cloud_profiler
    
  2. מאתחלים את הפלאגין cloud_profiler על ידי הוספת:

    cloud_profiler.init()
    

דוגמה

הנה סקריפט לדוגמה לאימון:

#!/usr/bin/env python

import tensorflow as tf
import argparse
import os
from google.cloud.aiplatform.training_utils import cloud_profiler
import time

"""Train an mnist model and use cloud_profiler for profiling."""

def _create_model():
    model = tf.keras.models.Sequential(
        [
            tf.keras.layers.Flatten(input_shape=(28, 28)),
            tf.keras.layers.Dense(128, activation="relu"),
            tf.keras.layers.Dropout(0.2),
            tf.keras.layers.Dense(10),
        ]
    )
    return model

def main(args):
    strategy = None
    if args.distributed:
        strategy = tf.distribute.MultiWorkerMirroredStrategy()

    mnist = tf.keras.datasets.mnist

    (x_train, y_train), (x_test, y_test) = mnist.load_data()
    x_train, x_test = x_train / 255.0, x_test / 255.0

    if args.distributed:
        strategy = tf.distribute.MultiWorkerMirroredStrategy()
        with strategy.scope():
            model = _create_model()
            model.compile(
                optimizer="adam",
                loss=tf.keras.losses.sparse_categorical_crossentropy,
                metrics=["accuracy"],
            )
    else:
        model = _create_model()
        model.compile(
            optimizer="adam",
            loss=tf.keras.losses.sparse_categorical_crossentropy,
            metrics=["accuracy"],
        )

    # Initialize the profiler.
    cloud_profiler.init()

    # Use AIP_TENSORBOARD_LOG_DIR to update where logs are written to.
    tensorboard_callback = tf.keras.callbacks.TensorBoard(
        log_dir=os.environ["AIP_TENSORBOARD_LOG_DIR"], histogram_freq=1
    )

    model.fit(
        x_train,
        y_train,
        epochs=args.epochs,
        verbose=0,
        callbacks=[tensorboard_callback],
    )
if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "--epochs", type=int, default=100, help="Number of epochs to run model."
    )
    parser.add_argument(
        "--distributed", action="store_true", help="Use MultiWorkerMirroredStrategy"
    )
    args = parser.parse_args()
    main(args)

גישה למרכז הבקרה של כלי הפרופיל

אחרי שמגדירים את סקריפט האימון כדי להפעיל את Profiler, מריצים את סקריפט האימון עם מופע של Vertex AI TensorBoard.

בסקריפט ההדרכה, מוודאים שההגדרות הבאות מוגדרות:

  • מגדירים את BASE_OUTPUT_DIR: לקטגוריה של Cloud Storage שבה רוצים לאחסן את היומנים של Vertex AI TensorBoard שנוצרו על ידי סקריפט האימון.
  • מגדירים את 'serviceAccount': לחשבון השירות שיצרתם עם התפקידים roles/storage.admin ו-roles/aiplatform.user.
  • מגדירים את 'tensorboard': לשם המלא של מופע Vertex AI TensorBoard שרוצים להשתמש בו עם משימת האימון הזו. השם המוגדר במלואו הוא בפורמט הבא:

    projects/PROJECT_NUMBER_OR_ID/locations/REGION/tensorboards/TENSORBOARD_INSTANCE_ID
    

יש שתי דרכים לגשת ללוח הבקרה של Profiler ממסוף Google Cloud :

  • מהדף 'משרות בהתאמה אישית'.
  • בדף 'ניסויים'.

גישה ללוח הבקרה של Profiler דרך הדף Custom jobs

אפשר להשתמש בשיטה הזו כדי לגשת ללוח הבקרה של Profiler גם אם משימת האימון נמצאת במצב Finished.

  1. במסוף Google Cloud , עוברים לכרטיסייה Custom jobs בדף Training.

    עוברים אל משימות בהתאמה אישית

  2. לוחצים על השם של משימת האימון שיצרתם כדי לעבור לדף הפרטים של המשימה.

  3. לוחצים על Open TensorBoard (פתיחת TensorBoard).

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

גישה ללוח הבקרה של כלי הפרופיל דרך הדף 'ניסויים'

אפשר להשתמש בשיטה הזו כדי לגשת ללוח הבקרה של Profiler רק כשמשימת האימון נמצאת במצב Running.

  1. נכנסים לדף Vertex AI Experiments במסוף Google Cloud .

    מעבר אל Vertex AI Experiments

  2. בוחרים את האזור של משימת האימון שיצרתם.

  3. לוחצים על Open TensorBoard (פתיחת TensorBoard) לצד השם של עבודת האימון.

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

תיעוד סשן פרופילים

כדי לתעד סשן פרופילים, משימת האימון צריכה להיות במצב Running. בכרטיסייה פרופיל במופע של Vertex AI TensorBoard, מבצעים את השלבים הבאים:

  1. לוחצים על צילום הפרופיל.
  2. בשדה Profile Service URL(s) or TPU name (כתובות ה-URL של שירות הפרופיל או שם ה-TPU), מזינים:

    workerpool0-0
    
  3. בקטע סוג הכתובת, בוחרים באפשרות כתובת IP.

  4. לוחצים על צילום.

Notebook

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