חושבים להקים HPC?

עם כניסת העננים הציבוריים לחיינו ול"חיים" של חברות, תחום ה-HPC (כלומר High Performance Computing – כשמקימים פרויקט ובו תשתית עם כמות שרתים גדולה כדי להריץ דברים שונים כמו חישובים בצורה מרוכזת) ירד מעט מסולם הפופולריות. אחרי הכל, אם אני יכול לשכור 50 שרתים (פיזיים/וירטואליים) מאמזון בכמה קליקים, אז בשביל מה לרכוש ברזלים?

אבל מה לעשות שעננים זה דבר נחמד, אבל במקרים רבים חברות דווקא לא מעוניינות לקחת מכונות בענן אלא להקים להם בחוות שרתים המקומית את התשתית. הסיבות לכך מגוונות: חלקם עקב רגולוציה, חלקם בגלל אבטחת מידע, סיבות בטחוניות ויש כמובן את אלו שכבר עשו את החישובים שלהם ויצא להם שעדיף לרכוש מקומית ברזלים ולהשתמש איתם בחווה בחברה (הויכוח אם זה משתלם בענן או לא – לא יסתיים בקרוב).

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

למערכות HPC יש מגוון רחב מאוד של שימושים כמו סימולציות, AI ושאר דברים נוספים. מטבע הדברים כל מערכת HPC ענקית דורשת בדרך כלל קונפיגורציה משלה, אך בפוסט זה אכתוב כמה כללי אצבע שחשובים כמעט בכל מערכת HPC. אלו דברים חשובים במיוחד לחברות שמקימות מערכת HPC ראשונה בחברה (כן ירבו 🙂 ).

הדבר הראשון החשוב ביותר בכל מערכת ה-HPC הוא כח החישוב (בגלל זה צריך את השרתים) ולכן יש צורך בתצורה מסויימת. התצורה המומלצת היא שרתים עם 2 מעבדים או מעבד אחד מרובה ליבות. בד"כ זה יהיה שרת 1U או 2U.

מבחינת מעבדים – אני ממליץ על AMD EPYC ולא על Xeon מהסיבה הפשוטה שעל כל כמות X ליבות שאתם קונים במעבד Xeon, אתם מקבלים כפול עם EPYC וכבונוס אתם מקבלים גם יותר נתיבי PCIe (אם צריך להכניס יותר GPU או כרטיסים נוספים) ויותר L3 Cache במעבד ובנוסף חסכון של אלפי דולרים פר מכונה. אם הולכים על מעבדי EPYC, אז השרתים שאני ממליץ:

  • Dell – שרת 1U R6415 (עם מעבד 1 עד 32 ליבות) או שרת R7425 עם 2 מעבדים (עד 64 ליבות)
  • HPE (דור 10): שרת DL325 (מעבד 1, עד 32 ליבות), DL385 (כ-2 מעבדים, עד 64 ליבות). אם אתם חושבים על הקמת HPC בסוף השנה/התחלת שנה הבאה, אולי תתעניינו גם בשרת ה-CL3150 של HPE.

חברות כמו Cisco מציעות פתרונות מבוססי Nodes שבהם ניתן להכניס 4 שרתים בתצורת 2U. זה נראה כך:

זה נחמד, אבל לא כל כך מתאים ל-HPC בגלל המחיר היקר, מה גם שקשה מאוד להוסיף דברים למכונה כזו, ולכן אני לא ממליץ על תצורה של מכונה כזו או Blade.

מבחינת וירטואליזציה: סביר להניח שלא תריצו וירטואליזציה או שאולי תריצו וירטואליזציה לצרכי Storage שהוא Scale Out (לא ממש צריך וירטואליזציה בשביל זה, יש cgroups בלינוקס). אם אתם חייבים וירטואליזציה, חפשו פתרון זול ועדיף מבוסס קוד פתוח, אחרת כל פתרון מסחרי "ינפח" את המחיר הכללי בעשרות אחוזים.

מבחינת סטורג': ברוב המקומות שתראו HPC, לא תראו סטורג' מרכזי כמו NetApp או EMC. הפתרון לסטורג' בדרך כלל הוא פתרון Scale Out מבוסס קוד פתוח, כמו Ceph או Gluster, ואם אתם רוצים את הפתרון קוד פתוח בגירסה מסחרית, אתם יכולים לרכוש מ-SuSE ישראל או מ-Red Hat בארץ.

