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

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

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

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

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

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

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

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

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

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

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

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

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

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

דרישות למקרים מתקדמים

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

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

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

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

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

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

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

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

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

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

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

המסוף

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

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

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

לאחר מכן, משלימים את שאר השלבים בתהליך העבודה אימון מודל חדש.

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 כשמריצים אחת מהשיטות הבאות:

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

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

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

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

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

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

    שימו לב שאפשר לגשת למעטפת אינטראקטיבית רק בזמן שהעבודה פועלת. אם האפשרות הפעלת מסוף אינטרנט לא מופיעה, יכול להיות ש-Agent Platform עדיין לא התחילה להריץ את העבודה, או שהעבודה כבר הסתיימה או נכשלה. אם הסטטוס של העבודה הוא 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, יכול להיות ש-Agent Platform עדיין לא התחילה להריץ את העבודה. מוודאים שרואים את 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, יכול להיות ש-Agent Platform עדיין לא התחילה להריץ את העבודה. מוודאים שרואים את JOB_STATE_RUNNING בשדה state. אם המצב הוא JOB_STATE_QUEUED או JOB_STATE_PENDING, ממתינים דקה ואז מנסים שוב לקבל את פרטי הפרויקט.

פלטפורמת הסוכנים מספקת קבוצה של כתובות 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 מופיעה בדפדפן, ומאפשרת לכם לגשת למערכת הקבצים של הקונטיינר שבו פועל קוד האימון של Agent Platform.

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

מניעה של סיום העבודה

כש-Agent Platform מסיימת להריץ את העבודה או את תקופת הניסיון, אתם מאבדים מיד את הגישה למעטפת האינטראקטיבית. אם זה קורה, יכול להיות שתראו את ההודעה 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.

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

סביבת המעטפת האינטראקטיבית מאומתת באמצעות Application Default Credentials (ADC) עבור חשבון השירות ש-Agent Platform משתמשת בו כדי להריץ את קוד האימון. אפשר להריץ את הפקודה 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 שמתאימה לליבת Linux של הצומת, מריצים את הפקודות הבאות:

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 (לא בעיה בתצורה או ב-Agent Platform), תוכלו להשתמש ב-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 ו-Interactive 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 מופעלים.

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