close menu

(גרסת 2021) מדריך להרכבת מחשב ייעודי ל-Deep Learning

הערה: המדריך קיים גם בשפה האנגלית במידה ותרצו לשתף עם גורמים אחרים.

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

מי אני?

אני ניר בן-צבי, חוקר deep learning וחובב חומרה עוד מהימים הזוהרים בהם הייתי מפרק ומרכיב מחשבים בזמן שחברים שיחקו כדורסל (גם את זה ניסיתי, חזרתי לחומרה די מהר). בשנים האחרונות יצא לי לייעץ לא מעט בנושא לחברים בכל מני ארגונים, וזה הוביל להחלטה לרכז את מעט הידע שצברתי למדריך שפה מולכם. היום אני עובד בחברת trigo שעושה הרבה דברים מעניינים בתחום הזה, וחלק מהידע שצברתי הגיע מבניית מחשבי האימון הראשונים שלפני לפני כ-3 שנים.

הערה לגבי עדכון המדריך

בחלקים מסוימים במדריך בחרתי לציין אם החלק הרלוונטי מעודכן או לא. המדריך כולו מתעדכן מפעם לפעם, אבל הגרסה המקורית שלו בת כמעט 4 שנים.
זה די מדהים כמה שדברים מסוימים לא משתנים במיוחד. למשל, בין נובמבר 2018 לאפריל 2020, NVIDIA לא עדכנה את המאיצים הגרפיים שלה – לא את אלו המיועדים ל-data centers (סדרת Tesla) ולא את אלו המיועדים למשתמשים פרטיים (סדרת GeForce). אינטל, מנגד, הספיקה לרענן את המעבדים שלה פעמיים ובדרך לשלישית. המהפכה שהיה ניתן לצפות לה עם הדור האחרון של המעבדים של AMD לא קרתה כלל.

אז למה שהמדריך הזה יישאר רלוונטי בכלל בעתיד? קודם כל, אני משתדל לעדכן אותו כשעולה צורך. בנוסף, השתדלתי ברענון האחרון להוריד מהמדריך את החלקים שהיו ספציפיים-מדי לדור מסוים של רכיב חומרה. לדוגמא, אינטל מעדכנים את המעבדים שלהם כל הזמן, אבל אני לא בטוח שסדרה 10 שאמורה לצאת השנה תביא בשורה מיוחדת לעוסקים ב-deep learning על GPUs, ולכן החלק הרלוונטי במדריך מנסה להיות גנרי מספיק.

עוד הערה חשובה – הנושא של ״מחשב ל-deep learning״ הרבה יותר מוכר ומובן היום בשוק העולמי והמקומי, יש הרבה יותר מידע זמין באינטרנט ובניגוד ללפני כמה שנים רכישת מחשב מורכב-מראש נהיה דבר מעט יותר משתלם.

כמה מילים לגבי מחשבים ניידים

המדריך הזה לא מיועד לבחירת מחשבים ניידים לאימון מודלים, ודעתו של הכותב היא שאין כזה דבר יותר. בעבר היה הגיון מסוים ברכישת מחשב נייד (בעיקר מחשבים המיועדים לגיימרים) עם כרטיס מסך חזק שמסוגל להתמודד עם טעינה של מודלים מורכבים יחסית. המצב היום הוא שהארכיטקטורות המודרניות כל כך ״כבדות״ מבחינת משאבי חישוב דרושים (בעיקר GPU memory) שאני לא רואה הגיון ברכישת מחשב כזה. גם מחשב הגיימינג החזק ביותר – כאלו שאי אפשר לקרוא להם ״ניידים״ בשום צורה (והם נקראים בצדק DTR – Desktop Replacement) – יכולים במקרה הטוב להריץ מודלים כאלה על minibatches קטנים ולא ייאפשרו אימון, אפילו לא fine-tune על דאטאסט קטן. אציין שוב (1) שזו דעתי ו-(2) שההיכרות שלי היא עם עולם הראייה הממוחשבת ועד כמה שאני יודע בתחומים אחרים שעושים שימוש ב-deep learning אפשר בהחלט להסתפק ב-GPU memory צנוע לצרכי לימוד.

בעידן בו גוגל מספקים T4 ו-P100 בחינם על בסיס Colab, אני לא רואה סיבה להשקיע במחשב חזק ויקר. כמובן שעדיין כדאי מאוד להשקיע במחשב חזק, עם די זיכרון (16 זה הסטנדרט) וליבות. 

ומה עם כרטיסי מסך ניידים?

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

אתחיל מלחלק את האפשרויות הקיימות בפנינו לארבע קטגוריות עיקריות:

מה במדריך?

  1. מחשב שולחני פשוט יחסית עם כרטיס גרפי בודד.
  2. מחשב הזהה למחשב מס׳ 1, הנבדל ממנו בכך שיש לו שני כרטיסים גרפיים (או הכנה לכרטיס גרפי נוסף בעתיד).
  3. מחשב לאימון ״כבד״ – כלומר, מחשב בעל ארבעה כרטיסים גרפיים ומעלה.
  4. מחשבים לאימון כבד אף יותר, כאשר 8 מאיצים גרפיים זה בד״כ המקסימום (ראו הערה בהמשך).

מערכות של 8 GPUs

לדעתי מערכות עם שמונה GPU's (ולפעמים גם 9-10) עדיף לקנות מורכבות מראש ע״י OEM כלשהו (Supermicro, HP וכו׳) כי כאן אנו נכנסים כבר להגדרות חומרה יחסית מתקדמות. כמובן שמדובר (למיטב ידיעתי) רק במחשבי rack (״פיצה״) שברוב המקרים דורשים חוות שרתים או לפחות ארון שרתים במשרד. הם רועשים מאוד ולא מיועדים לשבת באותו חלל בו עובדים בני אדם.

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

איזה מאיץ גרפי אני רוצה?

אמ;לק: את\ה רוצה כרטיס מסדרה 30 של NVIDIA, רצוי 3090 או 3080. אולי יצא גם 3080ti בעתיד הלא רחוק.

סדרה 30 של Nvidia

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

אז מה חדש?

הכרטיס הפשוט ביותר בסדרה, ה-3070, אמור לתת ביצועים שמקבילים ל-2080ti של הדור הקודם בחצי מהמחיר של קודמו. זה מטורף, אבל מגיע במחיר של זיכרון מופחת של 8GB. זה לא סוף העולם ועבור לא מעט ישומים זה בהחלט מספיק, בטח אם משכללים את המחיר המאוד מושך.

עבור שדרוג כספי צנוע למדי אפשר לקבל את ה-3080, עם 10GB שכבר אמור להציע ביצועים משמעותית גבוהים יותר. נבידיה טוענים שפי 2, אז אני מניח שבפועל נראה שדרוג של 30-40% בדומה לדורות קודמים עם הצהרות דומות.

אחרון חביב הוא ה-3090, שנראה קצת יותר כמו המחליף ל-Titan מהדורות הקודמים. מדובר במפלצת שדורשת 350W ו-3 ״סלוטים״ (slots) עבור פתרון הקירור שלה. 24GB של זיכרון הם דבר מאוד מרגש בפני עצמו, והמחיר של 1500$ הופך את זה לעניין מאוד מעניין עד שנזכרים בסיפור הקירור והחשמל (עוד על זה מיד). במצב הנוכחי הכרטיס הזה מרגיש (לי) כמו השווצה טכנולוגית ופחות כמו משהו שאמור להכנס לבתים ולמשרדים שלנו.

אז הכל מושלם? מה המגבלות?

כמו שאפשר אולי להבין מהטבלה למעלה, סדרה 30 אוהבת חשמל. המון חשמל. למעשה, כל כך הרבה חשמל שלשים 4 כאלה באותה מכונה זה דבר מאוד מאתגר. למעשה, בארה״ב זה לא אפשרי לפי תקינת המתח הממשלתית בבתים (זה לא דרמתי כמו שזה נשמע, אבל זה כן מצחיק). עניין הקירור בעל שלושת הסלוטים עליו דיברנו קודם אומר שכדי לשים יותר מ-2 כרטיסים כאלה במחשב שולחני רגיל נצטרך חבר חדש בשם PCI-E Extender. גם זה לא מאוד מורכב, אבל כן מוסיף סיבוכיות למדריך הזה שאני מעדיף לא להיכנס אליה.

האם כדאי לקנות כרטיס מסדרה 30 כרגע?

קודם כל, וכמו שאמרתי קודם, 3080ti כנראה יגיע אלינו בתחילת 2021. זה היה כבר די צפוי בהכרזה של נבידיה אבל הדלפות מהזמן האחרון (נובמבר 2020) רומזות שיהיו לו 20GB של זיכרון. זה יהיה נהדר בהשוואה ל-10 של ה-3080 וגם שדרוג נאה מעל ה-11 של ה-2080ti של הדור הקודם. ההדלפות רומזות למחיר של 800$ – שווה לכל כיס. נושא החשמל יהיה כנראה זהה. אם אכן יגיע כרטיס כזה ההמלצה תהיה עליו באופן חד משמעי. כל עוד הוא לא קיים, נמשיך למה שדווקא כן קיים כבר בשוק.

