לפני כשבועיים שוחררה גרסת ה-MATLAB השנייה לשנה זו, R2016b. הגרסה החדשה כוללת הרבה
שיפורים ויכולות חדשות ל-MATLAB ולכלים המשלימים אותו, ובפרט - בכל הנוגע
לעבודה עם data ו- big data. להלן סקירה בנושא חידושים הקשורים לעבודה עם big data, שנכתבה על ידי שירן גולן, מהנדסת אפליקציה בחברת סיסטמטיקס, אשר זהו הפוסט הראשון שלה בבלוג זה. סקירה בנושא חידושים הקשורים לעבודה עם data - ניתן לקרוא פה.
לעבודה עם 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 (בהתאמה).
עם 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.
לסרטון הדגמה קצר בעברית - לחצו פה.
לסרטון הדגמה קצר בעברית - לחצו פה.
לסיכום -
התשתית מוכנה, התמיכה רחבה, וכל מה שנשאר זה להתחיל לחשוב
בגדול!
נראה קפיצת מדרגה
השבמחק