בינה מלאכותית FPGA

מה זה TOPS בבינה מלאכותית וב-FPGA?

כאשר מדברים על שבבים שמריצים Artificial Intelligence, הרבה פעמים רואים נתון בשם TOPS.

TOPS הוא קיצור של:

Tera Operations Per Second

כלומר:

Trillion Operations Per Second

במספרים:

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


למה TOPS חשוב בבינה מלאכותית?

רשת נוירונים מלאכותית, כמו ANN, CNN או Transformer, מבצעת הרבה מאוד חישובים פשוטים.

החישוב הנפוץ ביותר הוא:

לדוגמה:

כאשר:

ברשת נוירונים יש הרבה מאוד weights, ולכן יש הרבה מאוד פעולות multiply ו-add.

בגלל זה מודדים את הכוח של שבבי AI ביחידות כמו TOPS.


מה זה MAC?

בבינה מלאכותית משתמשים הרבה במושג:

הכוונה היא:

לדוגמה:

חשוב לדעת:

חלק מהחברות סופרות MAC אחד כ-operation אחת.

חלק מהחברות סופרות MAC אחד כשתי operations:

לכן, כאשר משווים TOPS בין שבבים, צריך לבדוק איך החברה ספרה את ה-operations.


TOPS תלוי בדיוק המספרים

אותו שבב יכול לתת ביצועים שונים לפי סוג המספרים:

לדוגמה:

לא אומר בהכרח:

בדרך כלל:

לכן תמיד צריך לבדוק באיזה data type נמדד ה-TOPS.


הקשר בין FPGA ל-TOPS?

במעבד רגיל או בשבב AI מוכן, היצרן נותן מספר TOPS קבוע.

אבל ב-FPGA המצב שונה.

FPGA הוא רכיב שניתן לבנות בו hardware לפי הצורך.

לכן ה-TOPS של FPGA תלוי במה שתכננת בתוך ה-FPGA:


אז מה זה TOPS בבינה מלאכותית וב-FPGA?

כאשר מדברים על שבבים שמריצים Artificial Intelligence, הרבה פעמים רואים נתון בשם TOPS.

TOPS הוא קיצור של:

Tera Operations Per Second

כלומר:

Trillion Operations Per Second

במספרים:

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


למה TOPS חשוב בבינה מלאכותית?

רשת נוירונים מלאכותית, כמו ANN, CNN או Transformer, מבצעת הרבה מאוד חישובים פשוטים.

החישוב הנפוץ ביותר הוא:

לדוגמה:

כאשר:

בצורה כללית יותר, עבור נוירון:

כלומר:

ברשת נוירונים יש הרבה מאוד weights, ולכן יש הרבה מאוד פעולות multiply ו-add.

בגלל זה מודדים את הכוח של שבבי AI ביחידות כמו TOPS.


מה זה MAC?

בבינה מלאכותית משתמשים הרבה במושג:

הכוונה היא:

לדוגמה:

בצורה כללית:

חשוב לדעת:

חלק מהחברות סופרות MAC אחד כ-operation אחת.

חלק מהחברות סופרות MAC אחד כשתי operations:

כלומר:

לכן, כאשר משווים TOPS בין שבבים, צריך לבדוק איך החברה ספרה את ה-operations.


TOPS תלוי בדיוק המספרים

אותו שבב יכול לתת ביצועים שונים לפי סוג המספרים:

לדוגמה:

לא אומר בהכרח:

בדרך כלל:

לכן תמיד צריך לבדוק באיזה data type נמדד ה-TOPS.


מה הקשר בין FPGA ל-TOPS?

במעבד רגיל או בשבב AI מוכן, היצרן נותן מספר TOPS קבוע.

אבל ב-FPGA המצב שונה.

FPGA הוא רכיב שניתן לבנות בו hardware לפי הצורך.

לכן ה-TOPS של FPGA תלוי במה שתכננת בתוך ה-FPGA:

נוסחה כללית:

כאשר:

לדוגמה:

אם FPGA מבצע:

אז:

ולכן:


האם TOPS לבד מספיק?

לא.

TOPS הוא מספר חשוב, אבל הוא לא מספר שמספר את כל האמת.

צריך לבדוק גם:

לדוגמה:

שבב עם TOPS גבוה אבל memory איטי יכול לעבוד לאט.

לעומת זאת, FPGA עם TOPS נמוך יותר יכול לתת latency נמוך מאוד אם ה-model קטן ומתוכנן טוב.


דוגמה פשוטה: כמה TOPS צריך לרשת ANN קטנה?

נניח שיש לנו רשת ANN פשוטה.

המבנה שלה הוא:

כלומר:

זו רשת Fully Connected.

כל neuron מחובר לכל ה-neurons בשכבה הקודמת.


חישוב מספר הפעולות

שכבה ראשונה

נוסחה:

חישוב:

שכבה שנייה

נוסחה:

חישוב:

שכבה שלישית

נוסחה:

חישוב:

שכבת הפלט

נוסחה:

חישוב:

סכימה כוללת

נוסחה:

חישוב:

כלומר:

המרה ל-operations

נוסחה:

חישוב:

נוסיף bias ו-activation:


כמה TOPS זה באמת?

נוסחה כללית:

מקרה 1: הרצה אחת בשנייה


מקרה 2: 1,000 הרצות בשנייה


מקרה 3: 1,000,000 הרצות בשנייה


טבלה קצרה


מסקנה מהדוגמה

רשת ANN קטנה בגודל:

לא באמת צריכה שבב של TOPS גבוה.

היא צריכה רק כמה אלפי operations לכל inference.

רשת כזאת יכולה לרוץ גם על:

היתרון של FPGA במקרה כזה הוא לא בהכרח TOPS גבוה, אלא:


מתי באמת צריך TOPS גבוה?

TOPS גבוה חשוב יותר כאשר מריצים models גדולים כמו:

לדוגמה, object detection עם YOLO דורש הרבה יותר computation מאשר ANN קטן.

שם כבר TOPS, memory, bandwidth ו-hardware efficiency הופכים להיות חשובים מאוד.


סיכום עד כה

TOPS הוא מדד שמראה כמה operations שבב יכול לבצע בשנייה.

בבינה מלאכותית רוב הפעולות הן multiply ו-add.

ב-FPGA ה-TOPS תלוי בתכנון שאתה בונה בתוך הרכיב.

אבל TOPS לבד לא מספיק כדי לדעת אם מערכת טובה.

צריך לבדוק גם latency, memory, power consumption, numeric precision וגודל ה-model.

בדוגמה של רשת ANN קטנה בגודל:

צריך בערך:

ולכן גם אם מריצים אותה אלפי פעמים בשנייה, היא עדיין לא דורשת TOPS גבוה.

המסקנה החשובה היא:

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

Artificial Intelligence

 

חישוב מתקדם שלב ב

דוגמה: חישוב TOPS לאימון רשת ANN (Training)

מבנה הרשת:


שלב 1: חישוב פעולות ל-Inference

כמו קודם:


שלב 2: חישוב פעולות ל-Training

באימון יש:

בקירוב:

לכן:


שלב 3: Batch Processing


שלב 4: מספר batches


שלב 5: חישוב כולל


שלב 6: זמן ריצה על CPU

נניח:


חישוב זמן


שלב 7: חישוב TOPS בפועל


מסקנה מהחישוב

האימון של הרשת:

עם:

דורש:


מסקנה כללית

גם כאשר מוסיפים:

עדיין:


למה זה חשוב?

זה מראה ש:

רשת קטנה יכולה לרוץ על:


סיכום

TOPS הוא מדד שמראה כמה operations שבב יכול לבצע בשנייה.

אבל:

צריך להבין גם:


מסקנה חשובה

כלומר:

 

 

חישוב TOPS להרצת מודל CNN / YOLO על מעבד (CPU)

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


הנחות בסיס (Assumptions)


שלב 1: חישוב פעולות בשכבת Convolution

נניח שכבה:


חישוב output size


חישוב MAC לכל פיקסל

כל פיקסל דורש:


חישוב כולל לשכבה


המרה ל-operations


שלב 2: שכבות נוספות (Approximation)

נניח שיש:

בקירוב:


שלב 3: Fully Connected + Activation

נוסיף:


סה"כ פעולות ל-Inference אחד


שלב 4: חישוב זמן ריצה על CPU


זמן להרצה אחת


שלב 5: Frames Per Second (FPS)


שלב 6: חישוב TOPS בפועל


שלב 7: אם רוצים 30 FPS (Real-Time)


המרה ל-TOPS


מסקנה מהדוגמה


השוואה ל-ANN קטן


תובנה חשובה


סיכום

אבל עדיין:


 

 

 

היתרונות של FPGA על CPU בבינה מלאכותית

איך זה משנה את TOPS ?

כאשר מריצים מודל בינה מלאכותית, אפשר להריץ אותו על כמה סוגי חומרה:

במאמר הזה נתמקד בהבדל בין:


מה ההבדל הבסיסי בין CPU ל-FPGA?

CPU

מעבד CPU הוא מעבד כללי.

הוא יודע להריץ כמעט כל תוכנה:

אבל CPU עובד בדרך כלל בצורה סדרתית יותר.

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

היתרון של CPU:

החיסרון של CPU:


FPGA

FPGA הוא רכיב לוגי שניתן לבנות בתוכו חומרה מותאמת אישית.

במקום להריץ תוכנה בלבד, אנחנו בונים ממש מעגל חישוב.

לדוגמה, אפשר לבנות בתוך FPGA:

היתרון של FPGA:

החיסרון של FPGA:


למה FPGA יכול להיות מהיר למרות שהתדר שלו נמוך יותר?

CPU יכול לעבוד בתדר גבוה, לדוגמה:

FPGA בדרך כלל עובד בתדר נמוך יותר, לדוגמה:

אבל FPGA יכול לבצע הרבה פעולות במקביל.

כלומר:

זו נקודה חשובה מאוד.


איך FPGA משנה את חישוב ה-TOPS?

ב-CPU מספר הפעולות בכל clock מוגבל לפי הארכיטקטורה של המעבד.

אבל ב-FPGA אתה בונה את הארכיטקטורה.

לכן ב-FPGA אפשר להחליט:

הנוסחה הבסיסית היא:

אם משתמשים ב-MAC:

ואם סופרים MAC כשתי פעולות:

לכן:


דוגמה פשוטה לחישוב TOPS ב-FPGA

נניח שבנינו בתוך FPGA:

וכל MAC עובד בכל clock.

נניח שהתדר הוא:

כל MAC מבצע:

לכן בכל clock יש:

עכשיו נכפיל בתדר:

כלומר:

המרה ל-TOPS:

כלומר:


דוגמה עם FPGA קטן יותר

נניח FPGA קטן יותר עם:

בתדר:

חישוב:

המרה ל-TOPS:

כלומר:

זה נשמע קטן, אבל לרשתות קטנות זה הרבה מאוד.


דוגמה על רשת ANN קטנה

נחזור לרשת:

חישבנו קודם שהיא דורשת בערך:

או בערך:

לכל inference אחד.


הרצה על FPGA עם 64 MAC units

אם יש ב-FPGA:

אז בכל clock אפשר לבצע:

הרשת דורשת:

מספר מחזורי clock בקירוב:

מעגלים למעלה:

אם התדר הוא:

אז זמן clock אחד הוא:

לכן זמן חישוב אידיאלי:

כלומר:

זה זמן חישוב קטן מאוד.


כמה inference בשנייה זה נותן?

כלומר, בתיאוריה:

בפועל יהיה פחות בגלל:

אבל עדיין זו כמות עצומה לרשת קטנה.


השוואה פשוטה מול CPU

נניח CPU מבצע את החישוב בצורה פחות מקבילית.

אם CPU מבצע רק כמה MAC בכל clock, הוא צריך יותר מחזורי clock.

CPU חזק יכול להיות מהיר מאוד, אבל הוא מריץ גם:

FPGA, לעומת זאת, יכול להיות בנוי רק למטרה אחת:

לכן היתרון הגדול של FPGA הוא לא רק TOPS.

היתרון הגדול הוא:


למה TOPS של FPGA לא תמיד מופיע בדף הנתונים?

ב-CPU או NPU היצרן יכול לכתוב:

אבל ב-FPGA זה תלוי בתכנון שלך.

אותו FPGA יכול לתת ביצועים שונים מאוד לפי:

לכן ב-FPGA לא שואלים רק:

אלא שואלים:


מסקנה

FPGA לא תמיד מנצח CPU בכל דבר.

CPU עדיף כאשר צריך:

FPGA עדיף כאשר צריך:

בבינה מלאכותית, FPGA יכול להיות חזק במיוחד כאשר המודל קטן או בינוני, והחישוב שלו ידוע מראש.

הנקודה החשובה היא:

וזה בדיוק מה שיכול לשנות את ה-TOPS בפועל.

בינה מלאכותית