ה-3070 לא הוזכר עד כה לא בגלל שהוא כרטיס רע. הוא כרטיס מעולה ואחלה של תמורה לכסף, במיוחד לצרכים לימודיים.

ה-3090 יכול להתאים מאוד עבור מחשבים של 2 כרטיסים ללא שאיפות התרחבות בעתיד. וה-3080 הוא פשוט אחלה אמצע בין שני אלו, וכרגע נראה שיהיה המחליף ל-2080ti וה-1080ti מהדורות הקודמים.

האם כדאי לשדרג מסדרה 20?

לא. תשמרו את ה-2080ti שלכם. אם אתם עדין משתמשים ב-1080ti בהחלט הגיע הזמן לשדרג כבר. בניגוד לקפיצה בין דורות 10 ל-20, שהוסיפה לנו את ה-TensorCores (בהמשך) והשיפור המאוד משמעותי שהגיע איתם, הפעם אין קפיצה כזאת ופשוט מדובר בשיפור ביצועים (שתמיד קיים בין דורות). בקיצור, אני ממליץ להמתין קצת. 

סדרות כרטיסים

לנבידיה 3 סדרות שונות של כרטיסים גרפיים, שבדרך כלל מגיעות מאותו פס ייצור (או ״דור מעבדים״). סדרת ה-GeForce מיועדת בעיקרה למשחקי מחשב, למרות שהדגמים היקרים ששייכים אליה מיועדים באופן מובהק לשוק ה-deep learning. מולה קיימת סדרת Tesla, שכוללת מספר מצומצם של רכיבים יקרים מאוד ומיועדים ל-Data Centers. אלו הכרטיסים אצל ספקיות הענן השונות וניתנים לרכישה רק ישירות מ-nvidia ובעלויות גבוהות מאוד. 

בנוסף קיימת סדרת ה-Quadro, המיועדת ל״רינדור״ (יצירת פריימים תלת-מימדיים בתעשיית הקולנוע ומשחקי המחשב) בה לא נדון כלל.

ה-performance leaders כרגע בשתי הסדרות [הרלוונטיות] הם ה-GeForce 3090 וה-Tesla A100, בהתאמה, ועליהם נדון.

מאז כתיבת המדריך המקורי לא השתנה המון, אבל לדעתי אפשר וכדאי להוציא את ה-1080ti וכלל הדור שלו (סדרת Maxwell) לגמלאות. אז איזה רכיבים מעניינים בהקשר שלנו? לדעתי, ראוי להזכיר את ה-2080ti, שהוא מה שרובכם תקנו. מי שמרכיב מחשב עם GPU בודד בתקציב מוגבל ובעיקר למטרות לימוד יכול ליהנות מאוד עם ה-2080 ״הרגיל״ ולחסוך כמה מאות דולרים.

סדרות כרטיסים

לNvidia יש 3 סדרות שונות של כרטיסים גרפיים, שבדרך כלל מגיעות מאותו פס ייצור (או ״דור מעבדים״). סדרת ה-GeForce מיועדת בעיקרה למשחקי מחשב, למרות שהדגמים היקרים ששייכים אליה מיועדים באופן מובהק לשוק ה-deep learning. מולה קיימת סדרת Tesla, שכוללת מספר מצומצם של רכיבים יקרים מאוד המיועדים ל-Data Centers. הכרטיסים אלו זמינים אצל ספקיות הענן השונות וניתנים לרכישה רק ישירות מ-Nvidia ובעלויות גבוהות מאוד. בנוסף קיימת סדרת ה-Quadro, המיועדת ל״רינדור״ (יצירת פריימים תלת-מימדיים בתעשיית הקולנוע ומשחקי המחשב) בה לא נדון כלל.

ה-performance leaders כרגע בשתי הסדרות [הרלוונטיות] הם ה-GeForce 2080ti וה-Tesla V100, בהתאמה, ועליהם נדון.

כרטיסים גרפיים המיועדים רק ל-Inference

