1. מבוא
Kubeflow היא ערכת כלים ללמידת מכונה של Kubernetes. הפרויקט מיועד לפריסות של תהליכי עבודה של למידת מכונה (ML) ב-Kubernetes לפשוט, נייד וניתנה להתאמה. המטרה היא לספק דרך פשוטה לפרוס מערכות קוד פתוח מהטובות ביותר ללמידת מכונה (ML) לתשתיות מגוונות. |
איך נראית פריסה של Kubeflow?
פריסת Kubeflow היא:
- נייד – פועל על כל אשכול Kubernetes, ב-Google Cloud Platform (GCP), בארגון או אצל ספקים שונים.
- ניתן להתאמה – אפשר להשתמש במשאבים משתנים ומוגבל רק על ידי מספר המשאבים שמוקצים לאשכול Kubernetes.
- קומפוזבילי – גרסה משופרת עם Service Worker כדי לעבוד באופן לא מקוון או ברשתות באיכות נמוכה.
זהו אמצעי לארגון מיקרו-שירותים בצימוד חלש כיחידה אחת ופריסה שלהם במגוון מיקומים, כמו מחשב נייד או הענן.
ה-Codelab הזה יסביר לך איך ליצור פריסת Kubeflow משלכם באמצעות MiniKF, ואיך להפעיל תהליך עבודה של Kubeflow Pipelines מתוך notebook של Jupyter.
מה תפַתחו
ב-Codelab הזה תפתחו צינור עיבוד נתונים מורכב בתחום מדעי הנתונים באמצעות Kubeflow Pipelines, ללא שימוש בפקודות CLI או בערכות SDK. לא צריך ידע ב-Kubernetes או ב-Docker. בסיום התהליך, התשתית שלכם תכיל:
- מכונה וירטואלית מסוג MiniKF (Mini Kubeflow) שמתקינה באופן אוטומטי:
- Kubernetes (באמצעות Minikube)
- Kubeflow
- Kale, כלי להמרת מסמכי notebook של Jupyter לשימוש כללי לתהליכי עבודה של Kubeflow Pipelines ( GitHub)
- Arrikto Rok לניהול גרסאות של נתונים ושחזור
מה תלמדו
- איך להתקין את Kubeflow עם MiniKF
- איך להמיר את קובצי ה-notebook של Jupyter ל-Kubeflow Pipelines בלי להשתמש בפקודות CLI או בערכות SDK
- איך להריץ את Kubeflow Pipelines מתוך notebook בלחיצת כפתור
- איך ליצור גרסה אוטומטית של הנתונים ב-notebook ובכל שלב בצינור עיבוד הנתונים
מה צריך להכין
- פרויקט GCP פעיל שיש לך בו הרשאות בעלים
זהו Codelab מתקדם שמתמקד ב-Kubeflow. לקבלת רקע נוסף והקדמה לפלטפורמה, אפשר לעיין במסמכים בנושא מבוא ל-Kubeflow. מונחים לא רלוונטיים ובלוקים של קוד עם הפרדה מודגשת, כך שאפשר פשוט להעתיק ולהדביק אותם.
2. הגדרת הסביבה
הגדרת מזהה הפרויקט ושם האשכול ב-GCP
כדי למצוא את מזהה הפרויקט, צריך להיכנס לחלונית הבית של מסוף GCP, שנמצאת בתפריט ההמבורגרים בפינה הימנית העליונה. אם המסך ריק, לוחצים על 'כן' בהודעה כדי ליצור מרכז בקרה.
אם הפרויקט עדיין לא נבחר, לוחצים על Select a project:
ובוחרים את הפרויקט. צריך להיות לכם רק:
3. התקנת MiniKF
יצירת מכונה של Compute
ב-GCP Marketplace, מחפשים את "MiniKF".
בוחרים את המכונה הווירטואלית MiniKF של Arrikto.
לוחצים על הלחצן Launch on Compute Engine (הפעלה ב-Compute Engine) ובוחרים את הפרויקט.
בקטע הגדרה ו- Deploy (פריסה), בוחרים name למכונה של MiniKF ומשאירים את אפשרויות ברירת המחדל. לאחר מכן לוחצים על הלחצן פריסה.
ממתינים להפעלת המכונה של MiniKF Compute.
התחברות אל MiniKF
כשהמכונה הווירטואלית של MiniKF פועלת, מתחברים ומתחברים בלחיצה על לחצן ה-SSH. פועלים לפי ההוראות במסך כדי להריץ את הפקודה minikf
, שמתחילה את הפריסה של Minikube , Kubeflow ו-Rok. הפעולה הזאת עשויה להימשך כמה דקות.
התחברות ל-Kubeflow
בסיום ההתקנה וכל ה-Pods מוכנים, היכנסו ללוח הבקרה של MiniKF. מתחברים ל-Kubeflow באמצעות שם המשתמש והסיסמה של MiniKF.
משתמשי Chrome יראו את המסך הזה:
משתמשי Firefox יראו את המסך הבא:
משתמשי Safari יראו את המסך הזה:
התחברות ל-Rok
אחרי ההתחברות ל-Kubeflow, לוחצים על סמל ההמבורגר בתפריט הימני. מנווטים אל ה-Snapshot Store ומתחברים ל-Rok באמצעות שם המשתמש והסיסמה של MiniKF.
מעולה! פרסתם בהצלחה את MiniKF ב-GCP! עכשיו אתם יכולים ליצור notebooks, לכתוב קוד למידת מכונה ולהריץ את Kubeflow Pipelines. שימוש ב-Rok לניהול גרסאות נתונים ושחזור נתונים.
4. איך מריצים צינור עיבוד נתונים מתוך ה-notebook
בקטע הזה תפעיל את הדוגמה 'טיטאניק', תחרות Kaggle שחוזה אילו נוסעים שרדו את הספינה הטרופה טיטאניק.
יצירת שרת notebook
עוברים לקישור שרתי Notebooks במרכז הבקרה המרכזי של Kubeflow.
לוחצים על שרת חדש.
מציינים שם לשרת ה-notebook.
חשוב לוודא שבחרתם את התמונה הבאה:
gcr.io/arrikto-public/tensorflow-1.14.0-notebook-cpu:kubecon-workshop
מוסיפים נפח נתונים חדש וריק בגודל 5GB ונותנים לו את השם data.
לוחצים על Launch (הפעלה) כדי ליצור את שרת ה-notebook.
כששרת ה-notebook זמין, לוחצים על Connect (התחברות) כדי להתחבר אליו.
הורדה של הנתונים וה-notebook
תיפתח כרטיסייה חדשה עם דף הנחיתה של JupyterLab. יצירת Terminal חדש ב-JupyterLab.
בחלון Terminal, מריצים את הפקודות האלה כדי לעבור לתיקייה data ולהוריד את ה-notebook ואת הנתונים שבהם תשתמשו עד סוף שיעור ה-Lab.
cd data/ git clone -b kubecon-workshop https://github.com/kubeflow-kale/examples
המאגר הזה מכיל סדרה של דוגמאות שנאספו עם נתונים ומחברת notebook עם הערות. עוברים לתיקייה data/examples/titanic-ml-dataset/
בסרגל הצד ופותחים את ה-notebook titanic_dataset_ml.ipynb
.
קודמים ללמידת מכונה של אתגר Titanic
מריצים את ה-notebook לפי ההוראות. שימו לב שהקוד נכשל כי חסרה ספרייה.
חוזרים ל-Terminal ומתקינים את הספרייה החסרה.
pip3 install --user seaborn
מפעילים מחדש את הליבה (kernel) של ה-notebook על ידי לחיצה על הסמל רענון.
מריצים שוב את התא יחד עם הספריות הנכונות ובודקים אם הוא מצליח.
המרת ה-notebook ל-Kubeflow Pipeline
כדי להפעיל את קייל, לוחצים על הסמל של Kubeflow בחלונית הימנית.
בחינת יחסי תלות של כל תא. ניתן לראות איך תאים מרובים יכולים להיות חלק משלב יחיד של צינור עיבוד נתונים, ואיך שלב בצינור עיבוד נתונים עשוי להיות תלוי בשלבים הקודמים.
לוחצים על הלחצן הידור והפעלה.
בודקים את ההתקדמות של תמונת המצב.
כדאי לצפות בהתקדמות של Pipeline Run.
לוחצים על הקישור כדי לעבור לממשק המשתמש של Kubeflow Pipelines ולצפות בהרצה.
צריך להמתין להשלמת התהליך.
מעולה! הרצת את Kubeflow Pipeline מקצה לקצה מה-notebook שלך.
5. שחזור באמצעות תמונות של נפח אחסון
בודקים את התוצאות
מעיינים ביומנים של השלב תוצאות של צינור עיבוד הנתונים השני והאחרון. שימו לב שכל החיזויים מציגים ציון של 100%. מדעני נתונים מנוסים יגלו את זה מיד. זוהי אינדיקציה טובה לכך שהמודלים שלנו לא הכללות, אלא מתאימים יותר מדי את מערך נתוני האימון. סביר להניח שהסיבה לכך היא בעיה בנתונים שהמודלים צורכים.
שחזור המצב הקודם
למרבה המזל, רוק מטפל בניהול גרסאות נתונים ובשחזור של כל הסביבה כי היה בזמן שלחצתם על הלחצן Compile and Run כך תהיה לכם מכונת זמן לנתונים ולקוד שלכם. בואו נחדש את מצב צינור עיבוד הנתונים לפני שנאמן את אחד המודלים, ונראה מה קורה. מעיינים בשלב randomforest ולאחר מכן לוחצים על Artifacts.
פועלים לפי השלבים שמפורטים ב-Markdown, כלומר, צופים בתמונת המצב בממשק המשתמש של Rok, לוחצים על הקישור המתאים.
מעתיקים את כתובת ה-URL של Rok.
עוברים לקישור שרתי Notebook.
לוחצים על שרת חדש.
מדביקים את כתובת ה-URL של ה-Rok שהעתקתם קודם ולוחצים על הלחצן מילוי אוטומטי.
מציינים שם ל-notebook.
חשוב לוודא שבחרתם את התמונה הבאה:
gcr.io/arrikto-public/tensorflow-1.14.0-notebook-cpu:kubecon-workshop
לוחצים על Launch (הפעלה) כדי ליצור את שרת ה-notebook.
כששרת ה-notebook זמין, לוחצים על Connect (התחברות) כדי להתחבר אליו.
שימו לב שה-notebook נפתח בתא המדויק בשלב שבו נוצר צינור עיבוד הנתונים.
ברקע, קייל חידשה את מצב ה-notebook על ידי ייבוא כל הספריות וטעינת המשתנים מהשלבים הקודמים.
ניפוי באגים המצב הקודם
מוסיפים פקודת הדפסה לתא הזה:
print(acc_random_forest)
כדי לאמן מחדש את היער האקראי ולהדפיס את התוצאה, מריצים את התא הפעיל על ידי הקשה על Shift + Return. הוא 100.
עכשיו הגיע הזמן לראות אם יש משהו מוזר בנתוני האימון. כדי לבדוק את הבעיה ולפתור אותה, מוסיפים תא מעל הסימון של יער אקראי. לשם כך, בוחרים את התא הקודם ולוחצים על סמל הפלוס (+).
צריך להוסיף את הטקסט הבא ולהריץ את התא כדי להדפיס את ערכת האימון.
train_df
אופס! העמודה עם תוויות האימון (Survived) נכללה בטעות כתכונות קלט! המודל למד להתמקד באפשרות 'הישרדות' ומתעלמים מהשאר, ומזהמים את הקלט. העמודה הזו תואמת בדיוק ליעד של המודל ולא מופיעה במהלך החיזוי. לכן צריך להסיר אותה ממערך הנתונים לאימון כדי לאפשר למודל ללמוד מהתכונות האחרות.
הוספת תיקון באג
כדי להסיר את העמודה הזו, עורכים את התא ומוסיפים את הפקודה הבאה:
train_df.drop('Survived', axis=1, inplace=True) train_df
מפעילים את Kale ומוודאים שהתא שמסיר את התוויות Survived הוא חלק משלב צינור עיבוד הנתונים featureengineering (הוא צריך להיות באותו צבע מתאר).
כדי להריץ את צינור עיבוד הנתונים שוב, לוחצים על הלחצן Compile and Run
לוחצים על הקישור כדי לעבור לממשק המשתמש של Kubeflow Pipelines ולצפות בהרצה.
מחכים להשלמת שלב התוצאות ומעיינים ביומנים כדי לראות את התוצאות הסופיות. עכשיו יש לך ציוני חיזויים מציאותיים!
6. הסרת המשאבים
השמדת מכונת ה-VM של MiniKF
עוברים אל Deployment Manager במסוף GCP ומוחקים את הפריסה minikf-1
.
7. מזל טוב
כל הכבוד! השלמת בהצלחה תהליך עבודה מקצה לקצה בתחום מדעי הנתונים באמצעות Kubeflow (MiniKF), קייל ורוק!
מה השלב הבא?
מצטרפים לקהילת Kubeflow:
- github.com/kubeflow
- Kubeflow Slack
- kubeflow-discuss@googlegroups.com
- שיחה לקהילה בימי שלישי