מעקב אחרי תהליך האימון וניפוי באגים באמצעות מעטפת אינטראקטיבית

בדף הזה מוסבר איך להשתמש במעטפת אינטראקטיבית כדי לבדוק את הקונטיינר שבו קוד האימון פועל. אתם יכולים לעיין במערכת הקבצים ולהריץ כלי ניפוי באגים בכל קונטיינר מוכן מראש או קונטיינר בהתאמה אישית שפועל ב-Vertex AI.

שימוש במעטפת אינטראקטיבית כדי לבדוק את קונטיינר האימון יכול לעזור לכם לנפות באגים בקודי האימון או בהגדרות של Vertex AI. לדוגמה, אפשר להשתמש במעטפת אינטראקטיבית כדי:

  • הפעלת כלים למעקב וליצירת פרופילים.
  • ניתוח השימוש ב-GPU.
  • בודקים את Google Cloud ההרשאות שזמינות למאגר.

אפשר גם להשתמש ב-Cloud Profiler כדי לנפות באגים בביצועי אימון המודלים במשימות אימון ללא שרת ב-Vertex AI. פרטים נוספים זמינים במאמר בנושא ביצועי אימון של מודל פרופיל באמצעות Profiler.

לפני שמתחילים

אפשר להשתמש במעטפת אינטראקטיבית כשמבצעים אימון בלי שרת (serverless) עם משאב CustomJob, משאב HyperparameterTuningJob או משאב TrainingPipeline מותאם אישית. במהלך הכנת קוד האימון והגדרת משאב האימון בלי שרת (serverless) שבחרתם, הקפידו לעמוד בדרישות הבאות:

  • מוודאים ש-bash מותקן במאגר ההדרכה.

    בכל מאגרי התגים המוכנים מראש לאימון מותקן bash. אם יוצרים קונטיינר בהתאמה אישית לאימון, צריך להשתמש בקונטיינר בסיסי שכולל את bash או להתקין את bash בקובץ Dockerfile.

  • מבצעים אימון ללא שרת באזור שתומך במעטפת אינטראקטיבית.

  • חשוב לוודא שלכל מי שרוצה לגשת למעטפת אינטראקטיבית יש את ההרשאות הבאות ל Google Cloud פרויקט שבו מתבצע אימון בלי שרת (serverless):

    • aiplatform.customJobs.create
    • aiplatform.customJobs.get
    • aiplatform.customJobs.cancel

    אם אתם מפעילים בעצמכם אימון ללא שרת, סביר להניח שכבר יש לכם את ההרשאות האלה ואתם יכולים לגשת למעטפת אינטראקטיבית. עם זאת, אם רוצים להשתמש במעטפת אינטראקטיבית כדי לבדוק משאב אימון ללא שרתים שנוצר על ידי מישהו אחר בארגון, יכול להיות שתצטרכו לקבל את ההרשאות האלה.

    אחת הדרכים לקבל את ההרשאות האלה היא לבקש מאדמין בארגון שלכם להקצות לכם את התפקיד 'משתמש Vertex AI' (roles/aiplatform.user).

דרישות לגבי בקשות תמיכה מתקדמות

אם אתם משתמשים בתכונות מתקדמות מסוימות, אתם צריכים לעמוד בדרישות הנוספות הבאות:

  • אם מצרפים חשבון שירות בהתאמה אישית למשאב האימון ללא שרת, צריך לוודא שלכל משתמש שרוצה לגשת למעטפת אינטראקטיבית יש את ההרשאה iam.serviceAccounts.actAs לחשבון השירות המצורף.

    במדריך לחשבונות שירות בהתאמה אישית מצוין שצריך את ההרשאה הזו כדי לצרף חשבון שירות. צריך את ההרשאה הזו גם כדי להציג מעטפת אינטראקטיבית במהלך הדרכה ללא שרת.

    לדוגמה, כדי ליצור CustomJob עם חשבון שירות מצורף, צריכה להיות לכם ההרשאה iam.serviceAccounts.actAs לחשבון השירות. אם אחד מהקולגות שלכם ירצה לצפות במעטפת אינטראקטיבית של CustomJob, הוא יצטרך גם את אותה הרשאה iam.serviceAccounts.actAs.

  • אם הגדרתם את הפרויקט לשימוש ב-VPC Service Controls עם Vertex AI, צריך לקחת בחשבון את המגבלות הנוספות הבאות:

    • אי אפשר להשתמש בכתובת IP פרטית לאימון בלי שרת (serverless). אם אתם צריכים להשתמש ב-VPC-SC עם קישור בין רשתות שכנות (peering) של VPC, תצטרכו לבצע הגדרה נוספת כדי להשתמש במעטפת האינטראקטיבית. פועלים לפי ההוראות במאמר לוח הבקרה של Ray ומעטפת אינטראקטיבית עם VPC-SC + קישור בין רשתות שכנות (peering) של VPC כדי להגדיר את המעטפת האינטראקטיבית עם VPC-SC וקישור בין רשתות שכנות (peering) של VPC בפרויקט המשתמש.

    • מתוך מעטפת אינטראקטיבית, אי אפשר לגשת לאינטרנט הציבורי או לGoogle Cloud משאבים מחוץ לגבולות גזרה לשירות.

    • כדי לאבטח את הגישה למעטפות אינטראקטיביות, צריך להוסיף את notebooks.googleapis.com כשירות מוגבל בפרימטר השירות, בנוסף ל-aiplatform.googleapis.com. אם מגבילים רק את aiplatform.googleapis.com ולא את notebooks.googleapis.com, המשתמשים יכולים לגשת למעטפות אינטראקטיביות ממכונות שמחוץ לגבולות הגזרה של השירות, מה שמפחית את היתרון של השימוש ב-VPC Service Controls מבחינת אבטחה.

הפעלת מעטפות אינטראקטיביות

כדי להפעיל מעטפות אינטראקטיביות למשאב אימון בלי שרת (serverless), צריך להגדיר את השדה enableWebAccess API לערך true כשיוצרים CustomJob, HyperparameterTuningJob או TrainingPipeline בהתאמה אישית.

בדוגמאות הבאות אפשר לראות איך עושים את זה באמצעות כמה כלים שונים:

המסוף

פועלים לפי המדריך ליצירת TrainingPipeline בהתאמה אישית במסוף. Google Cloud בחלונית Train new model (אימון מודל חדש), כשמגיעים לשלב Model details (פרטי המודל), מבצעים את הפעולות הבאות:

  1. לוחצים על אפשרויות מתקדמות.

  2. מסמנים את תיבת הסימון הפעלת ניפוי באגים באימון.

לאחר מכן, משלימים את שאר השלבים בתהליך העבודה Train new model (אימון מודל חדש).

gcloud

במדריך יצירת CustomJob ובמדריך יצירת HyperparameterTuningJob מוסבר איך להשתמש בפקודות האלה.

API

גופי הבקשות החלקיים הבאים של REST מראים איפה צריך לציין את השדה enableWebAccess לכל סוג של משאב אימון בלי שרת (serverless):

CustomJob

הדוגמה הבאה היא חלק מגוף הבקשה של שיטת projects.locations.customJobs.create API:

{
  ...
  "jobSpec": {
    ...
    "enableWebAccess": true
  }
  ...
}

דוגמה לשליחת בקשת API ליצירת CustomJob מופיעה במאמר יצירת משימות אימון ללא שרת.

HyperparameterTuningJob

הדוגמה הבאה היא חלק מגוף הבקשה של שיטת projects.locations.hyperparameterTuningJobs.create API:

{
  ...
  "trialJobSpec": {
    ...
    "enableWebAccess": true
  }
  ...
}

דוגמה לשליחת בקשת API ליצירת HyperparameterTuningJob זמינה במאמר שימוש בכוונון היפרפרמטרים.

Custom TrainingPipeline

בדוגמאות הבאות מוצגים גופי בקשות חלקיים של שיטת projects.locations.trainingPipelines.create API. בוחרים באחת מהכרטיסיות הבאות, בהתאם לשימוש בשיפור היפרפרמטרים:

ללא כוונון של היפר-פרמטרים

{
  ...
  "trainingTaskInputs": {
    ...
    "enableWebAccess": true
  }
  ...
}

עם כוונון של היפר-פרמטרים

{
  ...
  "trainingTaskInputs": {
    ...
    "trialJobSpec": {
      ...
      "enableWebAccess": true
    }
  }
  ...
}

דוגמה לשליחת בקשת API ליצירת TrainingPipeline בהתאמה אישית מופיעה במאמר יצירת צינורות להדרכה.

Python

במאמר התקנת Vertex AI SDK ל-Python מוסבר איך להתקין או לעדכן את Vertex AI SDK ל-Python. מידע נוסף מופיע ב מאמרי העזרה של Python API.

מגדירים את הפרמטר enable_web_access לערך true כשמריצים אחת מהשיטות הבאות:

אחרי שתפעילו אימון בלי שרת (serverless) בהתאם להנחיות שבקטע הקודם, מערכת Vertex AI תיצור כתובות URI שאפשר להשתמש בהן כדי לגשת למעטפות אינטראקטיביות. ‫Vertex AI יוצר URI ייחודי לכל צומת אימון בעבודה.

אפשר לעבור למעטפת אינטראקטיבית באחת מהדרכים הבאות:

  • לחיצה על קישור במסוף Google Cloud
  • שימוש ב-Vertex AI API כדי לקבל את ה-URI של גישת האינטרנט של המעטפת
  1. במסוף Google Cloud , בקטע Vertex AI, עוברים לאחד מהדפים הבאים:

  2. לוחצים על השם של משאב ההדרכה ללא שרת.

    אם יצרתם TrainingPipeline לאימון בלי שרת (serverless), לוחצים על השם של CustomJob או HyperparameterTuningJob שנוצר על ידי TrainingPipeline. לדוגמה, אם שם צינור הנתונים הוא PIPELINE_NAME, יכול להיות שהשם הזה יופיע בתור PIPELINE_NAME-custom-job או PIPELINE_NAME-hyperparameter-tuning-job.

  3. בדף של המשרה, לוחצים על הפעלת מסוף אינטרנט. אם העבודה משתמשת בכמה צמתים, לוחצים על הפעלת מסוף אינטרנטי לצד הצומת שרוצים להפעיל עבורו מעטפת אינטראקטיבית.

    חשוב לזכור שאפשר לגשת למעטפת אינטראקטיבית רק בזמן שהעבודה פועלת. אם האפשרות הפעלת מסוף אינטרנט לא מופיעה, יכול להיות שעוד לא התחילה ההרצה של העבודה ב-Vertex AI, או שהעבודה כבר הסתיימה או נכשלה. אם הסטטוס של העבודה הוא Queued או Pending, צריך לחכות דקה ואז לנסות לרענן את הדף.

    אם אתם משתמשים באופטימיזציה של היפרפרמטרים, יש קישורי Launch web terminal נפרדים לכל ניסיון.

קבלת URI לגישה לאינטרנט מה-API

משתמשים ב-method‏ projects.locations.customJobs.get API או ב-method‏ projects.locations.hyperparameterTuningJobs.get API כדי לראות את כתובות ה-URI שבהן אפשר להשתמש כדי לגשת למעטפות אינטראקטיביות.

בהתאם לסוג משאב ההדרכה בלי שרת (serverless) שבו אתם משתמשים, בוחרים באחת מהכרטיסיות הבאות כדי לראות דוגמאות לאופן שבו אפשר למצוא את שדה ה-API‏ webAccessUris, שמכיל URI של מעטפת אינטראקטיבית לכל צומת בעבודה:

CustomJob

בכרטיסיות הבאות מוצגות דרכים שונות לשליחת בקשת projects.locations.customJobs.get:

gcloud

מריצים את הפקודה gcloud ai custom-jobs describe:

gcloud ai custom-jobs describe JOB_ID \
  --region=LOCATION \
  --format=json

מחליפים את מה שכתוב בשדות הבאים:

  • JOB_ID: המזהה המספרי של המשימה. המזהה הזה הוא החלק האחרון בשדה name של המשימה. יכול להיות שהמזהה הוצג לכם כשיצרתם את המשימה. (אם אתם לא יודעים מה מזהה המשרה, אתם יכולים להריץ את הפקודה gcloud ai custom-jobs list ולחפש את המשרה המתאימה).

  • LOCATION: האזור שבו יצרתם את המשימה.

REST

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • LOCATION: האזור שבו יצרתם את המשימה.

  • PROJECT_ID: מזהה הפרויקט.

  • JOB_ID: המזהה המספרי של המשימה. המזהה הזה הוא החלק האחרון בשדה name של המשימה. יכול להיות שהמזהה הוצג לכם כשיצרתם את המשימה.

