יום ראשון, 29 באוקטובר 2017

פי 7 יותר מהיר מ-TensorFlow, פי 5 מ-Caffe2, פי 2 מ-mxNet, שווה ערך ל-Tensor RT מבחינת מהירות ויעיל יותר ממנו בצריכת זיכרון – קבלו את ה-GPU Coder!

באמצע החודש נערך בתל אביב ה-GPU Technology Conference של חברת NVIDIA, במעמד מנכ"ל ומייסד החברה, ג'ן-סון הואנג, אשר אף ביקר בביתן ההדגמות של חברת סיסטמטיקס והביע את ההערכתו לשיתוף הפעולה המוצלח וארוך השנים בין החברה שלו לחברת MathWorks.


במהלך הכנס התכבדתי להרצות על יכולות ה-Deep Learning של סביבת MATLAB, בהרצאה אשר בעיקר סקרה את היכולת החדשה להמיר קוד MATLAB לקוד CUDA, לצורך הפעלתו על GPU-ים של חברת NVIDIA. יכולת זו מתאפשרת הודות לכלי החדש GPU Coder, שהושק לפני כחודש, לאחר תקופת בדיקות ארוכה, אשר כללה גם מספר Beta sites בישראל.

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

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

אז ככה, כפי שניתן לראות בגרף למטה (ניתן ללחוץ להגדלה), לפי ה-benchmarks, הקוד שנוצר על ידי ה-GPU Coder עבור פעולות הסקה (Inference) של Alexnet על desktop מהיר בערך פי 5 ממה שמאפשרת ספריית Caffe2 של פייסבוק, ופי 7 מאשר TensorFlow – עבור Batch Size של 128.
זה המקום להדגיש שכפי שניתן לראות בגרף - גם ריצה ב-MATLAB תוך שימוש ב-GPU, ללא יצירת קוד CUDA – מהירה יותר משתי הסביבות הללו – כי הן מבוססות Python, דבר שמוסיף להן הרבה overhead. מי שיותר מהיר מ-MATLAB זה mxNet, כי הוא מבוסס C++ ולא Python, אבל גם הוא נחות פי 2 בהשוואה לקוד שמייצר ה-GPU Coder.


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

אז זה הרגע לעבור לדבר קצת על כרטיסים, ולא על desktops.

שאלה שאנשים רבים מתעניינים בה, היא איך הקוד של ה-GPU Coder בהשוואה ל-Tensor RT – שזה runtime ואופטימייזר הסקה עתיר ביצועים של NVIDIA לתחום ה-Deep Learning המותאם עבור כרטיסי Jetson TX2. אז ככה, כפי שניתן לראות למטה (לחצו להגדלה), מבחינת מהירות – הקוד של ה-GPU Coder איטי מ-Tensor RT בכ-15%. לא הבדל גדול, אבל אני יכול לספר לכם שב-MathWorks פועלים כדי להעלים אותו.


אבל מה שעוד יותר מעניין – זה שכפי שניתן לראות למטה (לחצו להגדלה) – עד Batch Sizes של 64 ומטה – הקוד שנוצר על ידי ה-GPU Coder תופס פחות זיכרון! ויש משמעות מאוד גדולה לערכי Batch Sizes נמוכים שכאלה – כי זה מה שבדרך כלל משתמשים בו לפעולות הסקה ב-Real Time על כרטיס (ושוב - כרטיס, להבדיל מ-desktop, עליו כתבתי למעלה).


חשוב להבהיר ש-Tensor RT מיועד ליישומי Deep Learning, בעוד שה-GPU Coder מאפשר להשיג ביצועים טובים גם עבור יישומים נוספים, לא רק של Deep Learning. ולא חסרות דוגמאות שבהן מרכיב ה-Deep Learning הוא רק חלק מאפליקציה יותר גדולה, למשל של Computer Vision, ועם הכלי החדש ניתן להמיר לקוד CUDA יעיל גם את החלק של ה-Computer Vision.

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


המעוניינים במידע נוסף מוזמנים לסמינר חינמי חצי-יומי שיתקיים בהרצליה ב-21/11/17. למידע נוסף ורישום – לחצו פה.

קישורים שימושיים נוספים:

יום רביעי, 27 בספטמבר 2017

שנה חדשה, גרסה חדשה

