היפרפרמטרים הם משתנים ששולטים בתהליך האימון של מודל, כמו גודל אצווה או מספר השכבות הנסתרות ברשת נוירונים עמוקה. התאמה אופטימלית של היפרפרמטרים מחפשת את השילוב הטוב ביותר של ערכי היפרפרמטרים על ידי אופטימיזציה של ערכי מדדים בסדרה של ניסויים. מדדים הם סיכומים סקלריים שמוסיפים למאמן, כמו דיוק המודל.
מידע נוסף על כוונון היפרפרמטרים ב-Gemini Enterprise Agent Platform לדוגמה מפורטת, אפשר לעיין ב-Agent Platform: Hyperparameter Tuning codelab.
בדף הזה נסביר איך:
כדי להכין את אפליקציית האימון לכוונון היפר-פרמטרים, צריך לעדכן אותה כך שהיא תקבל היפר-פרמטרים כארגומנטים של שורת הפקודה ותדווח על ערכי מדדים ל-Agent Platform.
יוצרים משימת אימון של היפר-פרמטרים. מידע נוסף על אפשרויות ההגדרה זמין במאמר הסבר על הגדרת אופטימיזציה של היפרפרמטרים.
הכנת בקשת ההדרכה
במשימה של כוונון היפר-פרמטרים, Agent Platform יוצר ניסויים של משימת האימון עם קבוצות שונות של היפר-פרמטרים ומעריך את היעילות של הניסוי באמצעות המדדים שציינתם. פלטפורמת הסוכן מעבירה ערכים של היפרפרמטרים לאפליקציית האימון שלכם כארגומנטים של שורת פקודה. כדי ש-Agent Platform יוכל להעריך את היעילות של תקופת ניסיון, אפליקציית האימון צריכה לדווח על המדדים ל-Agent Platform.
בקטעים הבאים מוסבר על:
- איך Agent Platform מעבירה היפר-פרמטרים לאפליקציית האימון.
- אפשרויות להעברת מדדים מאפליקציית האימון ל-Agent Platform.
מידע נוסף על הדרישות לגבי אפליקציות אימון ללא שרת שפועלות בפלטפורמת הסוכנים של Gemini Enterprise זמין במאמר דרישות לגבי קוד אימון.
טיפול בארגומנטים של שורת הפקודה עבור ההיפר-פרמטרים שרוצים לכוונן
Agent Platform מגדירה ארגומנטים של שורת פקודה כשהיא קוראת לאפליקציית ההדרכה. משתמשים בארגומנטים של שורת הפקודה בקוד:
מגדירים שם לכל ארגומנט של היפר-פרמטר ומנתחים אותו באמצעות מנתח הארגומנטים המועדף, כמו
argparse. משתמשים באותם שמות של ארגומנטים כשמגדירים את משימת האימון של ההיפר-פרמטרים.לדוגמה, אם אפליקציית האימון היא מודול Python בשם
my_trainerואתם מכווננים היפר-פרמטר בשםlearning_rate, Agent Platform מתחילה כל ניסיון בפקודה כמו הבאה:python3 -m my_trainer --learning_rate learning-rate-in-this-trial
Agent Platform קובע את learning-rate-in-this-trial ומעביר אותו באמצעות הארגומנט
learning_rate.מקצים את הערכים מהארגומנטים של שורת הפקודה להיפרפרמטרים בקוד האימון.
מידע נוסף על הדרישות לניתוח ארגומנטים בשורת הפקודה
דיווח על המדדים ל-Agent Platform
כדי לדווח על המדדים שלכם ל-Agent Platform, צריך להשתמש בcloudml-hypertuneחבילת Python. הספרייה הזו מספקת פונקציות עזר לדיווח על מדדים ל-Agent Platform.
מידע נוסף על דיווח על מדדי היפרפרמטרים
יצירת משימת כוונון של היפר-פרמטרים
בהתאם לכלי שבו רוצים להשתמש כדי ליצור HyperparameterTuningJob, בוחרים באחת מהכרטיסיות הבאות:
המסוף
במסוף Google Cloud , אי אפשר ליצור משאב HyperparameterTuningJob ישירות. עם זאת, אפשר ליצור משאב TrainingPipeline שיוצר HyperparameterTuningJob.
בהוראות הבאות מוסבר איך ליצור TrainingPipeline שיוצר HyperparameterTuningJob ולא עושה שום דבר אחר. אם אתם רוצים להשתמש בתכונות נוספות של TrainingPipeline, כמו אימון עם מערך נתונים מנוהל, תוכלו לקרוא את המאמר יצירת צינורות אימון.
במסוף Google Cloud , בקטע Agent Platform, עוברים לדף Training pipelines.
לוחצים על יצירה כדי לפתוח את החלונית אימון מודל חדש.
בשלב שיטת האימון, מציינים את ההגדרות הבאות:
ברשימה הנפתחת Dataset (קבוצת נתונים), בוחרים באפשרות No managed dataset (אין קבוצת נתונים מנוהלת).
בוחרים באפשרות אימון מותאם אישית (מתקדם).
לוחצים על Continue.
בשלב פרטי המודל, בוחרים באפשרות אימון מודל חדש או אימון גרסה חדשה. אם בוחרים באפשרות 'אימון מודל חדש', מזינים שם לבחירה, MODEL_NAME, למודל. לוחצים על המשך.
בשלב Training container (מאגר תגים לאימון), מציינים את ההגדרות הבאות:
בוחרים אם להשתמש במאגר תגים מוכן מראש או במאגר תגים בהתאמה אישית להדרכה.
בהתאם לבחירה, מבצעים אחת מהפעולות הבאות:
אם רוצים להשתמש בקונטיינר מוכן מראש לאימון, צריך לספק ל-Agent Platform את המידע הדרוש כדי להשתמש בחבילת האימון שהעליתם ל-Cloud Storage:
משתמשים בתפריטים הנפתחים Model framework (מסגרת מודל) ו-Model framework version (גרסת מסגרת המודל) כדי לציין את מאגר התגים המובנה שבו רוצים להשתמש.
בשדה Package location (מיקום החבילה), מציינים את ה-URI של Cloud Storage של אפליקציית האימון של Python שיצרתם והעליתם. הקובץ הזה בדרך כלל מסתיים ב-
.tar.gz.בשדה Python module [מודול Python], מזינים את שם המודול של נקודת הכניסה של אפליקציית האימון.
אם רוצים להשתמש בקונטיינר בהתאמה אישית לאימון, בשדה Container image מציינים את ה-URI של קובץ האימג' של הקונטיינר ב-Artifact Registry או ב-Docker Hub.
בשדה Model output directory (ספריית פלט של המודל), אפשר לציין את ה-URI של Cloud Storage של ספרייה בקטגוריה שיש לכם גישה אליה. הספרייה לא צריכה להתקיים עדיין.
הערך הזה מועבר אל Agent Platform בשדה
baseOutputDirectoryAPI, שקובע כמה משתני סביבה שאפליקציית האימון יכולה לגשת אליהם כשהיא פועלת.אופציונלי: בשדה Arguments (ארגומנטים), אפשר לציין ארגומנטים לשימוש בפלטפורמת הסוכנים כשהיא מתחילה להריץ את קוד ההכשרה. האורך המקסימלי של כל הארגומנטים ביחד הוא 100,000 תווים. ההתנהגות של הארגומנטים האלה שונה בהתאם לסוג מאגר התגים שבו אתם משתמשים:
אם אתם משתמשים במאגר מוכן מראש, Agent Platform מעביר את הארגומנטים כדגלים של שורת הפקודה אל מודול Python.
אם אתם משתמשים במאגר תגים בהתאמה אישית, Agent Platform מבטל את ההוראה
CMDבמאגר התגים שלכם באמצעות הארגומנטים.
לוחצים על Continue.
בשלב Hyperparameter tuning (התאמת היפרפרמטרים), מסמנים את התיבה Enable hyperparameter tuning (הפעלת התאמת היפרפרמטרים) ומציינים את ההגדרות הבאות:
בקטע New Hyperparameter (היפרפרמטר חדש), מציינים את Parameter name (שם הפרמטר) ואת Type (הסוג) של ההיפרפרמטר שרוצים לכוונן. בהתאם לסוג שתציינו, תצטרכו להגדיר את ההגדרות הנוספות של ההיפרפרמטרים שיופיעו.
אם רוצים לכוונן יותר מפרמטר היפר, לוחצים על הוספת פרמטר חדש וחוזרים על השלב הקודם בקטע החדש שמופיע.
חוזרים על הפעולה הזו לכל היפרפרמטר שרוצים לכוון.
בשדה Metric to optimize וברשימה הנפתחת Goal, מציינים את השם והיעד של המדד שרוצים לבצע לו אופטימיזציה.
בשדה Maximum number of trials (מספר הניסויים המקסימלי), מציינים את מספר הניסויים המקסימלי שרוצים שהפלטפורמה של הסוכנים תריץ עבור משימת ההתאמה של ההיפרפרמטרים.
בשדה Maximum number of parallel trials (מספר מקסימלי של ניסויים מקבילים), מציינים את המספר המקסימלי של ניסויים ש-Agent Platform יכולה להריץ בו-זמנית.
ברשימה הנפתחת Search algorithm, מציינים search algorithm לשימוש ב-Agent Platform.
אין צורך להפעיל את המתג הפעלת עצירה מוקדמת, כי הוא לא משפיע על התוצאות.
לוחצים על Continue.
בשלב Compute and pricing (חישוב ותמחור), מציינים את ההגדרות הבאות:
בתפריט הנפתח Region, בוחרים באפשרות region that supports custom training (אזור שתומך באימון מותאם אישית).
בקטע Worker pool 0, מציינים את משאבי המחשוב שבהם רוצים להשתמש לאימון.
אם מציינים מאיצים, צריך לוודא שסוג המאיץ שנבחר זמין באזור שנבחר.
אם רוצים לבצע אימון מבוזר, לוחצים על Add more worker pools (הוספת עוד מאגרי עובדים) ומציינים קבוצה נוספת של משאבי מחשוב לכל מאגר עובדים נוסף שרוצים להוסיף.
לוחצים על Continue.
בשלב Prediction container (מאגר תגים של תחזיות), בוחרים באפשרות No prediction container (אין מאגר תגים של תחזיות).
כדי להפעיל את פייפליין האימון בלי שרת (serverless), לוחצים על Start training (התחלת אימון).
gcloud
בשלבים הבאים מוסבר איך להשתמש ב-Google Cloud CLI כדי ליצור HyperparameterTuningJob עם הגדרה מינימלית יחסית. כדי לקבל מידע על כל אפשרויות ההגדרה שאפשר להשתמש בהן למשימה הזו, אפשר לעיין במסמכי העזרה של הפקודה gcloud ai hp-tuning-jobs create ושל משאב ה-API HyperparameterTuningJob.
יוצרים קובץ YAML בשם
config.yamlעם כמה שדות API שרוצים לציין עבורHyerparameterTuningJobהחדש:config.yamlstudySpec: metrics: - metricId: METRIC_ID goal: METRIC_GOAL parameters: - parameterId: HYPERPARAMETER_ID doubleValueSpec: minValue: DOUBLE_MIN_VALUE maxValue: DOUBLE_MAX_VALUE trialJobSpec: workerPoolSpecs: - machineSpec: machineType: MACHINE_TYPE replicaCount: 1 containerSpec: imageUri: CUSTOM_CONTAINER_IMAGE_URIמחליפים את מה שכתוב בשדות הבאים:
METRIC_ID: השם של מדד היפר-פרמטר לאופטימיזציה. קוד האימון צריך לדווח על המדד הזה כשהוא פועל.
METRIC_GOAL: היעד של מדד ההיפר-פרמטר,MAXIMIZEאוMINIMIZE.
HYPERPARAMETER_ID: השם של היפר-פרמטר לכוונון. קוד האימון צריך לנתח דגל של שורת פקודה עם השם הזה. בדוגמה הזו, ההיפרפרמטר חייב לקבל ערכים של נקודה צפה. מידע נוסף על סוגים אחרים של נתונים של היפרפרמטרים
DOUBLE_MIN_VALUE: הערך המינימלי (מספר) שרוצים ש-Agent Platform תנסה עבור ההיפר-פרמטר הזה.
DOUBLE_MAX_VALUE: הערך המקסימלי (מספר) ש-Agent Platform תנסה עבור ההיפרפרמטר הזה.
MACHINE_TYPE: סוג המכונה הווירטואלית שבה רוצים להשתמש לאימון.
CUSTOM_CONTAINER_IMAGE_URI: ה-URI של קובץ אימג' של קונטיינר Docker עם קוד האימון. איך יוצרים קובץ אימג' של קונטיינר בהתאמה אישיתבדוגמה הזו, צריך להשתמש בקונטיינר בהתאמה אישית. משאבי
HyperparameterTuningJobתומכים גם בקוד אימון בהפצה של קוד מקור ב-Python במקום בקונטיינר בהתאמה אישית.
באותה ספרייה שבה נמצא הקובץ
config.yaml, מריצים את פקודת ה-Shell הבאה:gcloud ai hp-tuning-jobs create \ --region=LOCATION \ --display-name=DISPLAY_NAME \ --max-trial-count=MAX_TRIAL_COUNT \ --parallel-trial-count=PARALLEL_TRIAL_COUNT \ --config=config.yamlמחליפים את מה שכתוב בשדות הבאים:
LOCATION: האזור שבו רוצים ליצור אתHyperparameterTuningJob. להשתמש באזור שתומך באימון ללא שרת.
DISPLAY_NAME: שם תצוגה קליט לבחירתכם עבורHyperparameterTuningJob. מידע נוסף זמין במאמר בנושא משאב REST.
MAX_TRIAL_COUNT: המספר המקסימלי של ניסיונות להרצה.
PARALLEL_TRIAL_COUNT: המספר המקסימלי של ניסויים להרצה במקביל.
REST
בדוגמת הקוד הבאה מוסבר איך ליצור משימת כוונון של היפר-פרמטרים באמצעות השיטה create של המשאב hyperparameterTuningJob.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
LOCATION: האזור שבו רוצים ליצור אתHyperparameterTuningJob. להשתמש באזור שתומך באימון ללא שרת. - PROJECT: מזהה הפרויקט.
-
DISPLAY_NAME: שם תצוגה קליט לבחירתכם עבורHyperparameterTuningJob. מידע נוסף זמין במאמר בנושא משאב REST. - מציינים את המדדים:
-
METRIC_ID: השם של מדד היפר-פרמטר לאופטימיזציה. קוד האימון צריך לדווח על המדד הזה כשהוא פועל. -
METRIC_GOAL: היעד של מדד ההיפר-פרמטר,MAXIMIZEאוMINIMIZE.
-
- מציינים את ההיפרפרמטרים:
-
HYPERPARAMETER_ID: השם של היפר-פרמטר שרוצים לכוון. קוד האימון צריך לנתח דגל של שורת פקודה עם השם הזה. - PARAMETER_SCALE: (אופציונלי) איך צריך לשנות את קנה המידה של הפרמטר. אם הפרמטר הוא מסוג CATEGORICAL, לא צריך להגדיר את הערך הזה. הערכים האפשריים הם
UNIT_LINEAR_SCALE, UNIT_LOG_SCALE, UNIT_REVERSE_LOG_SCALEאוSCALE_TYPE_UNSPECIFIED. - אם סוג ההיפרפרמטר הזה הוא DOUBLE, מציינים את הערכים המינימלי (DOUBLE_MIN_VALUE) והמקסימלי (DOUBLE_MAX_VALUE) של ההיפרפרמטר הזה.
- אם הסוג של ההיפר-פרמטר הזה הוא INTEGER, מציינים את הערכים המינימלי (INTEGER_MIN_VALUE) והמקסימלי (INTEGER_MAX_VALUE) של ההיפר-פרמטר הזה.
- אם סוג ההיפרפרמטר הזה הוא CATEGORICAL, מציינים את הערכים הקבילים (CATEGORICAL_VALUES) כמערך של מחרוזות.
- אם סוג ההיפרפרמטר הזה הוא DISCRETE, מציינים את הערכים הקבילים (DISCRETE_VALUES) כמערך של מספרים.
- מציינים היפרפרמטרים מותנים. היפרפרמטרים מותנים מתווספים לניסוי כשערך ההיפרפרמטר הראשי תואם לתנאי שציינתם.
מידע נוסף על היפרפרמטרים מותנים
- CONDITIONAL_PARAMETER:
ParameterSpecשל הפרמטר המותנה. המפרט הזה כולל את שם הפרמטר, קנה המידה, טווח הערכים וכל הפרמטרים המותנים שתלויים בהיפרפרמטר הזה. - אם הסוג של היפרפרמטר האב הוא INTEGER, צריך לציין רשימה של מספרים שלמים בתור INTEGERS_TO_MATCH. אם הערך של היפרפרמטר האב תואם לאחד מהערכים שצוינו, הפרמטר המותנה הזה יתווסף לניסוי.
- אם הסוג של פרמטר ההורה הוא CATEGORICAL, מציינים רשימה של קטגוריות בתור CATEGORIES_TO_MATCH. אם הערך של פרמטר ההורה תואם לאחד מהערכים שצוינו, הפרמטר המותנה הזה מתווסף לניסוי.
- אם סוג הפרמטר ההיפר-פרמטר של ההורה הוא DISCRETE, צריך לציין רשימה של מספרים שלמים בתור DISCRETE_VALUES_TO_MATCH. אם הערך של ההיפרפרמטר הראשי תואם לאחד מהערכים שצוינו, הפרמטר המותנה הזה יתווסף לניסוי.
- CONDITIONAL_PARAMETER:
-
- ALGORITHM: (אופציונלי). אלגוריתם החיפוש שבו יש להשתמש במשימת כוונון ההיפר-פרמטרים הזו.
הערכים האפשריים הם: יכול להיות
ALGORITHM_UNSPECIFIED,GRID_SEARCHאוRANDOM_SEARCH. -
MAX_TRIAL_COUNT: המספר המקסימלי של ניסיונות להרצה. -
PARALLEL_TRIAL_COUNT: המספר המקסימלי של ניסויים להרצה במקביל. - MAX_FAILED_TRIAL_COUNT: מספר המשימות שיכולות להיכשל לפני שמשימת כוונון ההיפר-פרמטר נכשלת.
- מגדירים את משימת ההכשרה המותאמת אישית של תקופת הניסיון:
-
MACHINE_TYPE: סוג המכונה הווירטואלית שבה רוצים להשתמש לאימון. - ACCELERATOR_TYPE: (אופציונלי). סוג המאיץ לצירוף לכל תקופת ניסיון.
- ACCELERATOR_COUNT: (אופציונלי). מספר המאיצים לצירוף לכל תקופת ניסיון.
- REPLICA_COUNT: מספר העותקים המשוכפלים של העובדים שבהם יש להשתמש בכל ניסיון.
- אם אפליקציית האימון פועלת בקונטיינר בהתאמה אישית, צריך לציין את הפרטים הבאים:
-
CUSTOM_CONTAINER_IMAGE_URI: ה-URI של קובץ אימג' של קונטיינר Docker עם קוד האימון. איך יוצרים קובץ אימג' של קונטיינר בהתאמה אישית - CUSTOM_CONTAINER_COMMAND: (אופציונלי). הפקודה שתופעל כשהקונטיינר יופעל. הפקודה הזו מבטלת את נקודת הכניסה שמוגדרת כברירת מחדל במאגר.
- CUSTOM_CONTAINER_ARGS: (אופציונלי). הארגומנטים שיועברו כשמפעילים את הקונטיינר.
-
- אם אפליקציית האימון היא חבילת Python שפועלת בקונטיינר מוכן מראש, צריך לציין את הפרטים הבאים:
- PYTHON_PACKAGE_EXECUTOR_IMAGE_URI: ה-URI של קובץ אימג' של קונטיינר שמריץ את חבילת ה-Python שצוינה. מידע נוסף על קונטיינרים מוכנים מראש לאימון
- PYTHON_PACKAGE_URIS: המיקום ב-Cloud Storage של קובצי חבילת Python, שהם תוכנית האימון והחבילות שתלויות בה. המספר המקסימלי של כתובות ה-URI של החבילות הוא 100.
- PYTHON_MODULE: השם של מודול Python להפעלה אחרי התקנת החבילות.
- PYTHON_PACKAGE_ARGS: (אופציונלי). ארגומנטים בשורת הפקודה שיועברו אל מודול Python.
- SERVICE_ACCOUNT: (אופציונלי). חשבון השירות שבו Agent Platform ישתמש כדי להריץ את הקוד. מידע נוסף על צירוף חשבון שירות בהתאמה אישית
- TIMEOUT: (אופציונלי). זמן הריצה המקסימלי לכל תקופת ניסיון.
-
- מציינים את LABEL_NAME ואת LABEL_VALUE לכל התוויות שרוצים להחיל על משימה זו של כוונון היפר-פרמטרים.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/hyperparameterTuningJobs
תוכן בקשת JSON:
{
"displayName": DISPLAY_NAME,
"studySpec": {
"metrics": [
{
"metricId": METRIC_ID,
"goal": METRIC_GOAL
}
],
"parameters": [
{
"parameterId": PARAMETER_ID,
"scaleType": PARAMETER_SCALE,
// Union field parameter_value_spec can be only one of the following:
"doubleValueSpec": {
"minValue": DOUBLE_MIN_VALUE,
"maxValue": DOUBLE_MAX_VALUE
},
"integerValueSpec": {
"minValue": INTEGER_MIN_VALUE,
"maxValue": INTEGER_MAX_VALUE
},
"categoricalValueSpec": {
"values": [
CATEGORICAL_VALUES
]
},
"discreteValueSpec": {
"values": [
DISCRETE_VALUES
]
}
// End of list of possible types for union field parameter_value_spec.
"conditionalParameterSpecs": [
"parameterSpec": {
CONDITIONAL_PARAMETER
}
// Union field parent_value_condition can be only one of the following:
"parentIntValues": {
"values": [INTEGERS_TO_MATCH]
}
"parentCategoricalValues": {
"values": [CATEGORIES_TO_MATCH]
}
"parentDiscreteValues": {
"values": [DISCRETE_VALUES_TO_MATCH]
}
// End of list of possible types for union field parent_value_condition.
]
}
],
"ALGORITHM": ALGORITHM
},
"maxTrialCount": MAX_TRIAL_COUNT,
"parallelTrialCount": PARALLEL_TRIAL_COUNT,
"maxFailedTrialCount": MAX_FAILED_TRIAL_COUNT,
"trialJobSpec": {
"workerPoolSpecs": [
{
"machineSpec": {
"machineType": MACHINE_TYPE,
"acceleratorType": ACCELERATOR_TYPE,
"acceleratorCount": ACCELERATOR_COUNT
},
"replicaCount": REPLICA_COUNT,
// Union field task can be only one of the following:
"containerSpec": {
"imageUri": CUSTOM_CONTAINER_IMAGE_URI,
"command": [
CUSTOM_CONTAINER_COMMAND
],
"args": [
CUSTOM_CONTAINER_ARGS
]
},
"pythonPackageSpec": {
"executorImageUri": PYTHON_PACKAGE_EXECUTOR_IMAGE_URI,
"packageUris": [
PYTHON_PACKAGE_URIS
],
"pythonModule": PYTHON_MODULE,
"args": [
PYTHON_PACKAGE_ARGS
]
}
// End of list of possible types for union field task.
}
],
"scheduling": {
"TIMEOUT": TIMEOUT
},
"serviceAccount": SERVICE_ACCOUNT
},
"labels": {
LABEL_NAME_1": LABEL_VALUE_1,
LABEL_NAME_2": LABEL_VALUE_2
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/12345/locations/us-central1/hyperparameterTuningJobs/6789",
"displayName": "myHyperparameterTuningJob",
"studySpec": {
"metrics": [
{
"metricId": "myMetric",
"goal": "MINIMIZE"
}
],
"parameters": [
{
"parameterId": "myParameter1",
"integerValueSpec": {
"minValue": "1",
"maxValue": "128"
},
"scaleType": "UNIT_LINEAR_SCALE"
},
{
"parameterId": "myParameter2",
"doubleValueSpec": {
"minValue": 1e-07,
"maxValue": 1
},
"scaleType": "UNIT_LINEAR_SCALE"
}
],
"ALGORITHM": "RANDOM_SEARCH"
},
"maxTrialCount": 20,
"parallelTrialCount": 1,
"trialJobSpec": {
"workerPoolSpecs": [
{
"machineSpec": {
"machineType": "n1-standard-4"
},
"replicaCount": "1",
"pythonPackageSpec": {
"executorImageUri": "us-docker.pkg.dev/vertex-ai/training/training-tf-cpu.2-1:latest",
"packageUris": [
"gs://my-bucket/my-training-application/trainer.tar.bz2"
],
"pythonModule": "my-trainer.trainer"
}
}
]
}
}
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaההוראות להגדרה במאמר מדריך למתחילים של Agent Platform באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Agent Platform Java API.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Python
במאמר התקנת Vertex AI SDK ל-Python מוסבר איך להתקין או לעדכן את Vertex AI SDK ל-Python. מידע נוסף מופיע ב מאמרי העזרה של Python API.
הגדרת משימת אימון של היפר-פרמטרים
משימות כוונון של היפר-פרמטרים מחפשות את השילוב הטוב ביותר של היפר-פרמטרים כדי לבצע אופטימיזציה של המדדים. משימות של כוונון היפר-פרמטרים עושות את זה על ידי הפעלת כמה ניסויים של אפליקציית האימון עם קבוצות שונות של היפר-פרמטרים.
כשמגדירים משימת כוונון של היפר-פרמטר, צריך לציין את הפרטים הבאים:
ההיפר-פרמטרים שרוצים לכוונן והמדדים שרוצים להשתמש בהם כדי להעריך ניסויים.
פרטים על מספר הניסויים שיופעלו כחלק מעבודת ההתאמה הזו, כמו:
פרטים על משימת האימון ללא שרת שמופעלת לכל תקופת ניסיון, כמו:
סוג המכונה שבה מופעלים ג'ובים של תקופת הניסיון והמאיצים שבהם נעשה שימוש בג'וב.
פרטים על עבודת החבילה המותאמת אישית של Python או של מאגר התגים.
הגבלת מספר תקופות הניסיון
מחליטים כמה ניסויים רוצים לאפשר לשירות להריץ ומגדירים את הערך maxTrialCount באובייקט HyperparameterTuningJob.
יש שני אינטרסים מנוגדים שצריך לקחת בחשבון כשמחליטים כמה תקופות ניסיון לאפשר:
- זמן (ולכן גם עלות)
- דיוק
הגדלת מספר הניסויים בדרך כלל מניבה תוצאות טובות יותר, אבל לא תמיד. בדרך כלל יש נקודה של תפוקה שולית פוחתת, שאחריה לניסויים נוספים יש השפעה מועטה או בכלל לא על הדיוק. לפני שמתחילים עבודה עם מספר גדול של ניסויים, כדאי להתחיל עם מספר קטן של ניסויים כדי לאמוד את ההשפעה של ההיפרפרמטרים שבחרתם על הדיוק של המודל.
כדי להפיק את המרב מהתאמת היפרפרמטרים, לא מומלץ להגדיר ערך מקסימלי שהוא נמוך מפי עשרה ממספר ההיפרפרמטרים שבהם אתם משתמשים.
ניסויים מקבילים
אפשר לציין כמה ניסויים יכולים לפעול במקביל על ידי הגדרת parallelTrialCount ב-HyperparameterTuningJob.
הפעלת ניסויים מקבילים מקצרת את משך הזמן של משימת האימון (בזמן אמת – בדרך כלל לא משתנה משך העיבוד הכולל הנדרש). עם זאת, הפעלה מקבילה עלולה לפגוע ביעילות הכוללת של משימת ההתאמה. הסיבה לכך היא ששיפור ההיפרפרמטרים מתבסס על תוצאות של ניסויים קודמים כדי להקצות ערכים להיפרפרמטרים של ניסויים עוקבים. כשמריצים ניסויים במקביל, חלק מהניסויים מתחילים בלי שהתוצאות של ניסויים אחרים שעדיין פועלים משפיעות עליהם.
אם משתמשים בניסויים מקבילים, שירות אופטימיזציית ההיפרפרמטרים מספק כמה אשכולות עיבוד לאימון (או כמה מכונות נפרדות במקרה של מאמן עם תהליך יחיד). הגדרת המאגר של העובדים שקבעתם לעבודה משמשת לכל אשכול אימון בנפרד.
טיפול בתקופות ניסיון שנכשלו
אם ניסיונות כוונון ההיפרפרמטרים מסתיימים עם שגיאות, כדאי לסיים את משימת האימון מוקדם מהמתוכנן. מגדירים את השדה maxFailedTrialCount ב-HyperparameterTuningJob למספר הניסיונות שנכשלו שרוצים לאפשר. אחרי שמספר הניסיונות הזה נכשל, Agent Platform
מסיים את משימת ההדרכה. הערך של maxFailedTrialCount חייב להיות קטן מ-maxTrialCount או שווה לו.
אם לא מגדירים את הערך maxFailedTrialCount, או אם מגדירים אותו לערך 0, Agent Platform משתמשת בכללים הבאים כדי לטפל בניסיונות שלא צלחו:
- אם תקופת הניסיון הראשונה של העבודה נכשלת, Agent Platform מפסיק את העבודה באופן מיידי. אם הניסיון הראשון נכשל, כנראה שיש בעיה בקוד האימון, ולכן סביר להניח שגם ניסיונות נוספים ייכשלו. סיום העבודה מאפשר לאבחן את הבעיה בלי לחכות לניסיונות נוספים ובלי לשלם עלויות גבוהות יותר.
- אם הניסיון הראשון מצליח, יכול להיות שפלטפורמת הסוכן תסיים את העבודה אחרי כשלים במהלך ניסיונות עוקבים, על סמך אחד מהקריטריונים הבאים:
- מספר הניסיונות הכושלים גדל יותר מדי.
- היחס בין ניסיונות כושלים לניסיונות מוצלחים גדל יותר מדי.
הכללים האלה עשויים להשתנות. כדי להבטיח התנהגות ספציפית, צריך להגדיר את השדה maxFailedTrialCount.
ניהול משימות כוונון של היפר-פרמטר
בקטעים הבאים מוסבר איך לנהל את משימות האופטימיזציה של ההיפרפרמטרים.
אחזור מידע על משימת כוונון של היפרפרמטרים
בדוגמאות הקוד הבאות אפשר לראות איך לאחזר משימת כוונון של היפר-פרמטרים.
gcloud
משתמשים בפקודה gcloud ai hp-tuning-jobs describe:
gcloud ai hp-tuning-jobs describe ID_OR_NAME \
--region=LOCATION
מחליפים את מה שכתוב בשדות הבאים:
ID_OR_NAME: השם או המזהה המספרי שלHyperparameterTuningJob. (המזהה הוא החלק האחרון של השם).יכול להיות שראיתם את המזהה או השם כשנוצר
HyperparameterTuningJob. אם אתם לא יודעים מה המזהה או השם, אתם יכולים להריץ את הפקודהgcloud ai hp-tuning-jobs listולחפש את המשאב המתאים.
LOCATION: האזור שבו נוצרHyperparameterTuningJob.
REST
דוגמת הקוד הבאה מראה איך לאחזר משימה של כוונון היפר-פרמטרים באמצעות השיטה get של משאב hyperparameterTuningJob.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
LOCATION: האזור שבו נוצרHyperparameterTuningJob. - NAME: שם משימת כוונון ההיפר-פרמטר. שם המשימה מופיע בפורמט הבא:
projects/{project}/LOCATIONS/{LOCATION}/hyperparameterTuningJobs/{hyperparameterTuningJob}.
ה-method של ה-HTTP וכתובת ה-URL:
GET https://LOCATION-aiplatform.googleapis.com/v1/NAME
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/12345/LOCATIONs/us-central1/hyperparameterTuningJobs/6789",
"displayName": "my-hyperparameter-tuning-job",
"studySpec": {
"metrics": [
{
"metricId": "my_metric",
"goal": "MINIMIZE"
}
],
"parameters": [
{
"parameterId": "my_parameter",
"doubleValueSpec": {
"minValue": 1e-05,
"maxValue": 1
}
}
]
},
"maxTrialCount": 3,
"parallelTrialCount": 1,
"trialJobSpec": {
"workerPoolSpecs": [
{
"machineSpec": {
"machineType": "n1-standard-4"
},
"replicaCount": "1",
"pythonPackageSpec": {
"executorImageUri": "us-docker.pkg.dev/vertex-ai/training/training-tf-cpu.2-1:latest",
"packageUris": [
"gs://my-bucket/my-training-application/trainer.tar.bz2"
],
"pythonModule": "my-trainer.trainer"
}
}
]
},
"trials": [
{
"id": "2",
"state": "SUCCEEDED",
"parameters": [
{
"parameterId": "my_parameter",
"value": 0.71426874725564571
}
],
"finalMeasurement": {
"stepCount": "2",
"metrics": [
{
"metricId": "my_metric",
"value": 0.30007445812225342
}
]
},
"startTime": "2020-09-09T23:39:15.549112551Z",
"endTime": "2020-09-09T23:47:08Z"
},
{
"id": "3",
"state": "SUCCEEDED",
"parameters": [
{
"parameterId": "my_parameter",
"value": 0.3078893356622992
}
],
"finalMeasurement": {
"stepCount": "2",
"metrics": [
{
"metricId": "my_metric",
"value": 0.30000102519989014
}
]
},
"startTime": "2020-09-09T23:49:22.451699360Z",
"endTime": "2020-09-09T23:57:15Z"
},
{
"id": "1",
"state": "SUCCEEDED",
"parameters": [
{
"parameterId": "my_parameter",
"value": 0.500005
}
],
"finalMeasurement": {
"stepCount": "2",
"metrics": [
{
"metricId": "my_metric",
"value": 0.30005377531051636
}
]
},
"startTime": "2020-09-09T23:23:12.283374629Z",
"endTime": "2020-09-09T23:36:56Z"
}
],
"state": "JOB_STATE_SUCCEEDED",
"createTime": "2020-09-09T23:22:31.777386Z",
"startTime": "2020-09-09T23:22:34Z",
"endTime": "2020-09-10T01:31:24.271307Z",
"updateTime": "2020-09-10T01:31:24.271307Z"
}
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaההוראות להגדרה במאמר מדריך למתחילים של Agent Platform באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Agent Platform Java API.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Python
במאמר התקנת Vertex AI SDK ל-Python מוסבר איך להתקין או לעדכן את Vertex AI SDK ל-Python. מידע נוסף מופיע ב מאמרי העזרה של Python API.
ביטול משימת כוונון של היפר-פרמטר
בדוגמאות הקוד הבאות אפשר לראות איך לבטל משימת כוונון של היפר-פרמטרים.
gcloud
משתמשים בפקודה gcloud ai hp-tuning-jobs cancel:
gcloud ai hp-tuning-jobs cancel ID_OR_NAME \
--region=LOCATION
מחליפים את מה שכתוב בשדות הבאים:
ID_OR_NAME: השם או המזהה המספרי שלHyperparameterTuningJob. (המזהה הוא החלק האחרון של השם).יכול להיות שראיתם את המזהה או השם כשנוצר
HyperparameterTuningJob. אם אתם לא יודעים מה המזהה או השם, אתם יכולים להריץ את הפקודהgcloud ai hp-tuning-jobs listולחפש את המשאב המתאים.
LOCATION: האזור שבו נוצרHyperparameterTuningJob.
REST
בדוגמת הקוד הבאה מוצג איך לבטל משימת כוונון היפר-פרמטרים באמצעות השיטה cancel של המשאב hyperparameterTuningJob.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
LOCATION: האזור שבו נוצרHyperparameterTuningJob. - NAME: שם משימת כוונון ההיפר-פרמטר. שם המשימה מופיע בפורמט הבא:
projects/{project}/locations/{location}/hyperparameterTuningJobs/{hyperparameterTuningJob}.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/NAME:cancel
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אמורים לקבל קוד סטטוס של הצלחה (2xx) ותגובה ריקה.
Python
במאמר התקנת Vertex AI SDK ל-Python מוסבר איך להתקין או לעדכן את Vertex AI SDK ל-Python. מידע נוסף מופיע ב מאמרי העזרה של Python API.
מחיקה של משימת כוונון היפר-פרמטר
בדוגמאות הקוד הבאות מוסבר איך למחוק משימת כוונון היפר-פרמטרים באמצעות Agent Platform SDK ל-Python ו-API בארכיטקטורת REST.
REST
כדי למחוק משימה של כוונון היפר-פרמטרים באמצעות השיטה delete של המשאב hyperparameterTuningJob, אפשר להשתמש בדוגמת הקוד הבאה.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- LOCATION: האזור שלכם.
- NAME: שם משימת כוונון ההיפר-פרמטר. שם המשימה מופיע בפורמט הבא:
projects/{project}/LOCATIONs/{LOCATION}/hyperparameterTuningJobs/{hyperparameterTuningJob}.
ה-method של ה-HTTP וכתובת ה-URL:
DELETE https://LOCATION-aiplatform.googleapis.com/v1/NAME
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אמורים לקבל קוד סטטוס של הצלחה (2xx) ותגובה ריקה.
Python
במאמר התקנת Vertex AI SDK ל-Python מוסבר איך להתקין או לעדכן את Vertex AI SDK ל-Python. מידע נוסף מופיע ב מאמרי העזרה של Python API.
המאמרים הבאים
- מידע נוסף על המושגים שקשורים לכוונון היפרפרמטרים
- איך מתזמנים משימות אימון ללא שרתים על סמך זמינות המשאבים