הקדמה
לפני שנדון ב-HPC (High Performance Computing) בסביבת ענן, מה זה בכלל אומר HPC?
"המונח High Performance Computing מתייחס לאוסף של משאבי מחשוב בעלי יכולת חישוב גבוהה, ביחס להרצת מחשב בודד, במטרה לפתור בעיות מורכבות בעולם המחקר, הנדסה או בעולם העסקי"
(https://www.usgs.gov/core-science-systems/sas/arc/about/what-high-performance-computing)
במונחים טכניים – הכוונה ל-Cluster של שרתים הבנוי ממספר רב של מעבדים (פיזיים או וירטואליים), כמויות גדולות של זיכרון RAM, מערך אחסון מקבילי מהיר במיוחד (לצורכי קריאה/כתיבה) וחיבור תקשורתי מהיר בין המחשבים החברים ב-Cluster.
HPC שימושי לתרחישים בהם קיים צורך במשאבי מחשוב רבים, מעיבוד תמונה או וידאו (בתהליכי Batch), ועד היכולת לחזות את מזג האוויר (דבר המחייב חיבור מהיר בין רכיבי ה-Cluster).
עולם ה-HPC מתחלק לשתי קטגוריות:
Loosely coupled
בתרחיש זה נדרשים משאבי מחשוב רבים, אך כל משימה רצה בנפרד מייתר המשימות ואין צורך בחיבור מהיר בין רכיבי המערכת ולא קיימת תלות בין הרכיבים על-מנת לסיים את המשימה בשלמותה. דוגמאות לתרחיש זה: עיבוד תמונה, ריצוף גנטי ועוד.
Tightly coupled
בתרחיש זה נדרש חיבור מהיר בין רכיבי ה-cluster (דוגמת שיתוף משאבי זיכרון ומעבד) וכל רכיב ב-cluster תלוי בייתר הרכיבים לצורך השלמת המשימה כולה. דוגמאות לתרחיש זה: חישוב דינמיקת נוזל, ניסיון לחזות מזג אוויר ועוד.
שיקולי עלויות
התקנת HPC Cluster בסביבת ה-on premise מחייבת השקעה גדולה בחומרה (מספר רב של שרתים המחוברים ביניהם ב-Cluster, עם כמות גדולה של מעבדי CPU ומעבדי GPU, עם מערך אחסון מקבילי מהיר ולעיתים עם חיבור תקשורתי מבוסס טכנולוגיית RDMA בין רכיבי ה-Cluster), השקעה בכוח אדם (בעל ידע מתאים לתמוך בפלטפורמה), דרישה לחיבור חשמל בעל הספק גבוה ועוד.
גם להתקנת HPC Cluster בענן יש את החסרונות שלו בכל הנוגע לעלויות. עלויות שרתים עם כמות גדולה של מעבדי CPU ומעבדי GPU, או כמות גבוהה של זיכרון RAM עשויה להוות השקעה יקרה, ביחס לרכישת החומרה לסביבת ה-on premise, בה ניתן להשתמש בהשקעה שנרכשה 24×7 שעות לתקופה של בין 3 ל-5 שנים (של אחריות היצרן).
גם העלות של רכישת מערך אחסון מקבילי מהיר היא משהו שנדרש לקחת בחשבון, בהשוואה לעלות מערכי אחסון סטנדרטיים.
הפתרון להרצת HPC clusters בסביבת ענן, ועדיין להיות מסוגלים להנאות מיתרונות של משאבי מחשוב (כמעט) בלתי מוגבלים (דוגמת שרתים, זיכרון, נפחי אחסון), הינו לבנות את ה-Clusters בצורה דינאמית.
נבנה את ה-Cluster בהתאם לצורכי הלקוח עבור משימה ספציפית (בכל הנוגע לכמות מעבדים, כמות זיכרון, נפחי אחסון, דרישה לחיבור תקשורתי מהיר בין רכיבי המערכת, דרישות תוכנה ועוד), וברגע שהמשימה הספציפית הסתיימה, נעתיק את התוצרים מה-cluster למקום אחר ונמחק לחלוטין את ה-HPC Cluster, על-מנת לחסוך בעלויות משאבי מחשוב מיותרים.
חלופות להרצת HPC Cluster בענן
סיכום
כפי שניתן לקרוא ממאמר זה, הרצת HPC Cluster בסביבת ענן הינה אופציה מעשית, אך עליכם לתכנן מראש את הפתרון, לאחר איסוף דרישות הלקוח (כגון כמות דרישות חומרה, דרישות תוכנה וכמובן הערכת עלויות/תקציב).
תיעוד מאתר היצרן
- Azure CycleCloud
https://azure.microsoft.com/en-us/features/azure-cyclecloud/
- AWS ParallelCluster
https://aws.amazon.com/hpc/parallelcluster/
- Slurm on Google Cloud Platform
https://github.com/SchedMD/slurm-gcp
- HPC on Oracle Cloud Infrastructure
https://www.oracle.com/cloud/solutions/hpc.html