בשבוע שעבר שוחררה גרסת R2017b של מוצרי MathWorks. הגרסה החדשה מכילה יכולות חדשות משמעותיות ב-MATLAB ו-Simulink, וכן עדכונים לעשרות כלים אחרים.
בין היתר, הגרסה כוללת:
  • תוספת של פונקציות רבות הנתמכות לייצור אוטומטי של קוד C מתוך קוד ה-MATLAB,
  • האצה של הקוד והמודלים הקיימים שיש בידכם היום (בארבע הגרסאות האחרונות מהירות הריצה של הקוד השתפרה בכ-25%, בכל גרסה, מבלי שתצטרכו לעשות דבר פרט לשימוש בגרסה עדכנית!),
  • אפשרות להורדה של Add-Ons מספריות החומרה, הטולבוקסים וקהיליית המשתמשים של MathWorks – ללא עלות נוספת.
להלן תקציר של השיפורים המרכזיים בכלים השונים, כפי שרוכזו על ידי צוות מהנדסי האפליקציה של סיסטמטיקס (מומלץ לבחון את ה-Release Notes על מנת ליהנות מכל השיפורים).

משפחת מוצרי MATLAB

MATLAB

  • geobubble – פונקציה ליצירת מפה אינטראקטיבית עם בועות בגודל וצבע משתנים בהתאם לערכים המוצגים
  • wordcloud – פונקציה להצגת מילים בגודל משתנה בהתאם לתדירות הופעתן או מידע אחר
  • Code compatibility report – כלי המסייע לעדכן את הקוד הקיים לגרסאות MATLAB חדשות יותר
  • tall arrays – הרחבת היכולות להצגת מידע הגדול מגודל הזיכרון באמצעות פונקציות binscatter, plot, scatter
  • App Designer – שיפורים נוספים, ביניהם הרחבת התמיכה בויזואליציה בדו-מימד ותלת-מימד, רכיבים חדשים ושיפורים באריזה ושיתוף
  • C++ MATLAB Engine API – הרצת קוד MATLAB מתוך תוכנית C++  והעברת מידע  בין התוכנית ל-MATLAB

Statistics and Machine Learning Toolbox

הרחבת התמיכה בשימוש ב-tall arrays עבור פונקציות לבניית מודלי Machine Learning:
  • fitckernel (new function) for Gaussian kernel classification using feature expansion
  • fitrlinear for SVM regression
  • fitctree for classification decision trees

 Text Analytics Toolbox

כלי חדש המכיל אלגוריתמים וויזואליציות לעיבוד מקדים, אנליזה ומידול של מידע טקסטואלי, עבור אפליקציות כמו ניתוח רגשות, תחזוקה מונעת וזיהוי נושא.
ה- Toolboxמכיל כלים לעיבוד טקסט ממקורות שונים, כגון לוגים של מערכות, תוצאות סקרים, דו"חות, אתרי חדשות ומדיה חברתית, עליו ניתן לבצע פעולות כמו המרת טקסט לתצוגה נומרית ובניית מודלים סטטיסטיים.
באמצעות שיטות כמו LDA, LSA ו-Word embeddings, ניתן לבצע אישכול ולמצות מאפיינים ממידע טקסטואלי רב-מימדי, ולשלב מאפיינים אלה בבנייה של מודל Machine Learning.
ניתן לייבא מידע מקבצי word או PDF, לחשב TF-IDF  ולנתח תדירות מילים, לבצע אימון של מודלי Word-embedding, ולייבא מודלי מאומנים מ- word2vec, FastText,  GloVe .
לסרטון קצר בעברית בנושא - לחצו פה.

Database Toolbox

  • אפליקציית Database Explorer משופרת – לסקירה databases מבלי לדעת SQL
  • ממשק עבור MongoDB, Neo4j, SQL

Optimization Toolbox

  • שיפורים להגדרת בעיות באופן פשוט וישיר, וכתיבת קוד קומפקטי וקריא
  • אפשרות לעבודה עם פותרן אוטומטי

Symbolic Math Toolbox

  • עבודה עם יחידות והמרה בין יחידות SI ו-US
  • ביצועי חישובים פיסיקליים ב- Live Editor

משפחת מוצרי Simulink

Simulink

  • ניתן לבצע השוואות בין מודלים שונים ודיאגרמות מצבים, לצורך איחוד והשוואות בין ענפי הפיתוח השונים (Merge, Branches), ללא צורך ברשיון עבור ה-Simulink Report Generator
  • ניתן לעשות שימוש ביכולות Simulink Project גם עבור פרויקטים קיימים, ע"י המרה באופן אוטומטי של תיקיית הפרוייקט במחשב לפרוייקט Simulink.
  • ריכוז כלל יכולות ניהול וניתוח סימולציות לתוך "מנהל ריצת הסימולציה". כעת ניתן לבחון מהו מצב הסימולציות תוך כדי הריצה (במקבול הרצות), וכך ניתן לראות את סטטוס הריצה, איזו הרצה עברה ואיזו נכשלה, ובהתאם לכך להחליט אילו הרצות לבחון שוב.
  • ניתן לתזמן את איברי הסימולציה בקלות ובנוחות, ובנוסף הסימולינק יבדוק ויפתור את בעיות התלות בין הבלוקים השונים באופן אוטומטי.

