צריך להגדיר סביבה לפני שמפעילים ניסוי של חיפוש ארכיטקטורה עצבית ב-Agent Platform.
לפני שמתחילים
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance 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 Cloud de Confiance 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.
-
Configure the gcloud CLI to use your federated identity.
For more information, see 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 User (
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 Platform. בנוסף, אם הוא לא חלק מהפרויקט שבו אתם משתמשים כדי להריץ את 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 Neural Architecture Search מאמנת קבוצה של מודלים במקביל. כל מודל שאומן מתאים לניסוי.
כדי להעריך את מספר המעבדים והמעבדים הגרפיים שדרושים למשימת חיפוש, קוראים את הקטע בנושא הגדרת number-of-parallel-trials.
לדוגמה, אם כל ניסיון משתמש ב-2 GPU מסוג T4 והגדרתם את number-of-parallel-trials ל-20, תצטרכו מכסה כוללת של 40 GPU מסוג T4 לעבודת חיפוש. בנוסף, אם כל ניסיון משתמש ב-highmem-16 מעבדים, תצטרכו 16 יחידות מעבד לכל ניסיון, כלומר 320 יחידות מעבד ל-20 ניסיונות מקבילים.
עם זאת, אנחנו מבקשים מכסה של לפחות 10 ניסויים מקבילים (או מכסת GPU של 20).
מכסת ברירת המחדל הראשונית של GPU משתנה בהתאם לאזור ולסוג ה-GPU, ובדרך כלל היא 0, 6 או 12 עבור Tesla_T4, ו-0 או 6 עבור Tesla_V100. מכסת ברירת המחדל הראשונית של מעבדים משתנה בהתאם לאזור, ובדרך כלל היא 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" }'}]}
במקרים מסוימים, אם התחילו כמה משימות לאותו פרויקט בו-זמנית והמכסה לא מספיקה לכולן, אחת מהמשימות תישאר במצב'בהמתנה בתור' ולא יתחיל אימון שלה. במקרה כזה, צריך לבטל את העבודה שהוכנסה לתור, לבקש הגדלה של המכסה או לחכות עד שהעבודה הקודמת תסתיים.
אפשר לבקש מכסה נוספת למכשירים בדף מכסות.
אפשר להחיל מסננים כדי למצוא את המכסה הרצויה לעריכה:

- בקטע Service (שירות), בוחרים באפשרות Agent Platform API (פלטפורמת סוכנים 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. מעבדי T4 GPU דורשים יותר זמן שעון קיר אבל הם חסכוניים יותר.
הגדרת Artifact Registry לפרויקט
צריך להגדיר מאגר ארטיפקטים לפרויקט ולאזור שבהם מעבירים בדחיפה את קובצי האימג' של Docker.
עוברים לדף Artifact Registry של הפרויקט. אם הוא עדיין לא מופעל, צריך להפעיל את Artifact Registry API בפרויקט:

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

בוחרים באפשרות שם בתור nas, באפשרות פורמט בתור Docker ובאפשרות סוג המיקום בתור אזור. בקטע Region, בוחרים את המיקום שבו מריצים את העבודות ולוחצים על CREATE.

אחרי הפעולה הזו, מאגר Docker הרצוי אמור להיווצר כמו שמוצג בהמשך:

בנוסף, צריך להגדיר אימות כדי לשלוח קובצי Docker למאגר הזה. השלב הזה מופיע בקטע להגדרת סביבה מקומית שבהמשך.
הגדרת הסביבה המקומית
אפשר להריץ את השלבים האלה באמצעות מעטפת Bash בסביבה המקומית, או להריץ אותם מ-Notebook במופע של סביבת עבודה בפלטפורמת הסוכנים של Gemini Enterprise.
הגדרת משתני סביבה בסיסיים:
gcloud config set project PROJECT_ID gcloud auth login gcloud auth application-default loginמגדירים אימות Docker ב-Artifact Registry:
# 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 בסביבה המקומית, או להריץ אותם מנוטבוק במופע של סביבת עבודה בפלטפורמת הסוכנים של Gemini Enterprise.
יוצרים חשבון שירות:
gcloud iam service-accounts create NAME \ --description=DESCRIPTION \ --display-name=DISPLAY_NAMEמקצים לחשבון השירות את התפקידים
aiplatform.userו-storage.objectAdmin:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:NAME@PROJECT_ID.s3ns.iam.gserviceaccount.com \ --role=roles/aiplatform.user gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:NAME@PROJECT_ID.s3ns.iam.gserviceaccount.com \ --role=roles/storage.objectAdmin
לדוגמה, הפקודות הבאות יוצרות חשבון שירות בשם my-nas-sa בפרויקט my-nas-project עם התפקידים aiplatform.user ו-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.s3ns.iam.gserviceaccount.com \
--role=roles/aiplatform.user
gcloud projects add-iam-policy-binding my-nas-project \
--member=serviceAccount:my-nas-sa@my-nas-project.s3ns.iam.gserviceaccount.com \
--role=roles/storage.objectAdmin
הורדת הקוד
כדי להתחיל ניסוי של חיפוש ארכיטקטורה עצבית ב-Agent Platform, צריך להוריד את קוד Python לדוגמה, שכולל מאמנים מוכנים מראש, הגדרות של מרחב החיפוש וספריות לקוח קשורות.
כדי להוריד את קוד המקור, פועלים לפי השלבים הבאים.
פותחים טרמינל Shell חדש.
מריצים את הפקודה Git clone:
git clone https://github.com/google/vertex-ai-nas.git