עולם חדש ומופלא, שלא היה קיים בעבר. כרגע Nvidia מספקים את רכיב ה-T4, עם יכולות אימון מסורסות לחלוטין אבל ביצועי inference לא רעים בכלל. הוא נמכר בעיקר ישירות דרכם, ועדין יקר משמעותית מ-2080ti למרות ביצועים פחותים (ראו טבלה). אז למה בעצם אנחנו מדברים עליו? ובכן, הוא שייך לסדרת Tesla, בניגוד לסדרת GeForce אליה שייך ה-2080ti/3090. זה אומר שהוא מקורר באופן פאסיבי, דורש משמעותית פחות חשמל, ומגיע עם אחריות בינלאומית מוצלחת. אם זה משהו שאתם צריכים אתם כנראה יודעים את זה כבר בשלב הזה. לינק שימושי.

Volta, TensorCores ו-FP16

מעבר לשדרוגים הרגילים שמגיעים בין גרסאות חומרה, שני הדורות האחרונים של Nvidia (סדרות Turing ו-Volta) מציעות שדרוג מהותי לביצועים כשעובדים ב-half precision. סדרת Turing אף מבטיחה ביצועים משופרים עוד יותר עם עוברים ל-INT8 אבל המעבר מעט מורכב יותר. כל ספריות ה-DL העדכניות (אני מתייחס בעיקר ל-MXNet/Gluon, PyTorch, TensorFlow) תומכות בצורה מהירה וקלילה ב-FP16/half precision ב-inference והעלות בביצועים אמורה להיות אפסית. בנוסף הן תומכות היום גם ב-mixed precision training – אימון שיכול להגיע למהירות כפולה ולתמוך ב-batch sizes גדולים יותר. האימון עצמו נעשה, כמו שהשם רומז, בשילוב של full ו-half precision וזה בגלל שצעדי העדכון מחייבים את הדיוק המלא, למרות שאחסון המשקולות בסוף לא סובל מאבדן הייצוג במעבר ל-half precision (ולא אכנס להסבר עמוק מזה).

התמיכה הזאת קיימת רק בדור האחרון, וזו הסיבה המרכזית שאני לא חושב שכדאי לרכוש היום 1080ti. מדובר בשיפור מאוד משמעותי לזמני ריצה ואימון.

ומה עם Int8?

כרטיסי Turing תומכים גם ב-Int8 (ולדעתי גם ב-Int4). בניגוד ל-FP16, שם המעבר הוא פשוט שינוי הייצוג של המשתנים, המעבר ל-Int8 מעט מורכב יותר ומחייב בנייה של ״סט קליברציה״. הנושא עדיין בחיתוליו, אבל ספריות ה-DL הפופולריות כבר תומכות בו מהדור האחרון שלהן. המעבר לשם הרבה פחות פשוט מהמעבר ל-16ביט, וראוי להסתכל עליו כעל משימה מחקרית לכל דבר שעלולה לקחת זמן ועלולה גם לא להצליח.

חיבור בין כרטיסים שונים; NVLink

חיבור ה-NVLINK מאפשר לכרטיסים שונים באותה מערכת ליצור memory pool משותף שלא צריך לעבור דרך המעבד או הזיכרון של המחשב. זה דבר די מגניב, אבל לצערנו בדור האחרון Nvidia החליטו לבטל אותו בכרטיסי ה-GeForce שלהם. זה בסה״כ מהלך הגיוני שנועד להפוך את רכישת ה-V100 לכדאית יותר. זה בעיקר אומר שלא ניתן לחבר יותר משני כרטיסים אחד לשני. במערכת של שני כרטיסים ניתן בהחלט עדין ליהנות מהחיבור הזה, בתצורת SLI (זה השם של אותו החיבור עבור תעשיית משחקי המחשב). אם אתם מרכיבים מערכת של 4 כרטיסים ומעלה עדיף מראש לוותר, אלא אם אתם מתכננים תמיד להשתמש בהם בזוגות. 

כמה זה נורא? זה לא מאוד נורא, אבל כן ישפיע על ביצועים כאשר יש צורך בהעברת הרבה מידע בין הזיכרון של כרטיסים.

ולמה בכלל לקנות מכונה ולא להשתמש במכונות בענן?

גוגל ואמזון מציעות היום מעבדי V100 בענן שלהן (גם מייקרוסופט אבל נכון לעכשיו בזמינות נמוכה ובמעט איזורים). גוגל מציעה גם P100 (שזה תמורה לא רעה לכסף רוב הזמן). בנוסף לכך, קיימים גם שירותים אחרים זולים אפילו יותר כמו Paperspace שאני ממליץ לכם לבחון. לגוגל גם יש את ה-TPU שלה בבטא כרגע והם אכן מאוד מאוד מהירים ומציעים תמורה מעולה של זמן אימון לדולר.

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

