שימוש בקובץ אימג' מותאם אישית של קונטיינר מספק את הגמישות הגדולה ביותר לאימון ב-Gemini Enterprise Agent Platform. כדי להבין את ההבדל בין שימוש בקובץ אימג' מותאם אישית של קונטיינר לבין שימוש באפליקציית אימון של Python עם קונטיינר מוכן מראש, אפשר לקרוא את המאמר דרישות קוד האימון.
במדריך מפורטים השלבים הבאים:
- יצירת קונטיינר בהתאמה אישית:
- כתיבת Dockerfile שמגדיר את הקונטיינר לעבודה עם Agent Platform וכולל את יחסי התלות שנדרשים לאפליקציית האימון.
- יצירה והרצה של קונטיינר Docker באופן מקומי.
- העברת קובץ האימג' של הקונטיינר בדחיפה ל-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 |
מציינת תמונה בסיסית ואת התג שלה. | דוגמאות לתמונות בסיסיות עם תגים:
|
WORKDIR /path/to/directory |
מציינת את הספרייה בתמונה שבה מופעלות ההוראות הבאות. | /root |
|
התקנה של חבילות נוספות באמצעות pip.הערה: אם תמונת הבסיס לא כוללת את |
חבילות לדוגמה:
|
COPY src/training-app.py dest/training-app.py |
מעתין את הקוד של אפליקציית האימון לתמונה. בהתאם למבנה של אפליקציית האימון, סביר להניח שהיא כוללת כמה קבצים. | דוגמאות לשמות של קבצים באפליקציית האימון:
|
|
מגדיר את נקודת הכניסה להפעלת קוד האימון. כשמתחילים אימון בלי שרת (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.
המאמרים הבאים
- מידע נוסף על המושגים שקשורים לשימוש במאגרי תגים
- מידע נוסף על דרישות נוספות של קוד לאימון באימון ללא שרתים
- איך יוצרים משימת אימון ללא שרת או צינור אימון שמשתמשים בקונטיינר בהתאמה אישית.