מכיוון שסטורג' Scale Out נסמך על דיסקים, תצטרכו דיסקים מקומיים על כל מכונה. כאן אני ממליץ להשקיע ב-SSD NVME בתצורת Mixed Intense. ישנם כאלו שמעדיפים להשתמש ב-SSD ובדיסקים מכניים, אבל כפי שניתן לקרוא בפתרונות Storage כמו Ceph – זה לא מומלץ.

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

תקשורת – 10/25/40/50 ג'יגה – זו צריכה להיות החלטה שלכם. יש מספר יצרנים שמוכרים סוויצ'ים – HPE, DELL, JUNIPER, CISCO – מה שחשוב הוא חיבור מהיר (לא 1 ג'יגה ולא 1 ג'יגה ב-Bond) ולפחות חיבור כפול ומתגים כפולים על מנת לקבל שרידות גבוהה. אפשר לחבר את השרתים למתגים בחיבור אופטי או DAC/TwinAx נחושת, החלטה שלכם, אין ממש הבדלים בין השתיים.

אוטומציה: קניתם עשרות שרתים לפרויקט HPC, אתם צריכים אוטומציה, אין דרך להתחמק מכך. בד"כ ההמלצה שלי היא על Ansible, אבל יש כמובן גם SALT, Puppet, Chef. צוות הלינוקס בחברה יכול לאמר מה העדפותיו.

הפצת לינוקס: נדיר מאוד שתמצאו HPC שמריץ Windows, כי כולם מריצים לינוקס, ולכן יש צורך בהפצת לינוקס שתהיה על כולם. בהתאם למדיניות בחברה זה יכול להיות RHEL של רד האט או CentOS 7 החינמי, או SLE של SuSE (ואם אתם מתעקשים על אובונטו, רק גירסת שרת LTS). כפי שציינתי לעיל – גם לרד-האט וגם ל-SuSE יש נציגות בארץ.

שימוש ב-GPU בכל שרת: כאן זה מאוד תלוי מה אתם הולכים להריץ. מכיוון שאין וירטואליזציה בשרתים, אפשר להשתמש בכל GPU (הערה: רשמית, nVidia אוסרת שימוש בכרטיסי GTX בשרתים, אחרת נו נו נו לכם), אך מצד שני, כרטיסי Tesla לאו דווקא יתנו ביצועים יותר גבוהים, אלא אם אתם צריכים הרבה יותר VRAM בכרטיס ה-GPU.

חלוקת עומסים ועבודות: למעט אם אתם מריצים קונטיינרים (ששם מערכות כמו OpenShift, CAASP או Kubernetes דואגות לאיזון עומסים בין השרתים), תצטרכו למצוא תוכנה שמנהלת את התורים והעומסים בהתאם למה שאתם הולכים להריץ. ישנם מגוון תוכנות לפלטפורמות שונות עם API לשימוש פנימי של החברה.

תאימות קדימה: במקום לזרוק את המכונות בעוד 3-4 שנים, אפשר לשדרג אותם מבחינת מעבדים, אבל חשוב לשים לב עם אלו מעבדים רוכשים: שרתים מבוססי EPYC של AMD – מובטחת תאימות קדימה לדור מעבד הבא ואחריו, כנ"ל לגבי מעבדי Xeon SP של אינטל אך זה לא קיים במעבדי Xeon V4, שם אתם יכולים אולי לשדרג למעבד מאותה משפחה, אבל סביר להניח שתצטרכו גם להחליף ספקי כח ולא תקבלו ביצועי RAM יותר גבוהים.

לסיכום: הקמת HPC זה דבר מאוד יקר, אבל ניתן לחסוך בכל מיני אספקטים. חשוב לשים לב לדברים שתיארתי וחשוב גם לחשוב קדימה אם רוצים להרחיב או לשדרג את ה-HPC בעתיד. לא כל הצעה שמקבלים משקללת את כל הדברים שאתם צריכים (ברובן יש "חורים") וצריך יעוץ חיצוני לדברים ומה שהכי חשוב – זה לדעת מה הולכים להריץ על ה-HPC בראש ובראשונה.