שיקול נוסף נגד מכונה לוקאלית הוא התחזוקה שלה, שיכולה לגזול משאבים רבים כשמשהו משתבש. אגב גם בענן לעתים רחוקות דברים מתרסקים (מכונה מסרבת לעלות אחרי שכבתה וכו׳) אבל זה לא מתקרב לגיהנום שהוא עדכון גרסאת display drivers ששוברת לחלוטין את הקרנל והמחשב מסרב לעלות.

כמה מעבדים אני צריך ואילו?


קצת על מעבדים ו-PCI-E Lanes

אחרי שחתמנו את נושא המאיצים הגרפים הגיע הזמן לעבור לאלמנט הבא: המעבד. כרטיס גרפי דורש 16 מסילות PCI-Express, מה שמחייב את המעבד לתמוך בכך, דבר שהיינו די סטנדרטי כיום. האתגר מתחיל כשנרצה לחבר שני מאיצים גרפיים, שיצריכו מאיתנו 32 מסילות – פיצ'ר שאיננו נפוץ במעבדים סטנדרטיים (32 מסילות קיימות במעבדי שרתים, Xeon ובמעבדים היקרים ביותר בסדרת Core).

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

האם אני חייב המון מסילות?

ובכן, התשובה היא ״לא״. הסעיף הקודם בעיקר מלמד אותנו שמספר המסילות הזמינות בעצם שולט בכמות התעבורה (throughput) בין הזיכרון של המחשב לזיכרון של לוח האם. זה חשוב מאוד בזמן אימון שמשתמש בכלל ה-GPUs שזמינים לנו במערכת, חשוב קצת פחות אם מאמנים על כל אחד מהם בנפרד. עוד פחות חשוב מכך, אם המערכת שנבנה בכלל מיועדת ל-inference ולא לאימון בכלל. נקודה חשובה: אם השימוש שלכם דורש זמני תגובה מאוד גבוהים (כמו נגיד מסחר) ואז לכו על 16.

ולמה כל זה נכון? כי בסה״כ ה״הרעבה״ רלוונטית במיוחד כשאנחנו מעוניינים שה-GPUs שלנו ידברו אחד עם השני (מה שקורה כשממקבלים אימון על כמה כרטיסים גרפיים) ופחות כאשר כל אחד מהכרטיסים הגרפיים פועל כיחידה עצמאית. וכמו שכתבתי קודם, במערכות מתקדמות (לשרתים בעיקר) קיימים חיבורים יעודיים שמאפשרים ל-GPUs לשוחח אחד עם השני בלי לעבור דרך ה-CPU והזיכרון שלו.

בקיצור – ככלל אצבע לא הייתי חורג בשום מקרה מ-8 PCI-E lanes עבור כל מאיץ גרפי במערכת, ומשתדל מאוד במידת האפשר לתת לכל אחד 16 אם אני מתכנן לאמן על המערכת הזאת כשכל ה-GPUs משתתפים. עוד דבר שחשוב לזכור זה שקיימים רכיבים נוספים שדורשים מסילות PCI-E, למשל כונני SSD מהירים (מבוססי NVMe).

מעבדי Core

Intel introduced the new Intel® Core™ X-series processor family on May 30, 2017. Intel’s most scalable, accessible and powerful desktop platform ever, it includes the new Intel® Core™ i9 processor brand and the Intel® Core™ i9 Extreme Edition processor – the first consumer desktop CPU with 18 cores and 36 threads of power. The company also introduced the Intel® X299, which adds even more I/O and overclocking capabilities. (Credit: Intel Corporation)

בזמן כתיבת המדריך המקורי היו לאינטל מספר רכיבים עם 28, 40 ו-44 מסילות במחירים מאוד אטרקטיביים. מאז יצאו דורות 8 ו-9 (וממש תכף, 10), ורכיב זה לא קיים יותר, לטובת סדרת ה-X (ו-i9). בהתאם, כרטיסים אלו פופולריים במיוחד אצל מרכיבי חומרת deep learning. אם אתם מעוניינים להרכיב מכונה שתריץ כרטיס בודד, רוב המעבדים מסדרות i7 ו-i9 של אינטל כוללים 16 מסילות. עבור מי שצריך יותר – צריך לעלות לסדרת ה-X של אינטל, בה כל המעבדים כוללים 44 מסילות. הרכיב הזול ביותר מהסדרה הזאת הוא ה-Intel® Core i7-9800X עם 8 ליבות. קיימים גם 9820X, 9900X, 9920X ו-9960X, עם 10, 12 ו-16 ליבות, בהתאמה, כשהאחרונים שייכים לסדרה i9 ולא ל-i7 אבל מתאימים לאותם לוחות אם.

אם בא לכם להגזים, אינטל מעדכנים כרגע את קו המוצרים שלהם למעבדים מסדרה 10, והרכיב המקביל בסדרה זו הוא ה-Intel Core i9-10900X עם 10 ליבות (ובהתאם, כמה גרסאות משודרגות עם 12 ו-18). הוא כולל גם 48 מסילות PCI-E. אגב, סדרה 10 כוללת תמיכה מורחבת בהרצה של מודלים עמוקים על גבי ה-CPU, ואם אתם עושים גם את זה לפעמים כדאי לקרוא על הנושא ולהבין כמה שזה משמעותי.

חשוב לשים לב המעבדים מסדרת X של אינטל משתמשים בסוג socket שונה וזה בעייתי (שונה לפעמים גורר יקר ונדיר יותר) – FCLGA2066. בפועל הוא כבר די פופולרי בשוק (שנתיים+ אחרי שהוכרז) גם בגלל שהם שולטים בשוק הגיימינג היקר וכמובן גם בשוק ה-deep learning.

מעבדי Xeon

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

חשוב לדעת כי שימוש במעבד מסוג Xeon מקפיץ את המחיר של כל המערכת מכמה סיבות:

  • מעבדי זאון (Xeon) דורשים זיכרון ECC, שהוא יקר יותר.
  • באופן כללי רכיבים הפועלים עם מעבדי זאון יהיו יקרים יותר.
  • מעבדי זאון נוטים להיות יקרים ביותר ביחס למעבדים אחרים.

הסיבה המרכזית כן לעבוד איתם היא 40 מסילות, וכמובן שהמספר הזה עולה עם מרכיבים מחשב עם 2 כאלה וכו׳. בעבר היינו רואים כאלה מעבדים במערכות של 4GPUs והיום זה קצת נעלם. מנגד, ברגע שעוברים למחשבי rack (״פיצה״) זו נהיית הבחירה הדומיננטית, ושילוב של שני מעבדים כאלה על אותו לוח אם נותנת לנו 80 מסילות. בעבר המלצתי בחלק זה של המדריך על מעבדי Xeon אבל הורדתי את החלק הזה מהסיבה הפשוטה שאני רואה מחשבים כאלה פחות ואני לא מרגיש מעודכן מספיק כדי לתת כאן המלצה ראויה.

ואיפה AMD?

(חלק זה לא עודכן מאז נובמבר 2018, ואני משאיר אותו כאן כמו שהוא)

ובכן – AMD מציעה משהו שעל הנייר היה אמור לזעזע את השוק, ובפועל לא ממש עשה את זה – סדרת מעבדי Epyc לשרתים עם 128 PCI-E lanes, יחד עם גרסאת ה-Desktop שנקראת Threadripper ומציעה 64 מסילות. הרכיב הרלוונטי הוא ה-Threadripper 1920x או ה-1950x, עם 16 ו-12 ליבות בהתאמה. ההפרש במחיר די זניח ולכן נפוץ יותר לראות מערכות עם האחרון. כולם מבוססים על הדור החדש שלהם, Ryzen 7. בנוסף לנתון הזה הם מציעים מספר גדול מאוד של cores (בין 12 ל-32, במחירים מאוד נמוכים בהשוואה לחומרה מקבילה של אינטל). אז למה זה לא כבש את השוק בסערה?

  • עושה רושם ש-single core performance נמוך משמעותית, וזה משהו שעדיין חשוב ללא-מעט תרחישים. עם זאת, תוכלו ליהנות יותר מיחס של cores for dollar, ומי שנהנה ממקבול יהנה מאוד!
  • אנשים חוששים לאמץ חומרה חדשה על כלל המשתמע מכך.
  • לא מעט ספריות ML ״קלאסיות״ (למשל OpenCV) עושות שימוש ב-MKL של אינטל; בגדול ובנפנוף ידיים מדובר בשכבה תוכנתית (אלרטנטיבה לכל מני אימפמנטציות של Blas) שמאוד מאוד מאיצה פעולות על CPUs. זה גם מאוד רלוונטי למי שמתכנן לבצע inference על CPU למרות שכנראה שזה פחות רלוונטי לקוראי המדריך הזה. כל העסק הזה לא רלוונטי כרגע עבור מערכות עם מעבדים של AMD. אינטל לעומת זאת משקיעה הרבה משאבים בשיפור תדיר של התמיכה של ספריות שונות ב-MKL ולהפך.
  • נושא ה-PCI-E lanes קצת סבוך יותר, ואפרט:

בניגוד לאינטל שיש לה חיבור מיוחד בין המעבד ללוח אם לכל מני דברים, המעבדים של AMD מקצים 4 מסילות לכל מני חיבורים (ככלל החיבור בין ה-chipset לבין המעבד עצמו) ועוד 4 מסילות לחיבור אחסון מסוג M.2. זה משאיר 56 מסילות לכרטיסים גרפיים. למה אני מספר לכם את זה? כי זה אומר שבפועל אפשר לחבר כרטיסים רק בתצורת 16x/16x/8x/8x. זה עדיין אחלה ועדין יותר ממה שאינטל מאפשרת גם בכרטיסים היקרים ביותר שלה – כרטיסי סדרת i9 – אבל זה נהיה הבדל פחות משמעותי. מה גם שהחיסכון של 500-600$ במחשב של 7000$ זה לא כזה עניין גדול.

אמ;לק: נראה כי היתרונות של סדרת מעבדים זאת רלוונטיים בעיקר לגיימרים, הרפתקנים ובוני מערכות שמאוד חשוב להם לחסוך כמה ג׳ובות.

אז איפה עדין יש הגיון ב-AMD? למי שבונה מערכת עם 2 GPUs בלבד (מערכות זולות בכמה סדרי גודל ממערכות של 4) הן דווקא מהוות אלטרנטיבה נהדרת. כמו שציינתי, לאינטל בגדול אין יותר רכיבים עם מעל 28 מסילות PCI-E והאפשרות היחידה היא מעבדי ה-i9 היקרים מאוד. ה-Threadripper 1950X מציע 64 מסילות (כמו שהראינו, בפועל 56) וזה משאיר לכל מאיץ גרפי 16 מסילות שלמות ונהדרות וגם חוסך לא מעט כסף על CPU מסדרת i9 של אינטל.

הערה לגבי זיכרון

חשוב לזכור כי גם אם מעבד מסוים מתאים פיזית, מבחינת הסוקט, ללוח-אם התומך בכמות גדולה של זיכרון, ייתכן שהמעבד עצמו לא תומך בכמות שכזו. לצורך העניין, במידה ותרצו להרכיב מערכת עם מעל ל-64GB זיכרון, קחו בחשבון שדבר זה יתאפשר ככל הנראה רק ע״י מעבדים יקרים מאוד.

עוד על חומרה

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

לוח אם

91OZNKTjR1L._SL1500_

אין דרישות יוצאות דופן מלוחות אם בקטגוריה הזו והם כולם מאוד דומים. בחרו ביצרן טוב ותקראו כמה ביקורות אודות הלוח אם. אני מניח שהקורא הממוצע מבין מספיק בחומרה כדי לדעת (למשל) לבחור לוח אם לסוקט המתאים וכו׳. במערכת של ארבעה מאיצים גרפים הנושא נהיה מורכב יחסית אבל בשאר האופציות שבמדריך, ככל הנראה שהבחירה תהיינה בסוף בלוח אם לגיימרים – סדרת X99 של MSI  או הסדרה המקבילה של ASUS למשל. שימו לב שיש לוחות אם עם 2 מסילות שמתאימות לכרטיס מסך (פיזית), אבל רק אחת מהן היא ״באמת״ PCI-E x16 והשנייה היא ״רק״ x4. תמנעו מלרכוש לוח שכזה, אתם תרעיבו את הכרטיסים הגרפיים שלכם.

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

הערה לגבי ערכת-שבבים (chipset)

כמו ההערה הקודמת על המעבד, גם ערכת השבבים לא תמיד תומכת בכמות הזיכרון שלוח האם תומך בה פיזית. זו הרבה פעמים הדרך לבדל בין ערכות-שבבים זולות ליקרות וחשוב לבדוק את זה. לוחות אם יקרים (סדרות ה-flagship של כל יצרנית) בד״כ יכללו את ערכת השבבים היקרה והטובה ביותר עם התמיכה הרחבה ביותר לזיכרון, PCI-E וכו׳. באינטל ערכת השבבים צריכה להיות X299. ב-AMD זה יהיה X399.

