בדף הזה מוסבר איך להפעיל את Cloud Profiler כדי שתוכלו לנפות באגים בביצועים של אימון מודלים במשימות אימון ללא שרת.
אימון מודלים יכול להיות יקר מבחינת משאבי מחשוב. בעזרת Profiler אפשר לעקוב אחרי הביצועים של אימון המודל ולבצע אופטימיזציה שלהם. הכלי עוזר להבין את צריכת המשאבים של פעולות האימון. המידע הזה מאפשר לכם לזהות צווארי בקבוק בביצועים ולתקן אותם כדי לאמן מודלים מהר יותר ובעלות נמוכה יותר.
לפני שמתחילים
- ודאו שאתם משתמשים ב-TensorFlow 2.4 או בגרסה מתקדמת יותר.
מתקינים את Vertex AI SDK עם הפלאגין
cloud_profiler. מריצים את הפקודה הבאה מקונטיינר Docker מקומי:pip install google-cloud-aiplatform[cloud_profiler]צריכה להיות לכם מכונה של Vertex AI TensorBoard. הוראות מפורטות זמינות במאמר בנושא יצירת מופע של Vertex AI TensorBoard.
צריך להיות לכם חשבון שירות עם התפקידים
roles/storage.adminו-roles/aiplatform.user. הוראות מפורטות זמינות במאמר יצירת חשבון שירות עם ההרשאות הנדרשות.צריך קטגוריה של Cloud Storage כדי לאחסן את היומנים של Vertex AI TensorBoard. הוראות מפורטות זמינות במאמר יצירת קטגוריה של Cloud Storage לאחסון יומני TensorBoard של Vertex AI.
הפעלת כלי לניתוח ביצועים (profiler)
כדי להפעיל את Profiler למשימת האימון, מוסיפים את השורות הבאות לסקריפט האימון:
מוסיפים את
cloud_profilerהייבוא ברמה העליונה של הייבוא:from google.cloud.aiplatform.training_utils import cloud_profilerמאתחלים את הפלאגין
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
אחרי שמגדירים את סקריפט האימון כדי להפעיל את 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.
במסוף Google Cloud , עוברים לכרטיסייה Custom jobs בדף Training.
לוחצים על השם של משימת האימון שיצרתם כדי לעבור לדף הפרטים של המשימה.
לוחצים על Open TensorBoard (פתיחת TensorBoard).
לוחצים על הכרטיסייה פרופיל.
גישה ללוח הבקרה של כלי הפרופיל דרך הדף 'ניסויים'
אפשר להשתמש בשיטה הזו כדי לגשת ללוח הבקרה של Profiler רק כשמשימת האימון נמצאת במצב Running.
נכנסים לדף Vertex AI Experiments במסוף Google Cloud .
בוחרים את האזור של משימת האימון שיצרתם.
לוחצים על Open TensorBoard (פתיחת TensorBoard) לצד השם של משימת האימון.
לוחצים על הכרטיסייה פרופיל.
תיעוד סשן פרופילים
כדי לתעד סשן פרופילים, משימת האימון צריכה להיות במצב Running. בכרטיסייה פרופיל במופע של Vertex AI TensorBoard, מבצעים את השלבים הבאים:
- לוחצים על צילום הפרופיל.
בשדה Profile Service URL(s) or TPU name (כתובות ה-URL של שירות הפרופיל או שם ה-TPU), מזינים:
workerpool0-0בקטע סוג הכתובת, בוחרים באפשרות כתובת IP.
לוחצים על צילום.
Notebook
המאמרים הבאים
- אפשר לעיין במסמכי התיעוד של Tensorflow Profiler כדי לקבל מידע על כלי הפרופיל ואיך להשתמש בהם כדי לבצע אופטימיזציה של הביצועים של המודל.