פריסה ושימוש בקונטיינר של למידה עמוקה (DL)

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

פריסת קונטיינר של DL

לפני שמשתמשים בקונטיינר DL, צריך לבחור ולפרוס קובץ אימג' של קונטיינר שמריץ את משימת למידת המכונה (ML). מסגרות, ספריות וכלים שמותקנים מראש מספקים קונטיינר ל-DL.

פריסת קונטיינר DL באמצעות קובצי kubeconfig

‫Google Distributed Cloud‏ (GDC) air-gapped appliance מספק את kubeconfigהקובץ הבא שפורס את קונטיינר ה-DL:

  • CLUSTER_KUBECONFIG: קובץ ה-kubeconfig של אשכול Kubernetes ב-bare metal. ‫GDC מספק אשכול אחד לכל עומסי העבודה.

מידע נוסף על כניסה לממשק המשתמש ולכלי kubectl זמין במאמר בנושא כניסה. כדי לאחזר את הקובץ CLUSTER_KUBECONFIG אפשר לעיין במאמר איך מקבלים קובץ kubeconfig.

הורדת סקריפט ומערך נתונים לדוגמה של למידת מכונה (ML)

מורידים את סקריפט ה-ML לדוגמה, beginner.ipynb, ואת מערך הנתונים, mnist.npz, כדי להפעיל את המדריך להתחלה מהירה של ML. במדריך הזה נדגים איך לפרוס מאגר DL ולהשתמש בו כדי להריץ ניסויים של למידת מכונה.

mkdir -p /tmp/datasets
cd /tmp/datasets

wget --no-check-certificate
https://GDC_APPLIANCE_URL/.well-known/static/dl-container-tutorial/beginner.ipynb

wget --no-check-certificate
https://GDC_APPLIANCE_URL/.well-known/static/dl-container-tutorial/mnist.npz

מחליפים את GDC_APPLIANCE_URL בשם הדומיין שמשמש לגישה ל-GDC. כשפותחים כתובת URL בפעם הראשונה, GDC מפנה אתכם לדף הכניסה של ספק הזהויות.

חיפוש כתובת ה-IP של מאגר Harbor

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

בשורה הראשונה של קוד הדוגמה מוגדר הנתיב של משתנה הסביבה KUBECONFIG, שמקבל את כתובת הרישום של Harbor. כתובת הרישום של Harbor מספקת גישה לרשימה של קובצי אימג' לקונטיינרים שזמינים.

בשורה השנייה של הקוד לדוגמה, הכלי kubectl משתמש במשתנה הסביבה KUBECONFIG.

בשורה השלישית של הקוד לדוגמה, הפקודה REGISTRY_URL#https:// מסירה את הקידומת https:// מכתובת ה-URL ושומרת את דומיין הרישום של Harbor במשתנה הסביבה REGISTRY_IP.

בשורה האחרונה של הקוד לדוגמה, הכלי kubectl מאחזר את הסיסמה של המשתמש admin.

export KUBECONFIG=CLUSTER_KUBECONFIG

REGISTRY_URL=$(kubectl get harborcluster harbor -n harbor-system -o=jsonpath='{.spec.externalURL}')
REGISTRY_IP=${REGISTRY_URL#https://}
ADMIN_PASS=$(kubectl -n harbor-system get secret harbor-admin -o jsonpath="{.data.secret}" | base64 -d)

בחירת קובץ אימג' של קונטיינר

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

Framework מעבד מידע שם קובץ האימג' של הקונטיינר
תוכנית בסיסית GPU base-cu113
תוכנית בסיסית CPU base-cpu
‫TensorFlow Enterprise 2.x GPU tf2-gpu
PyTorch GPU pytorch-gpu

הטבלה הזו מסודרת לפי מסגרת ומעבד. כדי לבחור תמונה של מאגר תגים של Data Layer שיכולה לעבד את ניסוי ה-ML, פועלים לפי השלבים הבאים:

  1. מזהים את המסגרת, שמכילה את כלי ה-ML.
  2. בוחרים את מעבד המידע. בוחרים את המעבד על סמך סוג משינת ה-ML שרוצים להריץ ועל סמך עוצמת החישוב של המשימה. לדוגמה, אם יש לכם משימת ML שדורשת הרבה משאבי מחשוב, אתם יכולים לבחור אחד ממעבדי ה-GPU ולהקצות משאב GPU לקונטיינר DL.

יצירה ופריסה של קונטיינר למידת מכונה באשכול Kubernetes

כדי ליצור את מכונת GDC, מציינים את הנתיב לקובץ kubeconfig של אשכול Kubernetes בשרת פיזי. משתנה הסביבה KUBECONFIG מציין לאיזה אשכול כלי kubectl פורס את קונטיינר ה-DL. הפקודה kubectl apply פורסת את מכונת הקונטיינר של DL.

מחליפים את CONTAINER_IMAGE_NAME בקובץ אימג' של קונטיינר שנבחר מתוך רשימת קובצי האימג'ים בChoose a container image, ומוודאים שצוין התג.

export KUBECONFIG=CLUSTER_KUBECONFIG

kubectl apply -f - <<EOF
apiVersion: v1
kind: Pod
metadata:
  name: dl-container-pod
  namespace: NAMESPACE
spec:
  containers:
  - image: gcr.io/private-cloud-staging/notebooks/deeplearning-platform-release/CONTAINER_IMAGE_NAME:CONTAINER_IMAGE_TAG
    command: ["tail", "-f", "/dev/null"]
    name: training
EOF

שימוש במאגר תגים של Data Layer שהוטמע

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

העתקת קבצי ההדרכה אל ה-pod של מאגר הנתונים של DL

מעתיקים את הקבצים של מדריך ההתחלה המהירה אל תא ה-DL שלכם. המאמר beginner.ipynb כולל את השלבים לאימון מודל ולשימוש בו כדי ליצור תחזיות. במדריך לאימון מודלים של למידת מכונה (ML) נעשה שימוש בקובץ מערך הנתונים mnist.npz כדי לאמן מודל.

cd /tmp/datasets

kubectl cp beginner.ipynb dl-container-pod:/tmp
kubectl cp mnist.npz dl-container-pod:/tmp

הרצת המדריך למתחילים בנושא למידת מכונה

מריצים את ההדרכה באמצעות הפקודות הבאות. משתמשים בשורה הראשונה כדי להזין את ה-pod של הקונטיינר. אחרי שנכנסים ל-pod של מאגר התגים, משנים את הספרייה ל-tmp ומריצים את הכלי papermill שנארז במאגר התגים של Data Layer. הכלי papermill מריץ את המדריך כדי ליצור מחברת שיוצרת תחזיות.

  1. מזינים טרמינל אינטראקטיבי לתוך ה-Pod של DL:

    kubectl exec -it dl-container-pod -- /bin/bash
    
  2. ב-DL pod context, מריצים את הפקודות הבאות:

    cd tmp
    papermill beginner.ipynb result.ipynb
    

    הפריסה יוצרת קובץ result.ipynb בספרייה /tmp.

  3. צפייה בתוכן ובפלט החיזויים ממודל ה-ML שנוצר:

    cat result.ipynb
    

אופציונלי: מחיקת ה-pod של ה-container של רשימת התפוצה

אחרי שמסיימים להריץ את הניסוי ב-pod של מאגר התגים של Data Layer, מומלץ למחוק את ה-pod:

kubectl delete pod dl-container-pod