MATLAB Container – כל מה שצריך במקום אחד
זה קרה בצהרי היום באמצע תל אביב הפקוקה כשזה היכה בי.
הדמו שאנחנו צריכים עכשיו להציג ללקוח לא יעבוד! הקבצים שלנו קומפלו על Windows, ואילו מערכת ההפעלה של הלקוח היא Linux, תהום פעורה בינינו והקבצים פשוט לא ירוצו.
זה בדיוק היה הרגע שבו התחלתי להתעניין בדוקרים, קונטיינרים ושאר מכולות.
חשבתי לעצמי, כמה מדובר בדבר המדויק שהיינו מאחלים לעצמנו בפיקניקים וטיולים משפחתיים.
שיהיה ברשותנו מעין כלי אחד שיוכל להכיל את "כל הבית", שנוכל לקחת כל מה שאנחנו צריכים איתנו, לא יותר ולא פחות והעיקר שיעבוד בכל נקודת יעד אליה נגיע.
עם Docker, ניתן להתייחס למכולות כמו מכונות וירטואליות קלות במיוחד ומודולריות. אנחנו מקבלים גמישות רבה עם המכלים האלה. אפשר ליצור, לפרוס, להעתיק ולהעביר אותם מסביבה לסביבה, מה שעוזר לייעל את האפליקציות שלנו עבור פלטפורמות שונות בענן ובסביבות נוספות.
אבל בואו נתחיל בהתחלה, נעשה קצת סדר ונפזר את הערפל עם קצת טרמינולוגיה:
מה זה מיכל?
מיכל או קונטיינר, הוא יחידה מבודדת של תוכנה המכילה את כל הדרוש להפעלת אפליקציה ספציפית, כולל קוד, ספריות, תלות, מנהלי התקנים והגדרות. למכלים יש כמה עוצמות, כגון:
- עקביות: קונטיינרים מבטיחים התנהגות עקבית ללא קשר למקום שבו נפרוס אותם מכיוון שהם אורזים את כל התלות בתוכנה הדרושה להפעלת אפליקציה. קונטיינרים פועלים ומייצרים את אותו פלט בכל סביבה ולכן, מכולות אידיאליות להפעלת אותו יישום בסביבות מרובות.
- ניידות: ניתן לפרוס קונטיינרים כמעט בכל מערכת הפעלה או פלטפורמה. קונטיינרים יכולים לפעול על מערכות הפעלה Linux, Windows ו-Mac וניתן לפרוס אותם במרכז נתונים פרטי, בענן ציבורי (כגון AWS או Microsoft Azure) או בסביבה מקומית. זה אומר שניתן בקלות לשתף קונטיינר עם אחרים מבלי לדאוג לגבי התלות בתוכנה או בפלטפורמה.
- מבודד, קל משקל ויעיל: שלא כמו מכונה וירטואלית, קונטיינרים חולקים חלק ממערכת ההפעלה (הליבה) של המחשב המארח ומספר מופעים של אותו קונטיינר חולקים משאבים משותפים. תכונה זו הופכת אותם לקלי משקל ויעילים. עם זאת, קונטיינרים מבודדים זה מזה וממערכת ההפעלה המארחת. כלומר, יש להם גישת קריאה בלבד למשאבים משותפים והם יכולים לשנות רק קבצים בתוך הקונטיינר עצמו.
אם הורדתם Docker לדסקטופ שלכם ואתם רגילים לייצר קונטיינרים לתוכנות שונות דרכו, אז שתדעו שבעזרת הורדה חינמית של MATLAB Interface for Desktop Docker Client, תוכלו להתממשק באותה דרך נוחה שאתם רגילים אליה גם לצורך יצירת קונטיינרים של MATLAB.
מבחינת אפשרויות, אנחנו צריכים להבחין במטרה לשמה אנו משתמשים בקונטיינרים.
מצד אחד אנו יכולים לארוז אפליקציות ופונקציות שיצרנו לצורך שימוש של אדם אחר, ללא תלות במערכת ההפעלה שלו וללא צורך שיהיה לו MATLAB במחשב.
אריזה זו נעשית בעזרת ה-MATLAB Compiler SDK ע"י שני שלבים פשוטים.
- קימפול הקוד הרצוי
- אריזת הקוד המקומפל ל-Docker Image או ל-microservice
עבור כל אחד מהשלבים ישנה פונקציית MATLAB מוכנה לביצוע המשימה.
במקרה זה האדם שמקבל מאתנו את האריזה יכול ליהנות מהשימוש בכלים שיצרנו ותו לא.
מצד שני אם נרצה לשנות קוד, כלומר להמשיך לעבוד על ה-MATLAB שלנו מכל מקום, כל מחשב, כל מערכת הפעלה, אז נצטרך לארוז את ה-MATLAB כולו ובכדי לפתוח את האריזה נצטרך להזדהות בעזרת הרישיון שלנו.
עבור מקרה זה ישנם קונטיינרים מוכנים המכילים MATLAB ב- Docker Hub כך שנותר רק להוריד וליהנות מהשימוש.
עבור מקרה ספציפי בו נרצה לעסוק בבניית אלגוריתמים של AI, ישנו קונטיינר מוכן המכיל את MATLAB + 9 טולבוקסים הקשורים ב-AI , אשר כבר מחובר ל-NGC (NVIDIA GPU Cloud), וזאת מתוך מחשבה שיהיה לנו קל יותר להריץ את אלגוריתמי ה-AI בסביבה מותאמת לסוג עבודה זה.
כמובן שאם תרצו, ניתן ליצור קונטיינר מותאם עבורכם, המכיל את ה-MATLAB ואת הטולבוקסים הרלוונטים שאתם צריכים עבור העבודה שלכם. ישנו Dockerfile עם הוראות מוכנות כיצד תוכלו לעשות זאת, והכל זמין ב-GitHub.
לא משנה באיזו דרך תבחרו, ברגע שתתחילו להשתמש בשיטות אלו, תגלו כמה זה נוח ומועיל ואני מבטיחה לכם שלא תוכלו לחזור חזרה.
בין אם זה שיתוף אחרים ללא חשש כיצד המערכת תתנהג במקום אחר ובין אם זה היכולת שלנו להיות זמינים לעבודה מכל מקום בעולם ומכל מחשב או מערכת שהיא.
במבט אפילו יותר רחב, אם נתבונן ברמת החברה כולה, השימוש בדוקרים מאפשר את היכולת למחלקת ה-R&D להעביר חומרים למחלקת ה-DevOps וה-QA ולשלל המחלקות בחברה בצורה אוטומטית ונוחה מבלי לדאוג מכך שכל מחלקה עובדת ומורגלת למערכת אחרת – מהבחינה הזו, בהחלט מדובר בפתרון המתאים ביותר.
אז קדימה, תתחילו לנסות! אם יש לכם MATLAB אתם כבר יכולים להתחיל לארוז!
למידע נוסף: