Working with SIPLDocker

במעבדת SIPL יש אפשרות לקבל עמדת מחשב לעבודה מרחוק. מחשבי המעבדה מצויידים בכרטיס גרפי (GPU) חזק ובעלי יכולת עיבוד גבוהה. זהו יתרון בעיקר לצורך הרצות בתחום של deep learning (אבל לא רק). כאשר העבודה היא בסביבת Linux, משתמשים בתשתית של “Docker”. תשתית זו מאפשרת לכם, הסטודנטים, לנהל את סביבת העבודה שלכם ולהתקין תוכנות וחבילות שלהן אתם זקוקים, בלי לשנות (או להרוס) תשתיות אחרות שמותקנות על המחשב.

בעמוד תוכלו למצוא הסבר קצר על המושגים הבסיסיים ובהמשך יש מדריך להורדה המפרט איך להריץ את “SIPLDocker” על המחשב במעבדה ואיך מתחברים אליו מרחוק באמצעות SSH או NoMachine.

מה זה “Image”?

Image בהקשר של מע’ ההפעלה Linux הוא עותק 1:1 של דיסק כלשהו לאחר שהותקן. כלומר, הוא מכיל ליבת לינוקס (Linux Kernel), תוכנות וספריות נוספות, הגדרות של משתני סביבה וכו’ שהיו מותקנות על הדיסק המקורי. ה-Image מייצג את הדיסק במצב שבו ניתן לטעון אותו בזיכרון של מחשב אחר בדיוק כפי שהוא ואז הוא יוכל להתחיל לרוץ מאותו מצב, ללא צורך בהתקנות והגדרות נוספות.

במעבדה הכנו עבורכם image המכיל מגוון רחב של ספריות הנמצאות בשימוש בפרויקטים במעבדה.

Image זה מכיל בין היתר:

  • The basic Ubnutu development packages: build-essentianl, cmake, etc
  • Common management tools: git, curl, rsync, etc
  • Terminal based develop tools: vim, tmux, zsh, tig, etc
  • GUI based IDE / editors: PyCharm: and VSCode
  • Basic scientific Python packages: NumPy, SciPy, Pandas, etc
  • Python plotting packages: Matplotlib, Plotly, Seaboarn, etc
  • Computer vision and machine learning packages: OpenCV, SciKit-Image, SciKit-learn, etc
  • Deep learning frameworks: Tensorflow and Torch (+ TorchVision)
  • Jupyter notebook and JupyterLab

מה זה “Container”?

Container (מיכל) ב-Linux הוא קבוצה של תהליך אחד או יותר, המבודדים משאר המערכת. את ה-Container יוצרים מה-Image הספציפי המותקן על המחשב, שמספק את כל הקבצים הדרושים להפעלת ה-“Container”. ניתן לנייד “Container”-ים של לינוקס ממחשב למחשב בקלות ובמהירות וזה הופך את השימוש בהם ליעיל ונוח. למשל בתעשייה כאשר מעוניינים לעבור מסביבת פיתוח, לסביבת בדיקה ולבסוף לייצור.

ה-Container משתמש בליבה (Kernel) של מערכת ההפעלה בכדי לגרום לתהליך להרגיש כאילו הוא רץ לבדו במערכת ההפעלה עם משאבים שמוקצים אך ורק לו.

מה זה “Docker”?

Docker הוא כלי קוד פתוח שמאפשר לבנות, לפתח, לשתף ולהריץ יישומים שונים בתוך Linux Containers. זוהי למעשה מכונה וירטואלית קלת משקל. כל Container מחזיק בתוכו יישום אחד או יותר והDocker יודע “להפעיל” מיכלים כאלה בתוך סביבה חצי מבודדת. התהליכים והקבצים נשמרים ישירות על המכונה הנוכחית, אבל בנפרד מהמערכת הראשית ובעצם אנחנו נותנים ליישום הרגשה שהוא רץ לבד, למרות שהוא בעצם רץ עם עוד הרבה יישומים אחרים.

במקרה של מעבדת SIPL, ה-Docker כבר מותקן במחשבי המעבדה.

 

עבודה מרחוק על מחשבי המעבדה

ישנן כמה אופציות לעבודה מרוחקת:

אפשרות ראשונה היא להתחבר למחשב המרוחק באמצעות תוכנה כגון NoMachine אשר משתפת מסך. באופן זה ניתן להשתמש בGUI (ממשק המשתמש) הרגיל של המחשב, כאילו יושבים מול המחשב עצמו.

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

על מנת להתגבר על בעיות אלו נוכל להשתמש בפרוטוקול SSH. היתרונות שלו הם האפשרות להתחבר עם מספר משתמשים במקביל, תעבורה קלה על הרשת, זהו גם פרוטוקול מאוד מאובטח ומהיר ובנוסף מאפשר לעבוד מהמחשב הלוקאלי בצורה מהירה ונוחה.

אנו ממליצים להשתמש בפרוטוקול SSH דרך VSCode (הדרך המקובלת לעבודה בתעשייה).

סרטון הדגמה על התחברות מרחוק:

כאן ניתן להוריד מדריך שמסביר כיצד עובדים מרחוק באמצעות VSCode.

כאן ניתן להוריד מדריך שמסביר איך מתקינים ומריצים את SIPL Docker.