‏הצגת רשומות עם תוויות Big Data. הצג את כל הרשומות
‏הצגת רשומות עם תוויות Big Data. הצג את כל הרשומות

יום רביעי, 28 בספטמבר 2016

Think big

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

חידושים הקשורים לעבודה עם big data:
בעולם ה-big data המידע הוא כה רב, עד שקשה לעבוד איתו באמצעות פונקציות MATLAB רגילות, אשר מניחות שכל המידע נמצא בזיכרון. במהלך השנים נוספו לסביבת MATLAB מספר רב של כלים לעבודה עם big data, המספקים פתרונות לגישה למידע, עיבודו, וכן עבודה על פלטפורמות שונות לעיבוד מקבילי, ביניהם נמנים:  memmapfile, datastore, mapreduce, gpu arrays, parallel for-loops. בגרסה החדשה נוסף טיפוס המידע tall, המאפשר לעבוד עם big data שבנוי ממספר רב של שורות ביחס למספר העמודות (ומכאן מקור השם tall).
במקום לכתוב קוד מיוחד שמתחשב בגודל הנתונים (למשל בעבודה עם mapreduce),  tallמאפשר לעבוד
עם
big data באופן פשוט ואינטואיטיבי, עם אותן פונקציות מוכרות ובאותו סינטקס, כאילו היה זה משתנה רגיל הנמצא בזיכרון - MATLAB יודע לעבוד עם חלקים קטנים של המידע הגדול שלנו, ולמעשה מנהל מאחורי הקלעים את החלוקה והעיבוד של הנתונים באופן אופטימלי.

איך זה עובד?
בניגוד לעבודה עם משתנים הנמצאים כולם בזיכרון, הפעולות על tall arrays לא מתבצעות מיד, אלא "נאגרות" עד שהמשתמש מבקש לקבל את התוצאות באמצעות פונקציית gather. כאשר קוראים ל-gather, MATLAB  משלב את כל החישובים ש"נאגרו" ומבצע אופטימיזציה כך שמספר המעברים על המידע יהיה מינימלי, דבר החוסך זמן ריצה יקר.  תהליך זה נקרא deferred evaluation  - המשתנים נמצאים במצב unevaluated, מעין מצב המתנה, עד לקריאה לפונקציית ה-gather. כדי לחסוך בזמן רב יותר, מומלץ לאגור פעולות רבות ככל האפשר ולקרוא ל-gather רק כאשר רוצים לקבל את התוצאות. יובהר ש-gather מחזירה תוצאות לזיכרון, ולכן המשתנים המוחזרים מהפונקציה צריכים להיות בגודל המתאים לזיכרון המחשב או ה-clusterבהקשר הזה יודגש שניתן לעבוד עם tall arrays במחשב האישי, על גבי clusters, ואפילו על גבי Spark* (תהליך העבודה המומלץ הוא "להתחיל בקטן" - לפתח את האלגוריתם במחשב האישי, ולאחר מכן להרחיב את העבודה עם אותו קוד על גבי פלטפורמות אחרות).
שימו לב לכך שניתן לכתוב
tall arrays  שלמים לדיסק או לשמור מצב נוכחי של  tall arrays (יצירת קובץ קטן המתבסס על כך שהמידע המקורי נגיש ונמצא באותו מיקום) באמצעות הפונקציות write ו-save (בהתאמה).

אז איך מתחילים?
כדי ליצור tall arrays יש להגדיר תחילה משתנה datastore, אשר הינו אובייקט המשמש כמצביע על קובץ גדול או רשימה של קבצים הנמצאים בזיכרון או על גבי HDFS, ומאפשר לקרוא את המידע מהזיכרון בחלקים לפי הגדרות המשתמש. לאחר מכן – אפשר להגדיר את ה datastore- להיות tall array באמצעות פונקציית tall. הנה סינטקס לדוגמה (לחצו להגדלה):  
על ה-tall array הנ"ל ניתן כעת לעבוד באמצעות מאות פונקציות מעולם הסטטיסטיקה וה-machine learning התומכות בעבודה עם tall arrays (לרשימה המלאה - לחצו כאן). ולסיום - נשתמש ב-gather.
לסרטון הדגמה קצר בעברית - לחצו פה.

לסיכום -
התשתית מוכנה, התמיכה רחבה, וכל מה שנשאר זה להתחיל לחשוב בגדול!


*למידע על עבודה עם tall arrays על גבי Spark ישירות דרך ה-MATLAB, לחצו כאן. לעבודה עם tall arrays על גבי Spark באמצעות אפליקציה מקומפלת – לחצו פה.

יום חמישי, 2 באפריל 2015

מדהים מה שהנוער של היום מסוגל לעשות אם רק נותנים לו את הכלים !

בסוף החודש שעבר ביקרה בארץ ד"ר לורן שור, אשר הינה האדם הראשון שנשכר לעבודה ע"י מנכ"ל MathWorks (היום כבר יש בחברה מעל 3,000 עובדים). במהלך 28 שנות עבודתה עד כה בחברה, פיתחה ד"ר שור כלים שונים ופונקציות רבות (imread, imwrite, diff, filtfilt, interp1, interp2, imagesc  וכו'), והיא גם מנהלת בלוג   שזוכה לחשיפה "קצת יותר גדולה" מהבלוג שאתם קוראים כרגע, אשר בו פורסם לראשונה על ביקורה הצפוי
ד"ר שור הוזמנה לארץ על מנת לשמש כ-Keynote Speaker בכנס IMVC השנתי, בו דיברה על פתרון בעיות Big Data בתחום הראיה הממוחשבת באמצעותMATLAB . פרט לכך, במהלך ביקורה ד"ר שור אף השתתפה בשני סמינרים בנושא Big Data שקיימה חברת סיסטמטיקס, וכן הרצתה במוסדות אקדמים מובילים.  בסך הכל, במהלך חמשת הימים בהם שהתה בישראל, הרצתה ד"ר שור בפני למעלה מ-1,000 איש  !
ד"ר שור מרצה בפני מאות אנשים בכנס IMVC
כיוון שאחד מתפקידי בחברת סיסטמטיקס הוא לשמש כאחראי הטכני על הפעילות מול המוסדות להשכלה, התלוויתי לד"ר שור במהלך כל ביקורה בישראל, אשר על תכנונו הייתי מופקד. אחד הביקורים המעניינים שהיו לנו היה בתיכון מטרו-ווסט ברעננה, שם נפגשנו עם ארבעה מתלמידי המגמה המדעית-הנדסית, אשר פיתחו יישום חברתי לניהול תזונה אישית - כאשר כל החלק של עיבוד התמונה לשם זיהוי סוגי מאכלים שונים פותח עם תוכנת MATLAB. כן, הם החלו להשתמש ב-MATLAB בכיתה י"א  !
פרויקט ה-CalCam, לחצו להגדלה
ד"ר שור ואני שמחנו להצטלם יחד עם ארבעת השמיניסטים המוכשרים, אחראי המגמה הדר טל ומנהל בית הספר אמנון בר נתן, שאף העניק לנו שי צנוע - דגל בית הספר שבמרכז התמונה - לאות תודה על הסיוע לפרוייקט.
מנהל בית הספר (מימין), ד"ר שור (שלישית מימין), אחראי המגמה (שני משמאל), אני (משמאל) ומפתחי פרויקט ה-CalCam

אם זו לא דוגמה ל-MATLAB with Fun, כשם הבלוג הזה, אז אני לא יודע מה כן :)



יום חמישי, 29 בינואר 2015

חוויות מבוסטון

בשבוע שעבר השתתפתי בכנס השנתי של עובדי חברת MathWorks, ואני חייב לשתף אתכם בהתרגשות שאחזה בי כאשר שמעתי על תוכניות החברה לשנים הקרובות (לצערי בינתיים אני יכול לשתף אתכם רק בהתרגשות, ולא בתוכניות...).
פרט למושבים שבהם השתתפו גם מנהלי הפיתוח של הכלים השונים שדיברו על הכיוונים העתידיים, היו בכנס הרבה סדנאות מקצועיות והדגמות טכניות מגניבות.
אחת ההדגמות שמשכה את תשומת לבי היתה מימוש של גלאי אנשים מבוסס HOG על גבי פלטפורמת Zynq של חברת Xilinx. האלגוריתם מומש באמצעות תוכנת Simulink, והומר אוטומטית לקוד HDL באמצעות כלי של חברת MathWorks הנקרא HDL Coder, אשר מסוגל לייצר בצורה אוטומטית קוד VHDL ו-Verilog מתוך קוד MATLAB ומודלי Simulink. הנה תמונה מייצגת בה ניתן לראות את פלטפורמת ה-Zynq (בצד שמאל) ואת הגילוי המוצלח של האנשים שמבוצע על ידי האלגוריתם (לחצו על התמונה להגדלה):


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


מעבר לכך, היה לי את הכבוד לשוחח ארוכות עם ד"ר לורן שור, אשר הינה האדם הראשון שנשכר לעבודה ע"י מנכ"ל MathWorks (היום כבר יש בחברה מעל 3,000 עובדים). במהלך 28 שנות עבודתה עד כה בחברה, פיתחה ד"ר שור כלים שונים ופונקציות רבות (imread, imwrite, diff, filtfilt, interp1, interp2, imagesc וכו'), והיא גם מנהלת בלוג שזוכה לחשיפה "קצת יותר גדולה" מהבלוג שאתם קוראים כרגע :)
ד"ר שור צפויה להגיע לארץ בחודש מרץ, ולהיות Keynote Speaker בכנס IMVC השנתי הקרוב, בו תדבר על פתרון בעיות Big Data בתחום הראיה הממוחשבת באמצעות MATLAB. פרט לכך, במהלך ביקורה צפויה ד"ר שור להשתתף בשני סמינרים בנושא Big Data שתקיים חברת סיסטמטיקס, וכן להרצות במוסדות אקדמים מובילים. היו בטוחים שתקראו עוד על הביקור שלה בפוסט הזה.

יום שני, 6 באוקטובר 2014

שלומית בונה גרסה | R2014b


בתחילת החודש, קצת לפני חג הסוכות, שוחררה גרסת R2014b של כלי MathWorks, הכוללת שינויים משמעותיים ב-MATLAB, Simulink ובכל יתר מוצרי MathWorks. להלן החידושים העיקריים:

MATLAB
שדרוג משמעותי לגרפיקה – מפת הצבעים ברירת המחדל מאפשרת תצוגה ברורה יותר, כותרות הגרפים מודגשות וגדולות יותר, Tick Labels ניתנים לסיבוב והם יכולים להכיל ביטויים מתמטיים, ועוד  לחצו לסרטון
ניתוח נתונים בעזרת פרדיגמת התכנות MapReduce המאפשרת התאמה ל-Hadoop Cluster עבור big data
טיפוסי מידע חדשים עבור עבודה עם תאריכים וזמנים (datetime, duration, calendarDuration) - לחצו לסרטון
שילוב עם מערכות ניהול הגרסאות Git ו-Subversion מתוך חלון ה-Current Folder – לחצו לסרטון
שליטה על תיקיית העבודה שנפתחת בעת העלאת התוכנה (אפשר שהיא תהיה התיקייה שהיתה בשימוש כאשר התוכנה נסגרה)
הצעת תיקונים נוספים ב-Command Window לשגיאות סינטקס (למשל, למקרים של סוגריים שלא נסגרו)
אפשרות לשימוש בפונקציות ואובייקטי Python מתוך MATLAB ומנוע ממשק לקריאה ל-MATLAB מתוך Python
אפשרות לייצר ממשקי משתמש גרפיים (GUIs) בעלי לשוניות, בעזרת הפקודות uitab ו-uitabgroup
טעינה אינקרמנטלית של מידע מקבצי טקסט גדולים ואוספים של קבצים, באמצעות פקודת datastore
שיפורים ב-VideoReader הכוללים קריאה מהירה יותר ויכולת להתחיל בקריאה החל מרגע זמן מסויים בוידאו
אפשרויות חדשות עבור שירותי WEB שונים - תמיכה בפרוטוקול SOAP (פונקצית matlab.wsdl.createWSDLClient) ויבוא מידע מתוך שרתי WEB מרוחקים בפורמטי JSON, CSV או תמונות (פקודת webread)
פקודת tcpclient לצורך קריאת ושליחת מידע מ/אל אל שרתים וציוד רשת בעזרת sockets

Image Processing Toolbox
אפליקציות לביצוע סגמנטציה או region analysis
תוספת של 16 פונקציות הניתנות להמרה אוטומטית לקוד C על ידי ה-MATLAB Coder, ביניהן: imadjust, imclearborder ו-medfilt2
סגמנטציה בגישת Fast Marching

Simulink
האצת תהליך הבניה (build) של מודלים באמצעות סימני עריכה חכמים (Smart Editing Cues) – ניתן להוסיף בלוקים באמצעות כתיבת שמותיהם ולערוך את השדה העיקרי שלהם מבלי להיכנס לממשק המשתמש, ניתן לסמן מספר בלוקים ולהיעזר בתפריט המאפשר יצירת תת מערכת מהם או התעלמות מהם, וניתן להכניס בקלות למודל בלוק שיש לו צימוד טבעי עם בלוק אחר (למשל – goto עם from לחצו לסרטון
שמירה של תצוגות גרפיות של המודל לצורך טעינה מאוחר יותר (Viewmarks – מעין סימניות) לחצו לסרטון
התחלה מחודשת מהירה של סימולציות לצורך האצת סימולציות עוקבות (Fast Restart) – שימושי כאשר רוצים לכוונן פרמטרים במודלים שמשך עדכונם (update diagram) הינו ארוך לחצו לסרטון
בניית מודלים באמצעות דפוסי-תכנון המשמשים כנקודת התחלה לפתרון בעיות שכיחות (Model Templatesלחצו לסרטון
יכולת לקשר בין Annotation לבלוק לחצו לסרטון 

Computer Vision System Toolbox
אפליקציה לכיול צילומי סטריאו
קלאס בשם imageset לאוספים גדולים של קבצי תמונה
תהליך עבודה לסיווג קטגוריאלי בגישת bag-of-visual-words
חבילת תמיכה אשר מקלה על שילוב קוד OpenCV ב-MATLAB )פונקצית visionSupportPackages)

Phased Array System Toolbox
ספריית בלוקים לשימוש בסביבת Simulink (לא עוד רק פונקציות ו-System Objects)

Fixed-Point Designer
אפליקציית המרה להמרה אוטומטית של קוד MATLAB מ-Floating Point ל-Fixed Point

HDL Coder
אפשרות לשלב Custom HDL code בתוך System Object הנכלל בפונקצית MATLAB ממנה יופק בהמשך בצורה אוטומטית קוד HDL – לחצו לתיעוד
תמיכה ב-Xilinx Vivado

HDL Verifier
יצירת SystemVerilog DPI-C מתוך פונקציות MATLAB (מצריך רישיון MATLAB Coder)
תמיכה ב-Xilinx Vivado לסימולציות FPGA-in-the-Loop

MATLAB Coder
אפשרות ליצירת קוד C מתוך פונקציות ו-System Objects נוספות ב-MATLAB, Image Processing Toolbox, Computer Vision System Toolbox, DSP System Toolbox ו- Communication System Toolbox וכן מתוך ode23 ו-ode45

Parallel Computing Toolbox
הגדלת מספר הפונקציות הניתנות להאצה בעזרת ה-GPU, למשל: accumarray, histc, cummax ו-cummin
העלאת דרישת המינימום של compute capability לצורך האצת ביצועים בעזרת GPU מ-1.3 ל-2.0