כשמשתמשים באימון בהתאמה אישית כדי לאמן מודלים, אפשר להגדיר את משימת האימון כך שהיומנים של Vertex AI TensorBoard יועלו אוטומטית אל Vertex AI TensorBoard.
אתם יכולים להשתמש בשילוב הזה כדי לעקוב אחרי האימון כמעט בזמן אמת, כי Vertex AI TensorBoard מזרימה את היומנים של Vertex AI TensorBoard בזמן שהם נכתבים ב-Cloud Storage.
הוראות להגדרה הראשונית מופיעות במאמר הגדרה של Vertex AI TensorBoard.
שינויים בתסריט האימון
סקריפט האימון צריך להיות מוגדר כך שיוכל לכתוב יומני TensorBoard לקטגוריה של Cloud Storage. מיקום הקטגוריה יהיה זמין באופן אוטומטי דרך משתנה סביבה מוגדר מראש AIP_TENSORBOARD_LOG_DIR בשירות האימון של Gemini Enterprise Agent Platform.
בדרך כלל אפשר לעשות את זה על ידי ציון os.environ['AIP_TENSORBOARD_LOG_DIR'] בתור ספריית היומן לממשקי ה-API של TensorBoard לכתיבת יומנים בקוד פתוח. בדרך כלל, המיקום של AIP_TENSORBOARD_LOG_DIR מוגדר באמצעות המשתנה staging_bucket.
כדי להגדיר את סקריפט האימון ב-TensorFlow 2.x, יוצרים קריאה חוזרת (callback) של TensorBoard ומגדירים את המשתנה log_dir ל-os.environ['AIP_TENSORBOARD_LOG_DIR']. הקריאה החוזרת של TensorBoard נכללת ברשימת הקריאות החוזרות של TensorFlow model.fit.
tensorboard_callback = tf.keras.callbacks.TensorBoard( log_dir=os.environ['AIP_TENSORBOARD_LOG_DIR'], histogram_freq=1 ) model.fit( x=x_train, y=y_train, epochs=epochs, validation_data=(x_test, y_test), callbacks=[tensorboard_callback], )
מידע נוסף על הגדרת משתני סביבה בסביבת אימון מותאמת אישית ב-Agent Platform.
יצירת משימת אימון בהתאמה אישית
בדוגמה הבאה מוצג תהליך ליצירת משימת אימון בהתאמה אישית.
דוגמה מפורטת ליצירת משימת אימון בהתאמה אישית זמינה במאמר Hello custom training. במאמר יצירת קובץ אימג' של קונטיינר בהתאמה אישית לצורך אימון מוסבר איך ליצור קונטיינרים מותאמים אישית לאימון.
כדי ליצור משימת אימון בהתאמה אישית, משתמשים ב-Vertex AI SDK ל-Python או ב-REST.
Python
Python
project: . אפשר למצוא את המזהים האלה בדף welcome במסוף Google Cloud .
-
location: המיקום שבו יופעל ה-CustomJob. המיקום הזה צריך להיות זהה למיקום של מופע TensorBoard שצוין. -
staging_bucket: קטגוריית Cloud Storage שבה יאוחסנו זמנית ארטיפקטים במהלך קריאות ל-API, כולל יומני TensorBoard. -
display_name: השם המוצג של משימת האימון המותאמת אישית. -
script_path: הנתיב, ביחס לספריית העבודה במערכת הקבצים המקומית, לסקריפט שמשמש כנקודת הכניסה לקוד האימון. -
container_uri: ה-URI של קובץ אימג' של קונטיינר ההדרכה יכול להיות Gemini Enterprise Agent Platform. מאגר תגים מוכן מראש לאימון או מאגר תגים בהתאמה אישית. -
model_serving_container_image_uri: ה-URI של קונטיינר פרסום המודל שמתאים לפרסום המודל שנוצר על ידי סקריפט האימון. -
dataset_id: מספר המזהה של מערך הנתונים שמשמש לאימון. -
model_display_name: השם המוצג של המודל שאומן. -
args: ארגומנטים בשורת הפקודה שיועברו לסקריפט Python. -
replica_count: מספר העותקים של העובדים לשימוש. ברוב המקרים, מגדירים את הערך הזה ל-1 עבור מאגר העובדים הראשון. -
machine_type: סוג המכונה הווירטואלית שבה רוצים להשתמש. רשימה של מכונות וירטואליות נתמכות זמינה במאמר סוגי מכונות. -
accelerator_type: סוג ה-GPU לצירוף לכל מכונת VM במאגר המשאבים. רשימת מעבדי ה-GPU הנתמכים מופיעה במאמר בנושא מעבדי GPU. accelerator_countמספר יחידות ה-GPU לצירוף לכל מכונה וירטואלית במאגר המשאבים. ערך ברירת המחדל הוא1.-
training_fraction_split: החלק ממערך הנתונים שישמש לאימון המודל. -
validation_fraction_split: החלק ממערך הנתונים שמשמש לאימות המודל. -
test_fraction_split: החלק ממערך הנתונים שבו יש להשתמש כדי להעריך את המודל. -
sync: האם להפעיל את השיטה הזו באופן סינכרוני. -
tensorboard_resource_name: שם המשאב של מופע Vertex TensorBoard שאליו יועלו יומני TensorBoard של CustomJob. -
service_account: חובה כשמריצים עם TensorBoard. במאמר יצירה של חשבון שירות עם ההרשאות הנדרשות מוסבר איך עושים את זה.
REST
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- LOCATION_ID: המיקום שבו רוצים להריץ את
CustomJob, לדוגמה, us-central1. המיקום הזה צריך להיות זהה למיקום של מופע TensorBoard שצוין. - PROJECT_ID: [מזהה הפרויקט](/resource-manager/docs/creating-managing-projects#identifiers). .
- TENSORBOARD_INSTANCE_NAME: (חובה) השם המלא של מופע Vertex AI TensorBoard הקיים שבו מאוחסנים היומנים של Vertex AI TensorBoard:
projects/PROJECT_ID/locations/LOCATION_ID/tensorboards/TENSORBOARD_INSTANCE_ID
הערה: אם מופע TensorBoard לא קיים, יצירת customJobs תגרום לשגיאת 404. - GCS_BUCKET_NAME: השם של קטגוריית Cloud Storage שנוצרה במהלך ההגדרה.
כדאי להשתמש בשם ייחודי שאי אפשר לנחש (לדוגמה, לכלול סיומת אקראית).
- USER_SA_EMAIL: (חובה) חשבון השירות שנוצר בשלבים הקודמים, או חשבון השירות שלכם. "USER_SA_NAME@${PROJECT_ID}.iam.gserviceaccount.com"
- TRAINING_CONTAINER: TRAINING_CONTAINER.
- INVOCATION_TIMESTAMP: "$(date +'%Y%m%d-%H%M%S')"
- JOB_NAME: "tensorboard-example-job-${INVOCATION_TIMESTAMP}"
- BASE_OUTPUT_DIR: (חובה) הנתיב שבו נכתב כל הפלט של האימון. Google Cloud "gs://$GCS_BUCKET_NAME/$JOB_NAME"
ה-method של ה-HTTP וכתובת ה-URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/customJobsתוכן בקשת JSON:
{
"displayName": JOB_NAME,
"jobSpec":{
"workerPoolSpecs":[
{
"replicaCount": "1",
"machineSpec": {
"machineType": "n1-standard-8",
},
"containerSpec": {
"imageUri": TRAINING_CONTAINER,
}
}
],
"base_output_directory": {
"output_uri_prefix": BASE_OUTPUT_DIR,
},
"serviceAccount": USER_SA_EMAIL,
"tensorboard": TENSORBOARD_INSTANCE_NAME,
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/PROJECT_ID/locations/LOCATION_ID/customJobs/CUSTOM_JOB_ID",
"displayName": "DISPLAY_NAME",
"jobSpec": {
"workerPoolSpecs": [
{
"machineSpec": {
"machineType": "n1-standard-8"
},
"replicaCount": "1",
"diskSpec": {
"bootDiskType": "pd-ssd",
"bootDiskSizeGb": 100
},
"containerSpec": {
"imageUri": "IMAGE_URI"
}
}
],
"serviceAccount": "SERVICE_ACCOUNT",
"baseOutputDirectory": {
"outputUriPrefix": "OUTPUT_URI_PREFIX"
},
"tensorboard": "projects//locations/LOCATION_ID/tensorboards/tensorboard-id"
},
"state": "JOB_STATE_PENDING",
"createTime": "CREATE-TIME",
"updateTime": "UPDATE-TIME"
}
המאמרים הבאים
- אפשר לעיין במאמר הצגת Vertex AI TensorBoard.
- כך משתמשים ב-Cloud Profiler כדי לשפר את הביצועים של משימות אימון בהתאמה אישית.