יצירת קובץ אימג' של קונטיינר מותאם אישית לאימון

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

במדריך מפורטים השלבים הבאים:

  1. יצירת קונטיינר בהתאמה אישית:
    1. כתיבת Dockerfile שמגדיר את הקונטיינר לעבודה עם Agent Platform וכולל את יחסי התלות שנדרשים לאפליקציית האימון.
    2. יצירה והרצה של קונטיינר Docker באופן מקומי.
  2. העברת קובץ האימג' של הקונטיינר בדחיפה ל-Artifact Registry.

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

כדי להגדיר מאגר API של Artifact Registry ולהגדיר את Docker בסביבת הפיתוח, צריך לפעול לפי המדריך למתחילים ל-Docker ב-Artifact Registry. חשוב במיוחד להשלים את השלבים הבאים במדריך למתחילים:

  • לפני שמתחילים
  • בחירת מעטפת
  • יצירת מאגר Docker
  • הגדרת אימות

יצירת תמונה מותאמת אישית של מאגר

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

  • כותבים את קוד האימון. לאחר מכן, משתמשים בפקודה local-run ב-CLI של gcloud כדי ליצור ולבדוק קובץ אימג' של קונטיינר שמבוסס על קוד האימון שלכם, בלי לכתוב קובץ Dockerfile בעצמכם.

    אם אתם לא מכירים את Docker, תהליך העבודה הזה יכול להיות פשוט יותר. אם אתם פועלים לפי תהליך העבודה הזה, אתם יכולים לדלג על שאר הקטע הזה.

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

    תהליך העבודה הזה גמיש יותר, כי אתם יכולים להתאים אישית את קובץ האימג' של הקונטיינר כמה שתרצו.

בהמשך הקטע הזה מופיעה דוגמה לתהליך העבודה השני.

קוד הדרכה

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

יצירת קובץ Dockerfile

יוצרים Dockerfile כדי לציין את כל ההוראות שדרושות ליצירת קובץ אימג' של קונטיינר.

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

כדי להשתמש ב-Agent Platform, קובץ ה-Dockerfile צריך לכלול פקודות שמבצעות את המשימות הבאות:

  • בחירת תמונת בסיס
  • התקנת יחסי תלות נוספים
  • העתקת קוד האימון לתמונה
  • הגדרת נקודת הכניסה ל-Agent Platform כדי להפעיל את קוד האימון

קובץ ה-Dockerfile יכול לכלול לוגיקה נוספת, בהתאם לצרכים שלכם. מידע נוסף על כל הוראה ספציפית זמין בהפניה לקובץ Docker.

פקודה בקובץ Dockerfile תיאור דוגמה או דוגמאות
FROM image:tag מציינת תמונה בסיסית ואת התג שלה.

דוגמאות לתמונות בסיסיות עם תגים:

  • pytorch/pytorch:latest
  • tensorflow/tensorflow:nightly
  • python:2.7.15-jessie
  • nvidia/cuda:9.0-cudnn7-runtime
WORKDIR /path/to/directory מציינת את הספרייה בתמונה שבה מופעלות ההוראות הבאות. /root
RUN pip install pkg1 pkg2 pkg3 התקנה של חבילות נוספות באמצעות pip.

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

חבילות לדוגמה:

  • google-cloud-storage
  • cloudml-hypertune
  • pandas
COPY src/training-app.py dest/training-app.py מעתין את הקוד של אפליקציית האימון לתמונה. בהתאם למבנה של אפליקציית האימון, סביר להניח שהיא כוללת כמה קבצים.

דוגמאות לשמות של קבצים באפליקציית האימון:

  • model.py
  • task.py
  • data_utils.py
ENTRYPOINT ["exec", "file"] מגדיר את נקודת הכניסה להפעלת קוד האימון. כשמתחילים אימון בלי שרת (serverless), אפשר לשנות את נקודת הכניסה הזו על ידי ציון השדה command ב-ContainerSpec. אפשר גם לציין את השדה args ב-ContainerSpec כדי לספק ארגומנטים נוספים לנקודת הכניסה (ולשנות את ההוראה CMD בתמונת הקונטיינר אם יש כזו). ["python", "task.py"]

הלוגיקה בקובץ ה-Dockerfile עשויה להשתנות בהתאם לצרכים שלכם, אבל באופן כללי היא דומה ללוגיקה הבאה:

# Specifies base image and tag
FROM image:tag
WORKDIR /root

# Installs additional packages
RUN pip install pkg1 pkg2 pkg3

# Downloads training data
RUN curl https://example-url/path-to-data/data-filename --output /root/data-filename

# Copies the trainer code to the docker image.
COPY your-path-to/model.py /root/model.py
COPY your-path-to/task.py /root/task.py

# Sets up the entry point to invoke the trainer.
ENTRYPOINT ["python", "task.py"]

(אופציונלי) שינוי קובץ ה-Dockerfile למכונות וירטואליות של TPU

אם רוצים לאמן את המודל בפלטפורמת הסוכנים באמצעות מכונת TPU וירטואלית, צריך לשנות את קובץ ה-Dockerfile כדי להתקין גרסאות ייעודיות של הספריות tensorflow ו-libtpu. מידע נוסף על התאמת מאגר התגים לשימוש במכונה וירטואלית של TPU

יוצרים את קובץ האימג' של הקונטיינר

יוצרים את ה-URI הנכון של קובץ האימג' באמצעות משתני סביבה, ואז יוצרים את קובץ האימג' של Docker:

export PROJECT_ID=$(gcloud config list project --format "value(core.project)")
export REPO_NAME=REPOSITORY_NAME
export IMAGE_NAME=IMAGE_NAME
export IMAGE_TAG=IMAGE_TAG
export IMAGE_URI=us-central1-docker.pkg.dev/${PROJECT_ID}/${REPO_NAME}/${IMAGE_NAME}:${IMAGE_TAG}

docker build -f Dockerfile -t ${IMAGE_URI} ./

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

  • REPOSITORY_NAME: השם של מאגר Artifact Registry שיצרתם בקטע לפני שמתחילים.
  • IMAGE_NAME: שם לבחירתכם לקובץ האימג' של הקונטיינר.
  • IMAGE_TAG: תג לבחירתכם לגרסה הזו של תמונת מאגר התגים.

מידע נוסף על הדרישות של Artifact Registry למתן שמות לתמונות של מאגרי תגים

הפעלת הקונטיינר באופן מקומי (אופציונלי)

כדי לוודא שקובץ האימג' של הקונטיינר תקין, מריצים אותו כקונטיינר באופן מקומי. כנראה שתרצו להריץ את קוד האימון על מערך נתונים קטן יותר או על מספר קצר יותר של איטרציות ממה שאתם מתכננים להריץ ב-Agent Platform. לדוגמה, אם סקריפט נקודת הכניסה בקובץ אימג' של קונטיינר מקבל את הדגל --epochs כדי לשלוט במספר התקופות שהוא מריץ, אפשר להריץ את הפקודה הבאה:

docker run ${IMAGE_URI} --epochs 1

העברת הקונטיינר אל Artifact Registry

אם ההרצה המקומית פועלת, אפשר להעביר את מאגר התגים אל Artifact Registry.

קודם מריצים את הפקודה gcloud auth configure-docker us-central1-docker.pkg.dev בסביבת הפיתוח, אם עוד לא עשיתם את זה. אחר כך מריצים את הפקודה הבאה:

docker push ${IMAGE_URI}

הרשאות Artifact Registry

אם אתם משתמשים בתמונה של Artifact Registry מאותו Google Cloud פרויקט שבו אתם משתמשים ב-Agent Platform, אין צורך להגדיר הרשאות נוספות. אתם יכולים ליצור באופן מיידי משימת אימון בלי שרת (serverless) שמשתמשת בקובץ אימג' של קונטיינר.

עם זאת, אם העליתם את קובץ האימג' של קונטיינר ל-Artifact Registry בפרויקט Google Cloud שונה מהפרויקט שבו אתם מתכננים להשתמש ב-Agent Platform, אתם צריכים לתת לסוכן השירות של Agent Platform בפרויקט Agent Platform הרשאה לשלוף את קובץ האימג' מהפרויקט האחר. מידע נוסף על סוכן השירות של Agent Platform ועל מתן הרשאות

Artifact Registry

כדי להעניק לסוכן של Agent Platform Service גישה למאגר שלכם ב-Artifact Registry, אפשר לקרוא את המאמר בנושא הענקת הרשאות ספציפיות למאגר במסמכי התיעוד של Artifact Registry.

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