זיכרון

כלל האצבע הוא פי-2 זיכרון למחשב עבור כל GPU. כלומר, עבור 4 כרטיסים מסוג 1080ti הייתי לוקח תצורה של 44*2=88GB. כמובן שהחישוב מתעגל לכפולה הבאה לפי כמות ה-memory sticks (שכמובן תמיד צריכים לבוא בזוגות). ל-setup של מאיץ גרפי בודד שאולי נרצה להרחיב כדאי לקחת GB32 באופן המאפשר להוסיף 32GB נוספים יחד עם ה-GPU שנקנה בעתיד. מנגד אפשר להתחיל גם עם 24GB, איך שתעדיפו (בד״כ מקלות הם של 16 או של 8).לוחות כאלה בד״כ מגיעים עם 8 מסילות זיכרון ככה שזה אמור להיות פשוט מאוד (נתחיל עם 2×16 ואולי נוסיף עוד 2 כאלה בהמשך). כמו בחלק של הלוח-אם, אני מניח שהקורא פה יודע לבחור את הזיכרון הנכון מבחינת מהירות. מעבדי Xeon דורשים זיכרון ECC יקר יותר

כמו בחלק של הלוח-אם, אני יוצא מנקודת הנחה שהקורא פה יודע לבחור את הזיכרון הנכון מבחינת מהירות. כפי שציינו בפסקה על המעבדים, מעבדי Xeon דורשים זיכרון ECC יקר יותר ולכן יש לקחת זאת בחשבון. במידה והקורא יעדיף לעבוד עם מעבדי Core, לוחות אם מבוססי ערכת השבבים x99 הם אמינים, זולים וניתן למצוא דגמים המכילים 8 מסילות זיכרון במחיר טוב. ייתכן שמאז כתיבת מדריך זה יצאה מחליפה ל-x299 כמובן, וכל מה שכתוב פה עובר אוטומטית לגרסא החדשה ביותר. אגב, מעבדי Volta בגרסאות מסוימות כוללים 32GB של זיכרון לכל כרטיס. אם בידכם כרטיסים כאלה הייתי משתדל שלכל כרטיס תהיה כמות כפולה של CPU Memory – קרי 64.

ספק כוח

ספק הכוח צריך להיות מסוגל לסחוב את כל העסק המרגש הזה. אם אתם הולכים על אופציה מספר 2 (הכנה לכרטיס גרפי נוסף בעתיד), אני ממליץ כבר עכשיו לקנות ספק כוח שיוכל לסחוב שני כרטיסים גרפיים. לכרטיס גרפי בודד כדאי להתחיל בספק איכותי בהספק של 750W, ולמערכת עם שני כרטיסי גרפיים הייתי בוחר בספק עם הספק של 1000W. מערכות של ארבעה כרטיסים גרפיים בדרך כלל כבר מגיעות עם שני ספקי כוח או ספק בודד בהספק של 1500W+. יצרנים טובים של ספקי כח הם Antec, CoolerMaster, Corsair, SeaSonic, EVGA וכו׳. 

קירור\מארז

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

הערה: ספק כח שמגיע עם מארז בדר״כ לא שווה יותר מדי, אלא אם מדובר בדילים של מארז+ספק של חברות רציניות, כמו למשל Antec.

כוננים קשיחים

בנושא זה אין דגשים מיוחדים ובגדול זה עניין של תקציב. האופציה ה״זולה״ היא כונן SSD של 500GB יחד עם 4TB ״רגילים״. אם אין הגבלת תקציב כמובן שאפשר שכל הכוננים יהיו SSD ואפשר גם לערב תצורות RAID שונות. גם פה כמובן שיש כל מני דקויות בסוג החיבור ללוח האם (למשל חיבור NVME החדש-יחסית) וזה משהו שיכול להיות חשוב מאוד או כלל-לא, כתלות בייעוד הכללי של המערכת שאתם מרכיבים.

הערת סיום – מחשבים לגיימרים

יש המון במשותף בין חומרה לגיימרים לחומרה עבור למידת מכונה. כמעט כל הרכיבים שמתוארים פה רלוונטיים גם לשוק הזה. אם קשה לכם למצוא את מבוקשכם בגוגל, נסו להחליף ״deep learning" ב-"gaming" ותופתעו לגלות שתקבלו תוצאות מאוד דומות.

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

עוד בנושא: