יום ראשון, 24 במרץ 2019

Summit 2018: After analyzing 30,000 SQL queries, these are the top mistakes developers make / Tomer Shay Shimshi

Users want to see their data fast, immediately, now. Whether you’re working with an ORM or writing native SQL, you probably had a “scratching-my-head-trying-to-figure-out-why-this-query-is-so-slow” moment. The team at EverSQL analysed more than 30,000 SQL queries from thousands of different companies, to lay down the most common mistakes developers do when writing SQL queries. This talk will focus on writing SQL the right way, the fast way.



MP3

Summit 2018: Evolution 3.0 : solve your everyday problems with genetic algorithm / Mey Maayan Akiva

When was the last time you wrote an algorithm to plan your diet? As programmers we do amazing things in our everyday job, but rarely do we use our knowledge at home. In this talk I will introduce genetic algorithms and share how I coded a genetic algorithm from scratch and used it to generate my weekly schedule and to create a smart diet planer. We will go through the different stages of the algorithm and understand how they affect the algorithm’s solutions. Let me show you a different side of genetic algorithms and you will discover a new way to solve your everyday problems.



MP3

יום שני, 11 במרץ 2019

363 GPU @ Nvidia

פודקאסט מספר 363 של רברס עם פלטפורמה - אורי ורן מארחים את יקי ויובל מחברת NVIDIA לשיחה (קצת) על החברה בישראל ו(בעיקר) על מה עושים היום עם GPU, האפליקציות המעניינות ומהם הדברים עליהם עובדים בישראל.

יקי טבקה מוגדר ב-NVIDIA כ- Distinguished Engineer (כמו Individual Contributor, ברמה גבוהה), עוסק כבר הרבה שנים בכלי פיתוח תוכנה, בעיקר בתחום של גרפיקה תלת-מימדית, חישוב מקבילי ובינה מלאכותית.
יובל מזור הוא Senior Solution Architect ב-NVIDIA - זה שתפקידו לקחת את הטכנולוגיות שיקי מדבר עליהן (וגם בונה, וגם עובדים יחד) וליישם אצל לקוחות.

אם יצא לכם לפרק מחשב פעם ולראות מה יש בפנים, בטח נתקלתם בלוגו ירוק יפה של NVIDIA - 
  • החברה מוכרת הסטורית בהקשר של כרטיסים גראפיים, והיום (וכבר לא מעט זמן) יש כבר הרבה יותר מזה.
  • החברה נוסדה ב-1993 ע”י שלושה יזמים עם ~$20M השקעה של VC, היום החברה מוערכת בכ-$90B, ויש לה מעל 11,000 עובדים. גדלה יפה.
    • ההתחלה הייתה עם כרטיסי משחק - המעבד המרכזי לא ממש מתאים לציור פיקסלים, והתחילו לייצר מאיצים למיניהם. הראשון ש-NVIDIA הוציאה ב-98 נקרא RIVA TNT, שידע לייצר 2 פיקסלים במקביל (!).
    • מאז התחום התחום התפתח . . .  הכרטיס הנוכחי יודע לעשות Ray Tracing, בינה מלאכותית, לשמש כמובן ככרטיס ל-Gaming - ומגיע מבחינת ביצועים ל-14 טרה-פלופס (Tera FLOPS), שזה מספר לא ממש נתפס עם 12 אפסים של פעולות בשנייה.
    • החברה פעולת בשלושה שווקים מרכזיים - 
      • גרפיקה תלת מימדית:  Gaming, Professional Graphics (CAD, CAM, MRI, etc.) and more
      • חישוב מקבילי (High Performance Computing, Super Computers) 
      • בינה מלאכותית - בעיקר Deep Neural Networks
    • בערך בשנת 2001, כרטיסים גרפיים החלו להיות ניתנים לתכנות (לפני כן היו Fixed pipeline), מה שגרם לאנשים לחשוב “למה רק גרפיקה?” - אפשר גם פיסיקה, חישוב מזג אוויר ועוד - ונוצר התחום של General Purpose computing on GPUs :GPGPU, שהפך למאוד משמעותי ב-NVIDIA.
      • 127 מתוך 500 מחשבי העל הגדולים בעולם כוללים מעבדים של NVIDIA, מערכים של High Performance Computing ועוד.

רגע, GPU ו-CPU . . . על ה-Central Processing Unit אפשר להריץ חישובים (גם פיסיקליים) למיניהם, אז למה ה-GPU (או ה-GPGPU) יודע יותר טוב?
  • אלו שני יצורים שונים לגמרי, עם מטרות שונות
    • המטרה של ה-CPU היא לקחת כל Thread ולהריץ אותו הכי מהר שאפשר (Minimal Latency). 
      • יש המון “טריקים” לאיך אפשר עשות את זה: למשל Out Of Order Execution  - אם צריך לחשב ++i וגם ++j אז אפשר במקביל; אפשר לעשות Pre-fetching (למשל להביא נתון מהזכרון לשימוש בעוד 20 פקודות כדי שלא יחכה, אם אני יודע לצפות את זה סטטיסטית), אפשר לעשות Branch Prediction ועוד הרבה שיטות.
      • זה מתאים להמון אפליקציות - Office למשל, או בכלל כל אפליקציה עם לוגיקה סדרתית. 
      • “סדרתית” זו מילת המפתח, כי לפעמים אנחנו מגיעים לבעיות שהן Embarrassingly Parallel” - ניתנות לפירוק להמון בעיות “קטנות” ומקביליות, למשל גרפיקה תלת-מימדית, חישובי מטארולוגיה וכו’. לזה כבר מתאים יותר GPU.
    • ה-GPU הוא מכונה שנועדה למקסימום Throughput (בשונה ממינמום Latency של ה CPU)
      • איך זה עובד? לדוגמא אותו מעבד גרפי למשחקים שדיברנו עליו (ההוא עם ה- 14TeraFLOPS. . .) יודע “להחזיק באוויר” 4600 Warps - כש-Warp מייצג 32 יחידות אריתמטיות לוגיות (ALU) שיודעות לעשות כפל, חילוק וכו’. בניגוד ל-Thread של ה-CPU שמחזיק Instruction Pointer לכל ALU, כאן יש 32 יחידות לוגיות עם Instruction Pointer יחיד שיודע לעשות Crunching לכל ה-32 פעולות במקביל.
      • תנשמו עמוק - יש 4600 כאלה במקביל.
      • נזכיר שהמטרה היא אופטימיזציה של Throughput ולא Latency, אז אם  למשל נתקעים כי צריך נתון מהזכרון, פשוט “זורקים הצידה” את ה Warp שרץ ומריצים Warp אחר. אם גם הוא ניתקע - שוב זורקים ומריצים עוד אחד - וכיוון שיש כמות עצומה של כאלה באוויר, אנחנו “מחביאים” את ה-Latency שלהם - כל אחד לא בהכרח רץ הכי מהר שהוא יכול, אבל ה-Throughput הוא עצום.
  • רן רוצה להקשות בכל זאת - בשנים האחרונות (יותר מ-10 כבר) יש מעבדים מרובי ליבות (32, 64, איפה עצרנו?). האם זה נותן פתרון דומה ל-GPU?
    • לא.
    • טכנית - אפילו מבחינה מספרית, מעבד עם 8 ליבות ונניח 16 Threads או אפילו 32 או 64 - כשה-GPU יודע לבצע סדר 150,000 פעולות ALU במקביל . . . זה בסדר גודל שונה לחלוטין. אולי אם היה לי מעבד עם 150,000 ליבות היה על מה לדבר.
  • האם יש גם שוני ב-  instruction set? יש דברים שפשוט יותר קל לעשות ב-GPU, מעבר ל-Throughput?
    • כן - ה - Instruction set שונה חלוטין. ומכאן צוללים (נשימה עמוקה) - 
    • דוגמא למה שיש ב-GPU ואין ב-CPU: נניח שהגענו לתנאי כלשהו (if statement, branch condition), וה-Warp מורכב מ-32 ALU, כש-16 “הולכים שמאלה” ו-16 “ימינה” - מה עכשיו? יש Instruction point יחיד לכל 32 ה ALUs וזו בעיה. בכדי לפתור אותה, צריך קודם להריץ צד אחד ואחרי כן צד שני. במקרה כזה יש לי Register שאומר אילו Warps פעילים בכל שלב של ה - Execution - זה נקרא Predicate Register
    • חוץ מזה יש הבדלים ברמת שפת המכונה, והבדלים עצומים במבנה הזכרון - ב-GPU אני יודע ש-32 Threads  ייגשו במקביל למידע, אז ההתייחסות הלוקאלית שונה לחלוטין מזו של CPU.
    • יש המון רכיבים שנועדו במקור לגרפיקה, כמו למשל Texture units שנועדו לאפשר פילטרים על טקסטורות בזמן הגישה למידע או Hierarchical Z-Buffer שמאפשר “לזרוק” הרבה פיקסלים שאין בהם צורך.
    • וזה ממשיך - יש Video Encoding ו- Video Transcoding, שיש היום (כבר לא מעט שנים) גם על CPU
    • יש רכיבים של בינה מלאכותית על ה-GPU, שיודעים להריץ half (16–bit) float, במהירות די מטורפת . . .
    • בסופו של דבר, אפשר להסתכל על ה-GPU כ Dedicated Hardware, ייעודי לכמה משימות הספציפיות (גרפיקה תלת מימדית, חישוב מקבילי, בינה מלאכותית וכ”ד) עם המון רכיבי חומרה שמיועדים לפתור צווארי בקבוק ספציפיים למשימות הללו.
  • דיברנו על זה שבהתחלה GPU נועדו לגרפיקה, היום הטרנדים החמים הם בינה מלאכותית (AI), למידת מכונה (ML) או הבאז הנוכחי בזמן שאתם קוראים / מאזינים. אפשר להניח שהסיבה להצלחה היא שבעולם הבעיות הזה אפשר לחלק להמון בעיות קטנות ולבצע את החישוב באופן מקבילי.
  • האם ניתן לבצע את אותו החישוב גם על CPU (וה-GPU “פשוט” יותר מהיר”), או שאלו עולמות שונים לחלוטין ובכלל לא ניתן לבצע את החישוב על CPU?
    • אפשר להריץ בינה מלאכותית על CPU, זה ירוץ יותר לאט (בכמה סדרי גודל), יצרוך יותר חשמל, והתשובה תתקבל אחרי (נגיד) שבוע במקום כמה שעות.
    • קצת יותר לעומק (כן, יש הרבה) - בעיות של בינה מלאכותית ניתנות במידה רבה לתיאור באופן מתימטי ככפל מטריצות (כי כל הכיף ממערכות ספרתיות עשה חשק לקצת אלגברה לינארית, לא?). כפל מטריצות זו בעיה שהיא Embarrassingly Parallel”.
      • כשאנחנו מדברים על 150,000 ליבות ומטריצות שהן מאוד גדולות, כשהמטרה היא מקסימום Throughput ולאו דווקא מינימום Latency, ניתן להגיע למצבים בהם GPU מאיץ פתרון בעיית AI או ML בסדרי גודל של x10 או x15.

מתי התחלנו לראות את השימוש הנפוץ יותר GPU בתחום של AI?
  • “המפץ הגדול” של AI התרחש ב-2011
  • בעולמות ה-Computer Vision יש תחרות שנקראת ImageNet, שבה מציגים למערכת לומדת 1.5 מיליון תמונות, מבקשים ממנה ללמוד מאפיינים - ואז לזהות כמה מאות אלפי תמונות לא מתוייגות.
  • מה שקרה ב-2011 היה חוקר מאוניברסיטת טורונטו בשם אלכס קריצ’בסקי (Alex Krizhevsky) - שבפעם הראשונה השתמש בטכניקה של רשת נוירונים (ארכיטקטורה בשם Convolutional Neural Networks).
  • סיכום ביניים - עד אז חוקרים של ראייה ממוחשבת (Computer Vision) שהיו מעוניינים לזהות (למשל) פרצוף, היו צריכים להחליט על סט של מאפיינים (מרחק בין העיניים, זוית בין העין לאף, וכו’) יחסית פשוטים שניתן להפיק מהתמונה באמצעות פונקציות טריגונומטריות יחסית פשוטות - ולזהות באופן “ידני”. הכיוון הזה הראה שיפור אינקרמנטלי של שברירי אחוזים בשנה. כל זה -  עד שהגיע אלכס קריצ’בסקי ואמר (בערך): אני לא יודע כלום על התמונות מראש, אבל אני יכול לאמן מחשב במשך שבועיים והוא יגיד לי מה הם הפיצ’רים המשמעותיים, ואיתם (ועם מספיק זמן ומידע) הוא יבנה מסווג לתמונות שיהיה בסדר גודל יותר מדוייק מהשיטות הקיימות.
    • כנ”ל לגבי הפרדה בין כלב לחתול, בין משאית לכלי רכב אחר, בין מיג ל-F16 - וזה הבסיס ל-Deep Learning.
    • מוסיפים עוד ועוד שכבות - וה-GPU משמש בתפקיד משמעותי של מאיץ - מאוד יעיל עבור חזרה אריתמטית על אותן פעולות שוב ושוב, וחזרה על הדאטה עשרות ומאות אלפי פעמים (מראים מליוני תמונות וכל אחת אלפי פעמים)
  • ההתעסקות ברשתות נוירונים היא “עתיקה” יחסית - מתועדת כבר סביב 1965.
    • מה שפרץ את הדרך היה השימוש ב-GPU שאפשר לבצע את החזרתיות הזו בהיקפים אדירים.
  • רן זוכר את האיזכור של רשתות נוירונים בזמן הלימודים בטכניון כמשהו נחמד שאף אחד עדיין לא מצא משהו אפקטיבי לעשות איתו. ובכן, קרו מאז כמה דברים . . .
    • התקופה הזו מכונה היום כ- AI Winter (לא כזה) - “זה מעניין אבל אין מה לעשות אם זה”.
    • ראייה ממוחשבת תמיד הצריכה Feature Engineering מאוד מורכב, ולקח זמן להצליח לעשות את זה ב-Scale.
  • העולמות בהם Deep Learning עובד טוב הם כאלה שיש בהם המון מידע ודורשים יכולת קוגניטיבית
    • בשביל לקחת Excel ולמצוא קשר בין עמודות, Machine Learning “קלאסי” יעשה עבודה טובה; בשביל להחליט האם מדובר בחתול או האם זהו אותו חתול רק בזווית אחרת - זה משהו שלאדם אולי יהיה קל לעשות, אבל היכולת שלנו לתאר את התהליך באמצעות סט של חוקים (If A then B) מוגבלת (עד כדי לא קיימת), וכאן מגיעות רשתות נוירונים וארכיטקטורות Deep Learning לעזרה.