Stateflow

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

Simulink Control Design

ניתן לייצר קוד embedded של בקר PID וכך אפשר לשנות את הפרמטרים של הבקר על גבי המערכת עצמה.

Simscape

  • שיפור הרובוסטיות של המערכת ע"י הכנסת מספר משתנה ל-solver של הסימולציה.
  • ניתן לשמור מצב עבודה של המערכת ולבצע initialized עם הערכים הללו למודל הפיסיקלי.

סביבת Deep Learning

GPU Coder

כלי חדש המאפשר המרה אוטומטית של קוד MATLAB לקוד CUDA אשר יכול לרוץ על מעבדים גרפיים של חברת nVIDIA.

Neural Network Toolbox

  • התממשקות עם TensorFlow - Keras לצורך ייבוא מודלים - היכולת צפויה להתווסף במהלך חודש אוקטובר.
  • תמיכה בארכיטקטורות מתקדמות של רשתות: RNN  , LSTM ,DAG, GoogleNet.
  • Custome layer - ממשק ליצירת סוגים חדשים של שכבות באמצעות שפת  MATLAB
  • Semantic Segmentation - יצירת PSPNet וכן מטריקות בתחום הסגמנטציה הסמנטית, לרבותIoU .
  • Early stopping via validation and training plots - יכולת ולידציה אוטומטית לרשת ועצירת האימון כאשר מטריקות הוולידציה מפסיקות להשתפר. חידוש זה מאפשר להכניס מידע ולידציה לתהליך האימון ולהציג ביצועים ב- training accuracy plot הן על מידע האימון והן על מידע הוולידציה.
  •  Deep Learning Image Preprocessing - בזמן שהתמונות נקראות ומוזנות לתוך האימון – יש כעת אפשרות לבצע פעולות גיאומטריות על מנת להגדיל את מידע האימון.
  • Bayesian Optimization  - מציאת הגדרות אופטימליות לאימון רשתות עמוקות.

Computer Vision System Toolbox

Semantic Segmentation באמצעות Deep Learning  והערכה + ויזואליציה של תוצאות הסגמנטציה.

עיבוד אות ותקשורת

Antenna Toolbox

  • אובייקט pbstack לתכנון ואנליזה של אנטנות PCB ויצירת קבצי Gerber.
  • שילוב אלמנטים של הספקי אנטנה וקליטה על גבי מפה.
LTE System Toolbox

Modeling of physical layer algorithms for 5G channel coding, narrowband Internet of Things (NB-IoT) links, and LTE V2X communication

LTE HDL Toolbox

כלי חדש המספק  Sample-Based blocks בסביבת Simulink עבור פיתוח ומימוש מערכות LTE, ליצירת קוד HDL סינתזבילי, אופטימלי וקריא באמצעות ה HDL-Coder עבור FPGA/ASIC.
ספריית הבלוקים כוללת בין היתר encoders, decoders (לדוג' turbo, CRC ו- convolutional), כמו כן גילוי אותות (PSS  ו- SSS).
מעבר נוח מ- Sample to Frame או Frame to Sample לשילוב של מערכות עיבוד מבוססות Frame הנמצאות ב- LTE System Toolbox.
ניתן למדל מערכת LTE באמצעות Simulink ולעבור בצורה מהירה לחומרה נתמכת של Xilinx/ Altera(Intel).

Signal Processing Toolbox

  • עודכנו אפשרויות נרחבות בSignal Analyzer App- – ייצור סקריפטים בצורה אוטומטית, חישוב persistence spectrum והוצאת איזורי זמן ספיצים מהאפליקציה ישירות לworkspace.
  • נוספה פונקצית pspectrum המאפשרת לחשב ספקטוגרמות עם אופציות נרחבות יותר: reassigned spectrogram, persistence spectrum.
  • יש לשים לב שבגרסה זו הפונקציות psd -spectrum השתנו לperiodogram, pspectrum  או pwelch.

Communication System Toolbox

  • תמיכה בפרוטוקולים חדשים:
  1. נוספה כעת תמיכה בפרוטוקול ZigBee בכדי לתכנן מערכות העובדות בפרוטוקול זה. ניתן לייצר ולפענח סיגנלים מתאימים לסטנדרט. הסיפריה כוללות דוגמאות לשכבת הראשונה והשנייה (PHY ו-MAC)
  2. ניתן כעת גם לייצר ולפענח סיגנלים לפרוטוקל NFC באמצעות MATLAB.
  • תמיכה רחבה יותר בערוצי MIMO – כעת ניתן להגדיר גם polarization עבור אנטנות בערוץ תוך כדי שינויים נוספים במערכת.

Phased Array System Toolbox

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

DSP System Toolbox

  • שיפור בחישוב לאובייקט Spectrum Analyzer (dsp.SpectrumAnalyzer) כעת ניתן להציג את החישוב באמצעות Filter Banks ולהוסיף spectral mask ישירות בתוך הGUI.
  • נוסף אובייקט חדש dsp.ZoomFFT האפשר לחשב רזולציה גבוהה עבור חלק מהתדרים בסט דאטה.
  • בגרסה העדכנית יש שיפור בדרישות חומרה עבור חישובי FFT -IFFT ל-HDL

יצירת קוד אוטומטית

MATLAB Coder

הגדלת התמיכה ביצירת קוד באופן אוטומטי עבור Machine Learning
  • discriminant analysis classifier models
  • linear regression models
  • support vector machine (SVM) regression models
  • ensembles of regression trees

GPU Coder

כלי חדש, כמפורט לעיל (בחלק של סביבת Deep Learning).

Verification and Validation

Simulink requirements

באמצעות כלי זה ניתן לייצר קישור בין פלטפורמות ניהול דרישות שונות (doors, word etc.) ולייצר בדיקות על המערכת.

Simulink Check

כלי שמציג מהם הסטנדרטים בהם קוד הסימולינק שלכם תומך ( iso, matrixes size, etc.), והאם הוא תואם לתקנים אלו.

Simulink Coverage

כלי לבדיקת אחוז הכיסוי של המערכת לפי הבדיקות שבוצעו ובמהלך יצירת הקוד.

מוצרים חדשים ועדכונים ברשיונות קיימים

GPU Coder מוצר חדש המאפשר יצירת קוד CUDA-C לטובת הרצה על מעבדי nVIDIA בצורה עצמאית. מצריך את הכלים הבאים:
MATLAB Coder, Parallel Computing Toolbox

LTE HDL Toolbox מוצר חדש המאפשר מידול ובחינה של טכנולוגיית LTE, והרצתה על גבי רכיבי FPGA ו-ASIC. מצריך את הכלים הבאים:
Simulink, Communications System Toolbox, Fixed-Point Designer

Text Analytics Toolbox – מוצר חדש לניתוח ולימוד של מידע טקסטואלי. מצריך את הכלים הבאים:
Statistics and Machine Learning Toolbox

פיצול של Simulink Verification &Validation הכלי מחולק מהיום ל-3 מוצרים נפרדים, בהתאם ליכולות המרכזיות שהיו קיימות. המטרה היא לאפשר פיתוח מהיר ונוח יותר, מתן הפתרונות המתאימים למפתחים, והיערכות לקראת יכולות עתידיות של כלים למהנדסי מערכת. בעלי הרשיון הקיים יקבלו את כל הרשיונות החדשים ללא עלות:
Simulink Check
Simulink Coverage
Simulink Requirements
שינוי תלויות
המוצר Simulink Design Verifier יצריך את המוצרים Simulink Coverage ו-Simulink Check.


רוצים לדעת עוד?

      מידע נוסף על הגירסה החדשה ניתן למצוא באתר  MathWorks

סקירות בעברית, בצירוף קישורים שימושיים, יופיעו בבלוג זה בעתיד הקרוב.

מידע על מועדי סמינרים וכנסים טכניים חינמיים בתחומים שונים, הכוללים גם סקירות אודות החידושים בגרסאות האחרונות, ניתן למצוא באתר סיסטמטיקס
ניתן יהיה להתרשם מהיכולות העדכניות של הגרסה בסמינרים הקרובים:
  • סמינר למידה עמוקה של תחום ה  Deep Learning- 21.11.17
  • כנס Systems  Autonomous - חדשנות בפיתוח מערכות אוטונומיות חכמות בסביבת MATLAB – 6.12.17
(ההשתתפות באירועים אלה הינה חינם, אך מותנית בהרשמה מראש).