ה-method של ה-HTTP וכתובת ה-URL:

GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs/JOB_ID

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

 

בפלט, מחפשים את הפרטים הבאים:

{
  ...
  "state": "JOB_STATE_RUNNING",
  ...
  "webAccessUris": {
    "workerpool0-0": "INTERACTIVE_SHELL_URI"
  }
}

אם השדה webAccessUris לא מופיע, יכול להיות שזה קורה כי Vertex AI עדיין לא התחיל להריץ את העבודה. מוודאים שרואים את JOB_STATE_RUNNING בשדה state. אם המצב הוא JOB_STATE_QUEUED או JOB_STATE_PENDING, צריך להמתין דקה ואז לנסות שוב לקבל את פרטי הפרויקט.

HyperparameterTuningJob

בכרטיסיות הבאות מוצגות דרכים שונות לשליחת בקשת projects.locations.hyperparameterTuningJobs.get:

gcloud

מריצים את הפקודה gcloud ai hp-tuning-jobs describe:

gcloud ai hp-tuning-jobs describe JOB_ID \
  --region=LOCATION \
  --format=json

מחליפים את מה שכתוב בשדות הבאים:

  • JOB_ID: המזהה המספרי של המשימה. המזהה הזה הוא החלק האחרון בשדה name של המשימה. יכול להיות שהמזהה הוצג לכם כשיצרתם את המשימה. (אם אתם לא יודעים מה מזהה המשרה, אתם יכולים להריץ את הפקודה gcloud ai hp-tuning-jobs list ולחפש את המשרה המתאימה).

  • LOCATION: האזור שבו יצרתם את המשימה.

REST

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • LOCATION: האזור שבו יצרתם את המשימה.

  • PROJECT_ID: מזהה הפרויקט.

  • JOB_ID: המזהה המספרי של המשימה. המזהה הזה הוא החלק האחרון בשדה name של המשימה. יכול להיות שהמזהה הוצג לכם כשיצרתם את המשימה.

ה-method של ה-HTTP וכתובת ה-URL:

GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/hyperparameterTuningJobs/JOB_ID

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

 

בפלט, מחפשים את הפרטים הבאים:

{
  ...
  "state": "JOB_STATE_RUNNING",
  ...
  "trials": [
    ...
    {
      ...
      "state": "ACTIVE",
      ...
      "webAccessUris": {
        "workerpool0-0": "INTERACTIVE_SHELL_URI"
      }
    }
  ],
}

אם השדה webAccessUris לא מופיע, יכול להיות שזה קורה כי Vertex AI עדיין לא התחיל להריץ את העבודה. מוודאים שרואים את JOB_STATE_RUNNING בשדה state. אם המצב הוא JOB_STATE_QUEUED או JOB_STATE_PENDING, צריך להמתין דקה ואז לנסות שוב לקבל את פרטי הפרויקט.

‫Vertex AI מספק קבוצה של כתובות URI של מעטפת אינטראקטיבית לכל ניסיון של אופטימיזציה של היפרפרמטרים כשהניסיון עובר למצב ACTIVE. אם רוצים לקבל כתובות URI של מעטפת אינטראקטיבית לניסויים מאוחרים יותר, צריך לקבל שוב את פרטי העבודה אחרי שהניסויים האלה יתחילו.

בדוגמה הקודמת מוצג הפלט הצפוי לאימון עם עותק יחיד: כתובת URI אחת לצומת האימון הראשי. אם מבצעים אימון מבוזר, הפלט מכיל כתובת URI אחת לכל צומת אימון, שמזוהה על ידי מאגר העובדים.

לדוגמה, אם למשימה שלכם יש מאגר ראשי של עובדים עם עותק אחד ומאגר משני של עובדים עם שני עותקים, השדה webAccessUris ייראה בערך כך:

{
  "workerpool0-0": "URI_FOR_PRIMARY",
  "workerpool1-0": "URI_FOR_FIRST_SECONDARY",
  "workerpool1-1": "URI_FOR_SECOND_SECONDARY"
}

שימוש במעטפת אינטראקטיבית

כדי להשתמש במעטפת האינטראקטיבית לצורך צומת אימון, עוברים לאחד מביטויי ה-URI שמצאתם בקטע הקודם. מעטפת Bash מופיעה בדפדפן, ומאפשרת לכם גישה למערכת הקבצים של הקונטיינר שבו קוד האימון שלכם פועל ב-Vertex AI.

בקטעים הבאים מתוארים כמה דברים שכדאי לקחת בחשבון כשמשתמשים במעטפת, ומוצגות כמה דוגמאות לכלי מעקב שאפשר להשתמש בהם במעטפת.

מניעת סיום של המשימה

כש-Vertex AI יסיים להריץ את העבודה או את תקופת הניסיון, הגישה למעטפת האינטראקטיבית תיחסם באופן מיידי. במקרה כזה, יכול להיות שתופיע ההודעה command terminated with exit code 137 או שהמעטפת תפסיק להגיב. אם יצרתם קבצים במערכת הקבצים של הקונטיינר, הם לא יישמרו אחרי שהעבודה תסתיים.

במקרים מסוימים, יכול להיות שתרצו להאריך את זמן הריצה של העבודה כדי לבצע ניפוי באגים באמצעות מעטפת אינטראקטיבית. לדוגמה, אפשר להוסיף קוד כמו זה שבהמשך לקוד ההדרכה כדי שהעבודה תמשיך לפעול לפחות שעה אחרי שמתרחשת חריגה:

import time
import traceback

try:
    # Replace with a function that runs your training code
    train_model()
except Exception as e:
    traceback.print_exc()
    time.sleep(60 * 60)  # 1 hour

עם זאת, חשוב לזכור שכל עוד העבודה ממשיכה לפעול, אתם מחויבים על Vertex AI Training.

בדיקת בעיות בהרשאות

האימות בסביבת המעטפת האינטראקטיבית מתבצע באמצעות פרטי כניסה שמוגדרים כברירת מחדל לאפליקציה (ADC) עבור חשבון השירות שמשמש את Vertex AI להפעלת קוד האימון. אפשר להריץ את הפקודה gcloud auth list במעטפת כדי לקבל פרטים נוספים.

במעטפת, אפשר להשתמש ב-bq ובכלים אחרים שתומכים ב-ADC. הפעולה הזו יכולה לעזור לכם לוודא שלמשימה יש גישה לקטגוריה של Cloud Storage, לטבלה ב-BigQuery או לGoogle Cloud משאב אחר שנדרש לקוד האימון.

יצירת תרשים של הרצת Python באמצעות py-spy

py-spy מאפשר ליצור פרופיל של תוכנית Python שפועלת, בלי לשנות אותה. כדי להשתמש ב-py-spy במעטפת אינטראקטיבית:

  1. התקנה של py-spy:

    pip3 install py-spy
    
  2. מריצים את הפקודה ps aux בשורת הפקודה ומחפשים את ה-PID של תוכנית האימון של Python.

  3. מריצים את אחת מהפקודות המשניות שמתוארות במסמכי התיעוד של py-spy, באמצעות ה-PID שמצאתם בשלב הקודם.

  4. אם אתם משתמשים ב-py-spy record כדי ליצור קובץ SVG, אתם צריכים להעתיק את הקובץ הזה לקטגוריה של Cloud Storage כדי שתוכלו לראות אותו בהמשך במחשב המקומי. לדוגמה:

    gcloud storage cp profile.svg gs://BUCKET
    

    מחליפים את BUCKET בשם של קטגוריה שיש לכם גישה אליה.

ניתוח הביצועים באמצעות perf

perf מאפשר לכם לנתח את הביצועים של צומת האימון. כדי להתקין את הגרסה של perf שמתאימה לליבת לינוקס של הצומת, מריצים את הפקודות הבאות:

apt-get update
apt-get install -y linux-tools-generic
rm /usr/bin/perf
LINUX_TOOLS_VERSION=$(ls /usr/lib/linux-tools | tail -n 1)
ln -s "/usr/lib/linux-tools/${LINUX_TOOLS_VERSION}/perf" /usr/bin/perf

אחרי זה תוכלו להריץ כל אחת מהפקודות המשניות שמתוארות במסמכי התיעוד של perf.

אחזור מידע על השימוש ב-GPU