מאז 2011 ו AlexNet התרחשו הרבה דברים, החורף נגמר - איפה אנחנו היום? מה מעניין (מעבר לזיהוי תמונות של חתולים)?
  • איפה להתחיל? . . .
  • ישראל נחשבת ב-NVIDIA כאחת מחמש “מעצמות ה-AI” העולמיות, באותה קטיגוריה עם ארה”ב, סין, קנדה ובריטניה.
    • מה בארץ? כל נושא ניתוח הדמיות רפואיות (Medical Images) - ברדיולוגיה למשל, עד שרדיולוג מומחה רואה תמונה של מטופל יכולים לעבור כמה שבועות, ויש חברה ישראלית שיודעת לקחת את התמונות ולהגיד האם יש משהו באמת חריג ולהפנות לרדיולוג מיד.
    • באופן די דומה יש בישראל חברות שיודעות לזהות מזיקים על צמחים - {meshek{76, טאראניס
    • יש גם עיבוד שפה - Text-to-Speech ו-Speech-to-Text - בשנתיים האחרונות רואים שיפור משמעותי בטיפול בטקסטים ארוכים (כולל לופ שהזכרנו שגורם לגוגל לשבור את ה-Capcha של עצמה), כשהסיבה היא שגוגל עברו למה שמכונה Neural Machine Translation - במקום מערכת סטטיסטית עברו להתבסס על רשתות נוירונים.
    • וכמובן - המון עבודה בתחום הבטחוני: זיהוי עצמים מתצלומי אוויר, ניתוח אותות שיכולים לשמש לאיתור מנהרות (ממש Deep Learning), טיסנים ועוד.
    • ומה ש-NVIDIA עוסקת בו המון: רכב אוטונומי (דוגמא ישראלית - Cognata). 
      • לדעת בדיוק מה קורה על הכביש - האם זהו הולך רגל או עצם סטטי? איך עוברים נתיב? איפה אני נמצא בעולם?
      • קיימות, סדר גודל, של 20 רשתות נוירונים שונות בתוך רכב אוטונומי שצריכות לדבר אחת עם השנייה, לנתח את מיקום הרכב בעולם ולהחליט על השלב הבא.
      • הרוב המכריע מגיע מניתוח תמונות - במובן הרחב: תמונות ראדאר, LADAR, אינפרא-אדום ועוד מגוון סיגנלים וערוצים שונים.
      • כל זאת - בניגוד לקבלת החלטות (“לפנות ימינה?”), שהיום לא נעשית באמצעות Deep Learning?
        • דווקא כן . . . Sensor Fusion - לקחת את כל המידע, כולל הפעולות של הנהג, מפות עם רזולוציה גבוהה וכו’ - ולקבל החלטה (בשילוב תנאי מזג אוויר, מצב התנועה ועוד).
        • ושוב - דוגמא למשהו קוגניטיבי, שנהג אנושי עושה כביכול “בלי לחשוב”.
      • אפשר לצלול גם כאן (וכמובן שלא נפספס את ההזדמנות) -  איך בכלל אוספים מידע עבור רכב אוטונומי?
        • הסטטיסטיקה מדברת על סדר גודל 700 הרוגים לכל מיליון ק”מ של נסיעה (?)
        • צריך “לנסוע” סדר גודל של 11 מיליארד מייל (17.7 מליון ק”מ) כדי שרכב אוטונומי יוגדר כ”בטוח”. יהיה קצת קשה לנסוע את זה פיסית (יש מצב שזה מה שאילון מאסק ניסה?), אז ב-NVIDIA מנסים באמצעות סימולציות וגרפיקה של עולמות וירטואליים ליצור סימולציה של כל מיני סיטואציות - מזג אוויר, שמש בעיניים בזויות מסויימות, נהג “שנדחף”, מגדל מים שקורס באמצע הכביש ועוד ועוד . . . הרכב מקבל את כל ה-Input הוירטואלי הזה ואמור להגיב (או ללמוד להגיב) בעולם וירטואלי.
        • כל רכב שיוצא מהמפעל נדרש לאימון של 17 מיליארד ק”מ?
          • לא צריך כל אחד בנפרד, אלא שהמחשב שנמצא בתוך הרכב יהיה עם הידע הנרכש בעקבות נהיגה של 17 מיליארד ק”מ. את מודל הידע הזה אני יכול להשתיל בהרבה רכבים (עם אותם מאפיינים - אותו אוסף של מטריצות). Matrix . . .
        • זה עובד גם עם בני נוער בתקופת הליווי אחרי מעבר טסט נהיגה?! לא, אבל ברכב זה עובד - משנים את רשת הנוירונים במוח כך שתייצג את הידע הנרכש.
        • עוד יתרון של רשת נוירונים - נניח שרכב אוטונומי (חס ושלום) דרס מישהו (נניח רובוט אחר), אפשר ללמד את הרשת את מקרה הזה, ולהטעין את כל הרשת בידע החדש לכל הרכבים שמשתמשים ברשת הזו. במקום Recall - שולחים Over the air updates.
        • אפשר ללמוד נהיגה בלי לעלות על הכביש - רק שאם כל הרכבים אוטונומיים אז לא צריך ללמוד נהיגה . . .
        • האם מדובר במסכים ומצלמות על הרכב שקולטות את המידע, או משהו וירטואלי?
          • מבחינה טכנית זו גישה שנקראת Hardware in the Loop - שני מחשבים (מחשבי על) “שמדברים” אחד עם השני - אחד אחראי על יצירה של העולם הוירטואלי (מזג אוויר וכו’), ומזין אל השני - עליו נמצאת התוכנה. מקור המידע (LADAR, מצלמות, אינפרא אדום או משהו אחר) פחות משנה כי זה הכל “זרם של מספרים”.
          • המדיום בינארי ולא אנאלוגי - זה הכל ביטים . . .
          • ואם אנחנו כבר כאן - אפשר להריץ אלפי מחשבים (כי מזמן לא דיברנו על עננים ו-Serverless) בקצבים הרבה יותר מהירים ממה שבני אדם מסוגלים לעשות (סימולציה של אלפי שניות בשנייה “מציאותית” אחת), וכך אנחנו יכולים לאסוף ולייצר את אותם 11 מיליארד מיילים.
          • “אנחנו” זה NVIDIA או הלקוחות? גם וגם. NVIDIA יכולה לספק, מעבר למחשב העל שיושב ברכב (בהספקים של 300-400 וואט) גם חלק מהרשתות האלה. יש יצרנים שמעדיפים לפתח את זה לבד.
          • עבור רמות 4 ו-5 של רכב אוטונומי (רמת ה”לסמוך על הרכב שיקח את הילד לגן”) צריך הכל כפול - כפילות של רכיבי חומרה, מימושים שונים של כל אלגוריתם וכו’, ואז גם אם אתה יצרן של רכב אוטונומי ומפתח אלגוריתם משלך, NVIDIA יכולה לספק את הגיבוי.
          • איך אלגוריתם אחד מחליט שהשני טעה? מעניין . . .

מה לגבי אפליצקיה אחרת של GPU - מסדי נתונים?
  • יש היום Databases שרצים על GPU שמצליחים להאיץ מאוד כל עיבוד המידע עליהם
  • מי אמר SQream? וזו רק דוגמא אחת
  • על הנייר זה נשמע כמו כלי אידיאלי להרצת שאילתות על מסדי נתונים - הרבה מידע וחיתוכים, נשמע כמו משהו שתפור על GPU, רק ש . . .
    • תחום ה-Databases בעולם מסורתית מאוד שמרני - כלל האצבע מדבר על “לא לגעת ב-Database לפני שהוא עבר עשר שנים בשוק”.
    • ביצועי ה-GPU בשוק מאוד מרשימים - אבל השוק באופן כללי עדיין ממתין לוודא שהעסק יציב
    • יש מימושים - אבל כיום עדיין בעיקר לא עבור אפליקציות שהן Mission Critical - דברים שאפשר לעשות Offline בצורה מהירה.  כן יש ציפייה שזה יכנס יותר ויותר.
  • בהרבה מקרים צווארי הבקבוק במסדי נתונים נובעים מקצבי I/O ולא יכולת חישוב (I/O-bound ולא Compute-bound) - ה-GPU יכול לעזור יותר ב-Compute?
    • כן, אם כי בהרבה מסדי נתונים הנתונים בעמודות (אותו סוג מידע) מוחזקים כשהם מכווצים (Compressed) - באופן של-GPU מאוד קל לפתוח אותה (על הדיסק), ובכך פותרים את בעיות ה-I/O: טוענים את המידע מכווץ (compressed) ל-GPU, והוא נפתח שם “בלי עלות” (בגלל כוח החישוב העצום יחסית שזמין).

אז מה קורה כיום ב-NVIDIA - בונים GPU נפרד למסדי נתונים, ואחד אחר למכוניות אוטונומיות וכו’?
  • במהות - הליבות (Core) הפנימיות מאוד דומות, ויש Stream Multiprocessor שהוא הבסיס של הGPU
  • אותו SM יכול לבוא במגוןן של מינונים, בהתאם לצורך - יש מקומות שהחישוביות (Compute) קריטית, יש יישומים לגרפיקה, יש מקרים בהם צריך יותר Texture memory וכו’ - וכך יש כמה קווי מוצרים.
  • למשל - קו מוצרים לגרפיקה שנקרא GeForce, קו מוצרים ל-Professional Gaming שקרא QUADRO, יש קו מוצרים לשרתים ול-AI שנקרא TESLA - בכל אחד מהם הרכיבים במינונים קצת שונים, לדוגמא - יכולות DMA, כמות ה SMים, רכיבים ייעודיים לשרתים וכו’.
  • אנחנו בעיקר מדברים על אופטיזציות, ועדיין ניתן להריץ כל אפליקציה על כל סוג?
    • כן - למשל ב-TESLA, אנחנו כיום בדור שנקרא Turing, והחל מדור שנקרא Volta יש למשל ליבות מיוחדות לטיפול בהכפלת מטריצות, ואז  אפשר לעבוד ב- 16bit ל-PF, ולא 32, מה שמוביל להאצה מאוד משמעותית
  • פעם שנייה שאנחנו נוגעים בהבדל שבין 16bit לעומת 32bit - למה זה חשוב, בזמן שרוב האפליקציות הן ל-32?
    • הרבה פעמים, לפחות בהקשר של רשתות נוירונים, מספיק לשמור את המידע ב - 16bit, ואפשר פשוט לחסוך (זכרון, יכולת חישוב).
    • הצד השני - (HPC (High Performance Computing, שם מדברים על 64bit למשל עבור סמולציות של מזג אוויר או תנועה של מולקולות וכו’ - ואי אפשר לוותר על כלום.
  • חשוב לשים לב שהירידה מ-32 ל-16Bit מאוד משמעותית - לדוגמא, בכרטיסים האחרונים של NVIDIA אפשר לבצע 16 Tera-FLOPS עם 32 bit floating, כאשר אם יורדים ל- 16 bit floating מגיעים לאיזור ה- 110 Tera-FLOPS, וזה כבר סדר גודל שונה לחלוטין.
  • צריך לקחת בחשבון גם שלא כל היישומים של רשתות נוירונים (neural networks) הם זהים - אפשר לאמן רשת נוירונים, ואז אנחנו רוצים לעבוד ב-32 או 16 bit, ואחר כך כאשר המודל מוכן ורוצים לייצר חיזוי מעל מידע חדש, אולי נרצה לעבוד עם אפילו עם 8 bit (ל-Integer), ובאופן הזה לקבל ביצועים הרבה יותר גבוהים.
    • עם Turing, יש אפילו תמיכה ב-4 bit.

אם מסתכלים שנה (או אפילו חמש שנים) קדימה - עם אילו אתגרים יהיה צריך להתמודד בתחום של ה-GPU? משהו יותר מהותי מ”יותר גדול, יותר מהר, יותר X” - באילו אפליקציות לא משתמשים כיום ב-GPU וניתן להביא ערך?
  • יש המון כאלה - התחום רק הולך וגדל, והשוק שיכול להפיק ערך מבינה מלאכותית הולך וגדל בשנים האחרונות - זה כיוון אחד (השוק שגדל).
  • מהצד השני, אפשר להסתכל על התחומים “המסורתיים” של NVIDIA.
    • בגרפיקה תלת מימדית - משחקים “צויירו” עד היום בטכנולוגיה שנקראית Raster, שבה מתבצע חישוב תאורה עבור כל משולש בנפרד. מצד אחד זה מאפשר מקביליות מאוד גבוהה, אבל מצד שני - זה עולה באיכות (כשרוצים לעבוד על כמה משולשים למשל - השתקפיות, צללים וכו’). הכרטיס האחרון של NVIDIA עשה צעד ראשון לכיוון Ray Tracing - סימולציה פיסיקלית של קרני האור, מה שמאפשר איכויות מאוד גבוהות של תמונה (עד כדי חוסר יכולות להבחין בין תמונה סינטטית לתמונה “אמיתית” בסרטים של Pixar למשל (כאן יש תיאור של האתגרים). במשחקי מחשב אנחנו עוד לא שם אבל זה בהחלט הכיוון.
      • יש פרק של עושים היסטוריה עם רן לוי על עמק המוזרות, שבין השאר מדבר על כך שככל שאתה מנסה להיות יותר אמיתי עם דמות, כך היא גורמת ליותר אי-נוחות לצופה: אם ברור שזו דמות מצויירת (מיקי מאוס) אז בני אדם מרגישים בסדר עם זה, אבל אם הדמות כמעט-אנושית אבל קצת רובוטית מדי זה כבר הופך קריפי (ד”ש לארנולד שוורצנגר).
      • יכול להיות שנעבור את עמק המוזרות, וכבר בכלל לא נבחין בהבדל - ל-NVIDIA כבר היום יש מוצרים שמסוגלים לג’נרט (to generate) פנים “אמיתיות”, הארכיטרקטורה נקראית GAN - Generative Adversary Networks.
      • המוח אנושי יודע להבחין היטב בפרצופים אנושיים (עם איברים אחרים זה פחות בולט), ולכן זה אתגר מאוד מסובך. יש היום שיטות שמדמות שכבות שונות של עור עם הדמייה של מעבר אור דרכן באופן לא שווה, עם השתקפויות ועוד - על מנת לייצר תמונה שנתפסת כאמיתית.

ולמשהו קצת אחר - מהו GTC 2019?
  • ובכן - GPU Technology Conference . . . זהו הכנס המרכזי של NVIDIA
  • הכנס השנה יתקיים בסאן חוזה, 17-21 במרץ - וכל מי שעוסק ב-GPU, בינה מלאכותית, גרפיקה תלת-מימדית וכו’ מוזמן. טובי המרצים מגיעים, כמות הגשת ההצעות להרצאות הייתה הייתה השנה מטורפת.
  • הכנס בדר”כ כולל הכרזות מאוד מעניינות של NVIDIA - אי אפשר עדיין לחשוף בדיוק מה, אבל יהיה מעניין.
  • כמעט כל ההרצאות, גם השנה וגם משנים קודמות (כולל מהכנס שהתקיים בארץ באוקטובר), זמינות לצפייה מאוחר יותר - GTC On-Demand.

אז מה עוד לקראת סיום?
  • נושא שחוזר על עצמו לא מעט - יש הרבה פחד ואי ודאות מהתחום של בינה מלאכותית (Hi Elon), ו-NVIDIA לעיתים מקבלת השוואות ל- Cyberdyne Systems . . .
  • בינה מלאכותית לכשלעצמה אינה טובה או רעה - הכל שאלה של איך בוחרים להשתמש בה (Hi John). ככל שנמצא יותר שימושים לבינה מלאכותית כך נמצא יותר מקומות בהם אנחנו לא באמת יכולים להחליף אדם.

מה לגבי מרכז הפיתוח בישראל - איפה? מה מחפשים?
  • יושבים בגני התערוכה בתל אביב, ביתן 2.
  • יש צוותים שעושים אופטימיזציה ל-Cuda ותשתיות לבינה מלאכותית; יש צוותים שמפתחים כלי פיתוח תוכנה ל GPUs; יש כאלה שעובדים מול לקוחות, ואפילו יש לנו צוות שעושה Research. כ - 30-35 איש בסה”כ.
  • לגמרי מספיק בשביל חסות לכנס רברסים 2019 ;-)
הקובץ נמצא כאן, האזנה נעימה ותודה רבה לעופר פורר על התמלול