שימוש בקובץ אימג' מותאם אישית של קונטיינר מספק את הגמישות הגדולה ביותר לאימון ב-Vertex AI. כדי להבין את ההבדל בין שימוש בקובץ אימג' של קונטיינר מותאם אישית לבין שימוש באפליקציית אימון של Python עם קונטיינר מוכן מראש, אפשר לקרוא את המאמר דרישות קוד האימון.
במדריך מפורטים השלבים הבאים:
- יצירת קונטיינר בהתאמה אישית:
- כתיבת Dockerfile שמגדיר את הקונטיינר לעבודה עם Vertex AI וכולל את יחסי התלות שנדרשים לאפליקציית האימון.
- פיתוח והרצה של קונטיינר Docker באופן מקומי.
- העברת קובץ האימג' של הקונטיינר בדחיפה אל Artifact Registry.
לפני שמתחילים
כדי להגדיר מאגר API של Artifact Registry ולהגדיר את Docker בסביבת הפיתוח, פועלים לפי המדריך למתחילים ל-Docker ב-Artifact Registry. חשוב במיוחד להשלים את השלבים הבאים במדריך למתחילים:
- לפני שמתחילים
- בחירת מעטפת
- יצירת מאגר Docker
- הגדרת אימות
יצירת קובץ אימג' מותאם אישית של קונטיינר
אנחנו ממליצים על שני תהליכי עבודה אפשריים ליצירת קובץ אימג' מותאם אישית של קונטיינר:
כותבים את קוד האימון. לאחר מכן, משתמשים בפקודה
local-runב-CLI של gcloud כדי ליצור ולבדוק קובץ אימג' מותאם אישית של קונטיינר על סמך קוד האימון, בלי לכתוב קובץ Dockerfile בעצמכם.אם אתם לא מכירים את Docker, יכול להיות שתהליך העבודה הזה יהיה פשוט יותר. אם אתם פועלים לפי תהליך העבודה הזה, אתם יכולים לדלג על שאר הקטע הזה.
כותבים את קוד האימון. אחר כך, כותבים קובץ Dockerfile ויוצרים על פיו קובץ אימג' של קונטיינר. לבסוף, בודקים את הקונטיינר באופן מקומי.
תהליך העבודה הזה גמיש יותר, כי אתם יכולים להתאים אישית את קובץ האימג' של קונטיינר כמה שתרצו.
בהמשך הקטע הזה מוסברת דוגמה לתהליך העבודה השני.
קוד ההדרכה
אתם יכולים לכתוב קוד לאימון באמצעות כל התלויות בכל שפת תכנות. מוודאים שהקוד עומד בדרישות של קוד האימון. אם אתם מתכננים להשתמש בכוונון היפרפרמטרים, במעבדי GPU או באימון מבוזר, הקפידו לקרוא את הקטעים הרלוונטיים במסמך הזה. בקטעים האלה מפורטים שיקולים ספציפיים לשימוש בתכונות עם קונטיינרים בהתאמה אישית.
יצירת קובץ Dockerfile
יוצרים Dockerfile כדי לציין את כל ההוראות שדרושות ליצירת קובץ אימג' של קונטיינר.
בקטע הזה מוסבר איך ליצור דוגמה כללית של קובץ Docker לשימוש באימון בלי שרת (serverless). מידע נוסף על יצירת קובץ אימג' של קונטיינר מופיע במאמרי העזרה של Docker במדריך למתחילים.
כדי להשתמש ב-Vertex AI, קובץ ה-Dockerfile צריך לכלול פקודות שמבצעות את המשימות הבאות:
- בחירת תמונת בסיס
- התקנה של יחסי תלות נוספים
- העתקת קוד האימון לתמונה
- הגדרת נקודת הכניסה ל-Vertex AI כדי להפעיל את קוד האימון
קובץ ה-Dockerfile יכול לכלול לוגיקה נוספת, בהתאם לצרכים שלכם. מידע נוסף על כל הוראה ספציפית זמין בהפניה לקובץ Docker.
| פקודה בקובץ Dockerfile | תיאור | דוגמה או דוגמאות |
|---|---|---|
FROM image:tag |
מציינת תמונה בסיסית ואת התג שלה. | דוגמאות לתמונות בסיסיות עם תגים:
|
WORKDIR /path/to/directory |
מציינת את הספרייה בתמונה שבה מופעלות ההוראות הבאות. | /root |
|
התקנה של חבילות נוספות באמצעות pip.הערה: אם תמונת הבסיס לא כוללת את |
חבילות לדוגמה:
|
COPY src/training-app.py dest/training-app.py |
מעתין את הקוד של אפליקציית האימון לתמונה. בהתאם למבנה של אפליקציית האימון, סביר להניח שהיא כוללת כמה קבצים. | דוגמאות לשמות של קבצים באפליקציית האימון:
|
|
הפונקציה מגדירה את נקודת הכניסה להפעלת קוד האימון. כשמתחילים אימון ללא שרת, אפשר לבטל את נקודת הכניסה הזו על ידי ציון השדה 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
אם רוצים לבצע אימון ב-Vertex AI באמצעות מכונת 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 למתן שמות לתמונות של מאגרי תגים
הפעלת הקונטיינר באופן מקומי (אופציונלי)
כדי לוודא שקובץ האימג' של הקונטיינר תקין, מריצים אותו כקונטיינר באופן מקומי. סביר להניח שתרצו להריץ את קוד ההדרכה על מערך נתונים קטן יותר או על מספר קצר יותר של איטרציות מאשר מה שאתם מתכננים להריץ ב-Vertex AI. לדוגמה, אם סקריפט נקודת הכניסה בקובץ אימג' של קונטיינר מקבל את הדגל --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 מאותו פרויקט שבו אתם משתמשים ב-Vertex AI, לא צריך להגדיר הרשאות נוספות. Google Cloud אתם יכולים ליצור באופן מיידי משימת אימון בלי שרת (serverless) שמשתמשת בקובץ אימג' של קונטיינר.
עם זאת, אם העליתם את קובץ האימג' של הקונטיינר ל-Artifact Registry בפרויקט אחר Google Cloud מהפרויקט שבו אתם מתכננים להשתמש ב-Vertex AI, אתם צריכים לתת לסוכן השירות של Vertex AI בפרויקט Vertex AI שלכם הרשאה לשלוף את התמונה מהפרויקט האחר. מידע נוסף על סוכן השירות של Vertex AI ואיך מעניקים לו הרשאות
Artifact Registry
כדי ללמוד איך לתת לסוכן השירות של Vertex AI גישה למאגר שלכם ב-Artifact Registry, כדאי לקרוא את מאמרי העזרה בנושא מתן הרשאות ספציפיות למאגר במסמכי Artifact Registry.
המאמרים הבאים
- מידע נוסף על המושגים שקשורים לשימוש במאגרי תגים
- מידע נוסף על דרישות נוספות של קוד האימון לאימון ללא שרתים
- איך יוצרים משימת אימון בלי שרת (serverless) או צינור אימון שמשתמש בקונטיינר המותאם אישית שלכם