בדרך כלל, בקונטיינרים עם GPU שפועלים בצמתים עם GPU מותקנים מראש כמה כלי שורת פקודה שיכולים לעזור לכם לעקוב אחרי השימוש ב-GPU. לדוגמה:

  • אפשר להשתמש ב-nvidia-smi כדי לעקוב אחרי השימוש ב-GPU בתהליכים שונים.

  • משתמשים ב-nvprof כדי לאסוף מגוון מידע על פרופיל ה-GPU. מכיוון שאי אפשר לצרף את nvprof לתהליך קיים, יכול להיות שתרצו להשתמש בכלי כדי להתחיל תהליך נוסף שיריץ את קוד האימון. (כלומר, קוד האימון יפעל פעמיים בצומת). לדוגמה:

    nvprof -o prof.nvvp python3 -m MODULE_NAME
    

    מחליפים את MODULE_NAME בשם המלא של מודול נקודת הכניסה של אפליקציית האימון, לדוגמה, trainer.task.

    לאחר מכן מעבירים את קובץ הפלט לקטגוריה של Cloud Storage כדי שתוכלו לנתח אותו בהמשך במחשב המקומי. לדוגמה:

    gcloud storage cp prof.nvvp gs://BUCKET
    

    מחליפים את BUCKET בשם של קטגוריה שיש לכם גישה אליה.

  • אם נתקלתם בשגיאת GPU (לא בעיה בהגדרה או ב-Vertex AI), תוכלו להשתמש ב-nvidia-bug-report.sh כדי ליצור דוח על באג.

    לאחר מכן מעבירים את הדוח לקטגוריה של Cloud Storage כדי שתוכלו לנתח אותו בהמשך במחשב המקומי או לשלוח אותו ל-NVIDIA. לדוגמה:

    gcloud storage cp nvidia-bug-report.log.gz gs://BUCKET
    

    מחליפים את BUCKET בשם של קטגוריה שיש לכם גישה אליה.

אם bash לא מוצא אף אחת מהפקודות האלה של NVIDIA, נסו להוסיף את /usr/local/nvidia/bin ואת /usr/local/cuda/bin אל PATH של המעטפת:

export PATH="/usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH}"

לוח הבקרה של Ray ו-Shell אינטראקטיבי עם VPC-SC + קישור בין רשתות VPC שכנות (peering)

  1. מגדירים את peered-dns-domains.

    {
      VPC_NAME=NETWORK_NAME
      REGION=LOCATION
      gcloud services peered-dns-domains create training-cloud \
      --network=$VPC_NAME \
      --dns-suffix=$REGION.aiplatform-training.cloud.google.com.
    
      # Verify
      gcloud beta services peered-dns-domains list --network $VPC_NAME;
    }
        
    • NETWORK_NAME: מעבר לרשת עם שירותי עמיתים.

    • LOCATION: המיקום הרצוי (לדוגמה, us-central1).

  2. מגדירים את DNS managed zone.

    {
      PROJECT_ID=PROJECT_ID
      ZONE_NAME=$PROJECT_ID-aiplatform-training-cloud-google-com
      DNS_NAME=aiplatform-training.cloud.google.com
      DESCRIPTION=aiplatform-training.cloud.google.com
    
      gcloud dns managed-zones create $ZONE_NAME  \
      --visibility=private  \
      --networks=https://www.googleapis.com/compute/v1/projects/$PROJECT_ID/global/networks/$VPC_NAME  \
      --dns-name=$DNS_NAME  \
      --description="Training $DESCRIPTION"
    }
        
    • PROJECT_ID: מזהה הפרויקט. אפשר למצוא את המזהים האלה בדף welcome במסוף Google Cloud .

  3. תיעוד של עסקת DNS.

    {
      gcloud dns record-sets transaction start --zone=$ZONE_NAME
    
      gcloud dns record-sets transaction add \
      --name=$DNS_NAME. \
      --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \
      --zone=$ZONE_NAME \
      --ttl=300
    
      gcloud dns record-sets transaction add \
      --name=*.$DNS_NAME. \
      --type=CNAME $DNS_NAME. \
      --zone=$ZONE_NAME \
      --ttl=300
    
      gcloud dns record-sets transaction execute --zone=$ZONE_NAME
    }
        
  4. שליחת משימת אימון עם מעטפת אינטראקטיבית + VPC-SC + קישור בין רשתות שכנות (peering) של VPC מופעלים.

המאמרים הבאים