לפני שמפעילים ניסוי של חיפוש ארכיטקטורה נוירונית ב-Agent Platform, צריך להגדיר סביבה.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Agent Platform API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init -
אחרי שתאתחלו את ה-CLI של gcloud, עדכנו אותו והתקינו את הרכיבים הנדרשים:
gcloud components update gcloud components install beta
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Agent Platform API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init -
אחרי שתאתחלו את ה-CLI של gcloud, עדכנו אותו והתקינו את הרכיבים הנדרשים:
gcloud components update gcloud components install beta
- כדי להקצות לכל המשתמשים ב-Agent Platform Neural Architecture Search את התפקיד משתמש ב-Agent Platform (
roles/aiplatform.user), פנו לאדמין של הפרויקט. - מתקינים את Docker.
אם אתם משתמשים במערכת הפעלה שמבוססת על Linux, כמו Ubuntu או Debian, הוסיפו את שם המשתמש שלכם לקבוצה
dockerכדי שתוכלו להריץ את Docker בלי להשתמש ב-sudo:sudo usermod -a -G docker ${USER}יכול להיות שתצטרכו להפעיל מחדש את המערכת אחרי שתוסיפו את עצמכם לקבוצה
docker. - פותחים את Docker. כדי לוודא ש-Docker פועל, מריצים את הפקודה הבאה של Docker, שמחזירה את השעה והתאריך הנוכחיים:
docker run busybox date
- משתמשים ב-
gcloudככלי עזר של מסמך אימות ל-Docker:gcloud auth configure-docker
-
(אופציונלי) אם רוצים להריץ את הקונטיינר באמצעות GPU באופן מקומי, מתקינים את
nvidia-docker.
הגדרת קטגוריה של Cloud Storage
בקטע הזה מוסבר איך ליצור קטגוריה חדשה. אפשר להשתמש בקטגוריה קיימת, אבל היא חייבת להיות באותו אזור שבו מריצים את המשימות של פלטפורמת AI. בנוסף, אם הוא לא חלק מהפרויקט שבו אתם משתמשים כדי להריץ את Agent Platform Neural Architecture Search, אתם צריכים לתת גישה באופן מפורש לחשבונות השירות של Agent Platform Neural Architecture Search.
-
נותנים שם לקטגוריה החדשה. השם חייב להיות ייחודי בכל הקטגוריות ב-Cloud Storage.
BUCKET_NAME="YOUR_BUCKET_NAME"
כדי לוודא ששם הקטגוריה יהיה ייחודי ובלתי צפוי, השתמשו במזהה ייחודי אוניברסלי (UUID) שנוצר באופן אקראי בשם הקטגוריה, כמו בדוגמה הבאה. כך אפשר למנוע השתלטות על קטגוריות.
PROJECT_ID="YOUR_PROJECT_ID" BUCKET_NAME="${PROJECT_ID}-vertexai-nas-$(uuidgen)"
-
בודקים את שם הקטגוריה שיצרתם.
echo $BUCKET_NAME
-
בוחרים אזור לקטגוריה ומגדירים משתנה סביבה של
REGION.השתמשו באותו אזור שבו אתם מתכננים להריץ משימות של Agent Platform Neural Architecture Search.
לדוגמה, הקוד הבא יוצר את
REGIONומגדיר אותו ל-us-central1:REGION=us-central1
-
יוצרים את הקטגוריה החדשה:
gcloud storage buckets create gs://$BUCKET_NAME --location=$REGION
שליחת בקשה להגדלת מכסת המכשירים בפרויקט
במדריכים נעשה שימוש בכחמש מכונות CPU, והם לא דורשים מכסה נוספת. אחרי שתסיימו את המדריכים, תוכלו להריץ את המשימה של Agent Platform Neural Architecture Search.
במשימה "חיפוש ארכיטקטורה נוירונית" ב-Agent Platform, קבוצה של מודלים מאומנת במקביל. כל מודל מאומן תואם לניסוי.
כדי להעריך את כמות המעבדים (CPU) והמעבדים הגרפיים (GPU) שנדרשים למשימת חיפוש, קראו את הקטע בנושא הגדרת number-of-parallel-trials.
לדוגמה, אם בכל ניסוי משתמשים ב-2 מעבדי GPU מסוג T4 ומגדירים את number-of-parallel-trials ל-20, צריך מכסה כוללת של 40 מעבדי GPU מסוג T4 למשימת החיפוש. בנוסף, אם כל ניסוי משתמש במעבד (CPU) של highmem-16, צריך 16 יחידות מעבד לכל ניסוי, כלומר 320 יחידות מעבד ל-20 ניסויים מקבילים.
עם זאת, אנחנו מבקשים מכסה מינימלית של 10 ניסויים מקבילים (או מכסה של 20 יחידות GPU).
מכסת ברירת המחדל הראשונית של יחידות GPU משתנה בהתאם לאזור ולסוג ה-GPU, ובדרך כלל היא 0, 6 או 12 ל-Tesla_T4 ו-0 או 6 ל-Tesla_V100. מכסת ברירת המחדל הראשונית למעבדי CPU משתנה בהתאם לאזור, ובדרך כלל היא 20, 450 או 2,200.
אופציונלי: אם אתם מתכננים להריץ כמה משימות חיפוש במקביל, צריך להגדיל את המכסה בהתאם. בקשת מכסה לא מחייבת אתכם באופן מיידי. החיוב מתבצע כשמריצים משימה.
אם אין לכם מספיק מכסה ואתם מנסים להפעיל משימה שדורשת יותר משאבים מהמכסה, המשימה לא תופעל ותופיע שגיאה שנראית כך:
Exception: Starting job failed: {'code': 429, 'message': 'The following quota metrics exceed quota limits: aiplatform.googleapis.com/custom_model_training_cpus,aiplatform.googleapis.com/custom_model_training_nvidia_v100_gpus,aiplatform.googleapis.com/custom_model_training_pd_ssd', 'status': 'RESOURCE_EXHAUSTED', 'details': [{'@type': 'type.googleapis.com/google.rpc.DebugInfo', 'detail': '[ORIGINAL ERROR] generic::resource_exhausted: com.google.cloud.ai.platform.common.errors.AiPlatformException: code=RESOURCE_EXHAUSTED, message=The following quota metrics exceed quota limits: aiplatform.googleapis.com/custom_model_training_cpus,aiplatform.googleapis.com/custom_model_training_nvidia_v100_gpus,aiplatform.googleapis.com/custom_model_training_pd_ssd, cause=null [google.rpc.error_details_ext] { code: 8 message: "The following quota metrics exceed quota limits: aiplatform.googleapis.com/custom_model_training_cpus,aiplatform.googleapis.com/custom_model_training_nvidia_v100_gpus,aiplatform.googleapis.com/custom_model_training_pd_ssd" }'}]}
במקרים מסוימים, אם כמה משימות לאותו פרויקט הופעלו בו-זמנית והמכסה לא מספיקה לכולן, אחת מהמשימות תישאר במצב המתנה והאימון שלה לא יתחיל. במקרה כזה, צריך לבטל את המשימה שבתור ולבקש מכסה נוספת או להמתין עד שהמשימה הקודמת תסתיים.
אפשר לבקש מכסה נוספת של מכשירים בדף Quotas.
אפשר להפעיל מסננים כדי למצוא את המכסה שרוצים לערוך:

- בשדה Service, בוחרים באפשרות Agent Platform API.
- בשדה region, בוחרים את האזור שלפיו רוצים לסנן.
- ב-Quota, בוחרים שם של מאיץ עם הקידומת Custom model training.
- ל-GPU מסוג V100, הערך הוא Custom model training Nvidia V100 GPUs per region.
- למעבדים, הערך יכול להיות Custom model training CPUs for N1/E2 machine types per region. המספר של המעבד מייצג את יחידת המעבדים. אם רוצים 8 מעבדי
highmem-16, צריך לבקש מכסה של 8 * 16 = 128 יחידות מעבד. מזינים גם את הערך הרצוי של region.
אחרי שיוצרים בקשה להגדלת המכסה, מקבלים Case number ואימיילים עם עדכונים לגבי סטטוס הבקשה. אישור של בקשה להגדלת מכסת ה-GPU עשוי להימשך בין שניים לחמישה ימי עסקים. באופן כללי, בקשה למכסה של כ-20 עד 30 יחידות GPU אמורה לקבל אישור מהר יותר, תוך יומיים או שלושה, ואישור של כ-100 יחידות GPU עשוי להימשך חמישה ימי עסקים. אישור של מכסת מעבד (CPU) יכול להימשך עד שני ימי עסקים.
עם זאת, אם יש באזור מסוים מחסור גדול בסוג מסוים של GPU, אין ערובה לכך שהבקשה תאושר, גם אם היא קטנה.
במקרה כזה, יכול להיות שתתבקשו לבחור אזור אחר או סוג אחר של GPU. באופן כללי, קל יותר להשיג מעבדי GPU מסוג T4 מאשר מעבדי GPU מסוג V100. מעבדי GPU מסוג T4 דורשים יותר זמן שעון, אבל הם חסכוניים יותר.
הגדרת Artifact Registry לפרויקט
צריך להגדיר מאגר פריטי מידע שנוצרו בתהליך הפיתוח (Artifact Registry) לפרויקט ולאזור שבהם אתם מעבירים את קובצי האימג' של Docker.
נכנסים לדף Artifact Registry של הפרויקט. אם הוא עדיין לא מופעל, קודם צריך להפעיל את Artifact Registry API בפרויקט:

אחרי ההפעלה, לוחצים על CREATE REPOSITORY כדי ליצור מאגר חדש:

בוחרים את nas בשדה Name, את Docker בשדה Format ואת Region בשדה Location type. בשדה Region, בוחרים את המיקום שבו מריצים את המשימות ולוחצים על CREATE.

הפעולה הזו אמורה ליצור את מאגר Docker הרצוי, כמו שמוצג כאן:

צריך גם להגדיר אימות כדי להעביר קובצי Docker למאגר הזה. השלב הזה מופיע בקטע הגדרת הסביבה המקומית שבהמשך.
הגדרת הסביבה המקומית
אתם יכולים להריץ את השלבים האלה באמצעות מעטפת Bash בסביבה המקומית שלכם, או להריץ אותם מ-Notebook במכונה של Workbench ב-Gemini Enterprise Agent Platform.
מגדירים משתני סביבה בסיסיים:
gcloud config set project PROJECT_ID gcloud auth login gcloud auth application-default loginמגדירים אימות של Docker למאגר פריטי המידע שנוצרו:
# example: REGION=europe-west4 gcloud auth configure-docker REGION-docker.pkg.dev(אופציונלי) מגדירים סביבה וירטואלית של Python 3. מומלץ להשתמש ב-Python 3, אבל לא חובה:
sudo apt install python3-pip && \ pip3 install virtualenv && \ python3 -m venv --system-site-packages ~/./nas_venv && \ source ~/./nas_venv/bin/activateמתקינים ספריות נוספות:
pip install google-cloud-storage==2.6.0 pip install pyglove==0.1.0
הגדרה של חשבון שירות
לפני שמריצים משימות NAS, צריך להגדיר חשבון שירות. אתם יכולים להריץ את השלבים האלה באמצעות מעטפת Bash בסביבה המקומית שלכם, או להריץ אותם מ-Notebook במכונה של Gemini Enterprise Agent Platform Workbench.
יוצרים חשבון שירות:
gcloud iam service-accounts create NAME \ --description=DESCRIPTION \ --display-name=DISPLAY_NAMEמקצים לחשבון השירות את התפקידים
roles/aiplatform.userו-roles/storage.objectAdmin:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/aiplatform.user gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/storage.objectAdmin
לדוגמה, הפקודות הבאות יוצרות חשבון שירות בשם my-nas-sa בפרויקט my-nas-project עם התפקידים roles/aiplatform.user ו-roles/storage.objectAdmin:
gcloud iam service-accounts create my-nas-sa \
--description="Service account for NAS" \
--display-name="NAS service account"
gcloud projects add-iam-policy-binding my-nas-project \
--member=serviceAccount:my-nas-sa@my-nas-project.iam.gserviceaccount.com \
--role=roles/aiplatform.user
gcloud projects add-iam-policy-binding my-nas-project \
--member=serviceAccount:my-nas-sa@my-nas-project.iam.gserviceaccount.com \
--role=roles/storage.objectAdmin
הורדת הקוד
כדי להתחיל ניסוי של Agent Platform Neural Architecture Search, צריך להוריד את קוד ה-Python לדוגמה, שכולל מאמנים מובְנים מראש, הגדרות של מרחב חיפוש וספריות לקוח משויכות.
כדי להוריד את קוד המקור, מבצעים את השלבים הבאים.
פותחים טרמינל Shell חדש.
מריצים את הפקודה Git clone:
git clone https://github.com/google/vertex-ai-nas.git