מה חדש בתחום ה-Deep Learning בסביבת MATLAB בגרסת R2021a?

גרסת R2021a של כלי MathWorks, אשר שוחררה בחודש שעבר, כוללת 1,451 יכולות חדשות בכלים הקיימים בסביבות MATLAB ו-Simulink, תיקוני באגים ואף שלושה כלים חדשים (לסקירת של יכולות הגרסה – לחצו פה). מבחינת תחום ה-Deep Learning – כמו בגרסה הקודמת (לחצו לסקירה) – גם בגרסה הראשונה לשנת 2021 התחום זכה להשקעה רבה.

פוסט זה מורכב משלושה חלקים – בחלק הראשון תוכלו לקרוא על החידושים בתחום הלמידה העמוקה בגרסת R2021a. בחלק השני תמצאו ריכוז של היתרונות העיקריים של MATLAB בעולם זה. ובחלק השלישי לרשותכם הפניות לסמינרים מקצועיים מקוונים, קורסי Hands-On חינמיים, סיפורי משתמשים ישראלים ודרכים לקבלת מידע נוסף.

אזמה חדש בתחום ה-Deep Learning בגרסת R2021a?

להלן החידושים המרכזיים:

  1. TensorFlow Importer – הכנסה ישירה של מודלים מסביבת TensorFlow (גרסה 2) לסביבת MATLAB, בנוסף לתמיכה שהיתה (וממשיכה להיות) קיימת בפורמט ONNX (ואף השתדרגה בגרסה החדשה, עם תמיכה בשכבות נוספות ובייצוא של אובייקטי layerGraph ו-dlnetwork). כך ניתן ליהנות גם מההיצע של מודלים שפותחו בסביבות למידה עמוקה אחרות וגם מהיתרונות של ביצוע למידה עמוקה בסביבת MATLAB, לרבות:
    * המרה אוטומטית של רשת לקוד C++/C/CUDA/HDL יעיל (לסרטון הדגמה קצר של המרת רשת לקוד CUDA – לחצו פה),
    * שילוב במודל מערכתי גדול בעזרת סביבת Simulink
    * יכולות ויזואליזציה וניתוח.
    לפוסט הסוקר הכנסה של רשת מ-TensorFlow אל MATLAB וניצול של היתרונות הנ"ל של ביצוע למידה עמוקה בסביבת MATLAB  – לחצו פה.

    להורדה חינמית של התוסף החדש ומידע נוסף – לחצו פה (להורדה חינמית של חבילת התמיכה ב-ONNX ומידע נוסף על כך – לחצו פה).

    דרכים שונות להעברת רשתות בין סביבות למידה עמוקה שונות לבין MATLAB (ניתן ללחוץ על התמונה להגדלה)

  2. שיפורים לממשקי ה-Labeling – בסביבת MATLAB קיים אוסף עשיר של ממשקי תיוג מעולים:
    * Image Labeler – ממשק תיוג תמונות – למידע נוסף על ממשק זה – לחצו פה.
    * Video Labeler – ממשק תיוג קבצי וידאו ורצפי תמונות – למידע נוסף על ממשק זה – לחצו פה.
    * Ground Truth Labeler – ממשק תיוג ליישומי נהיגה אוטונומית – למידע נוסף על ממשק זה – לחצו פה.
    * Lidar Labeler – ממשק תיוג ענני נקודות Lidar – למידע נוסף על ממשק זה – לחצו פה.
    * Signal Labeler – ממשק תיוג אותות – למידע נוסף על ממשק זה – לחצו פה.
    * Audio Labeler – ממשק תיוג קבצי אודיו – למידע נוסף על ממשק זה – לחצו פה.
    למידע על בחירת ממשק התיוג המתאים ליישום שלכם, כולל השוואה בין הממשקים השונים – לחצו פה.
    בגרסה החדשה הוכנסו לממשקי התיוג הנ"ל מספר שיפורים, וביניהם:
    בשלושת הממשקים הראשונים נוספה תמיכה ב-Instance Labeling באמצעות פוליגונים, לצורך ביצוע Instance Segmentation עם Mask R-CNN. הנ"ל משלים את התמיכה שכבר היתה קיימת בסביבת MATLAB עבור אימון Mask R-CNN (לדוגמה חדשה בנושא – לחצו פה). בנוסף, בשלושת הממשקים הללו נוספה גם אפשרות לשימוש ב-Superpixels כדי להאיץ תהליכי תיוג ברמת הפיקסל. שימוש בשיטת האוטומציה הזו, שעיקרה הוא תיוג משותף של איזורים בתמונה שערכי הפיסקלים בהם דומים, מקצר את הזמן הנדרש לתיוג עבור סגמנטציה סמנטית. למידע נוסף – לחצו פה.
    ב-Image Labeler נוספה תמיכה בתיוג תמונות ענק, כולל כאלה שלא נכנסות בזיכרון, וזאת על ידי טעינתן אל הממשק בתור Blocked Images. הנ"ל שימושי במיוחד עבור תמונות רפואיות ברזולוציה גבוהה וכן צילומי אוויר. יש אפשרות לבצע אוטומציה לתהליך התיוג. בנוסף, יש כעת ב-Labeler חלון Overview שמאפשר להבין על איזה איזור בתמונה אנו מתבוננים כעת ואילו איזורים עוד לא תייגנו (דבר שהוא שימושי גם עבור תמונות שאינן תמונות ענק). למידע נוסף – לחצו פה.
    ב-Ground Truth Labeler אפשר כעת לבצע אוטומציה המשלבת מספר אותות, כלומר ניתן לכתוב אלגוריתמי אוטומציה הניגשים למספר אותות, וכך למשל אם יש לנו מידע LIDAR ומידע וידאו מכוילים, אלגוריתם שמזהה אוביקט עניין במידע ה-LIDAR יביא גם לסימון האוביקט במידע הוידאו. הדבר מקל על תהליך התיוג, כיוון שהוא מאפשר כתיבת אלגוריתם אוטומציה ל-Domain אחד, והעברה של הגילויים אל Domain אחר. לדוגמה – לחצו פה.
    ב-Lidar Labeler נוספה אפשרות להשתמש בפונקציית קריאה מותאמת אישית על מנת לטעון כל ענן נקודות שהוא לתוך הממשק (מידע נוסף), וכן נוספה אפשרות להגדיר איזור עניין בתוך ענן הנקודות ולתייג אובייקטים בתוכו (מידע נוסף). הפיצ'ר האחרון שימושי במיוחד כאשר מדובר בענן נקודות גדול ומעוניינים להתמקד באיזור ספציפי שלו. פרט לכך, יש כעת דוגמה לאוטומציה של תהליך תיוג של מידע LiDAR בעזרת אלגוריתם מותאם אישית המשלב שימוש ברשת גילוי האוביקטים PointPillars (מידע נוסף).
    ב-Signal Labeler נוסף Dashboard שמאפשר לעקוב אחר התקדמות משימת התיוג ומספק מידע לגבי הסטטיסטיקה והפילוג של ה-Label-ים כך שניתן יהיה להשתמש ב-Data בצורה אופטימלית ללמידת מכונה ולמידה עמוקה. הניתוחים שהפיצ'ר החדש מספק מאפשרים לוודא שהתיוג הגיוני (למשל, שיש אותו מספר של איזורי P, QRS ו-T בסיגנל ECG, שמשכי האיזורים הללו סבירים וכו'), וכן לקבל תובנות בנוגע לחוסר איזון ב-Data ועוד. למידע נוסף – לחצו פה. בנוסף, יש כעת בממשק תמיכה באותות מרוכבים (שימושי לעוסקים בתחום התקשורת והמכ"ם, לחצו פה לדוגמה בנושא תיוג אותות מכ"ם) ותמיכה באותות אודיו. פרט לכך, ניתן כעת לסמן Labels (בציר הזמן) ישירות בעזרת הספקטרוגרמה.

    חלק מהשיפורים בכמה מממשקי התיוג (ניתן ללחוץ על התמונה להגדלה): Instance Labeling (למעלה משמאל), תמיכה בתיוג תמונות ענק כולל חלון Overview (למעלה מימין), שימוש ב-Superpixels כדי להאיץ תהליכי תיוג ברמת הפיקסל (למטה מימין) ו-Dashboard שמאפשר לעקוב אחר התקמות משימת תיוג אותות ומספק מידע לגבי הסטטיסטיקה והפילוג של ה-Label-ים (למטה משמאל)

  3. יכולות חדשות לממשק ניהול הניסויים – כזכור, לפני כשנה נוסף ה-Experiment Manager App, ממשק שמאפשר לתכנן תרחישי אימון של רשתות למידה עמוקה, להריץ אותם, לנתח את התוצאות ולהשוות בין אימונים שונים, והכל מבלי לכתוב הרבה שורות קוד. בעזרת הכלי אפשר לסרוק תחום ערכים של היפרפרמטר, לבחון את ההשפעה של שימוש ב-Data Sets שונים, או לבדוק מה מניבות ארכיטקטורות שונות עבור אותו מידע אימון. הממשק כולל כלי ויזואליזציה שימושיים כמו Training Plots, מסננים, מטריצות Confusion ואפשרות להגדיר מטריקה מותאמת אישית לצורך הערכת הביצועים.
    בגרסה החדשה מנהל הניסויים תומך באימונים מותאמים אישית, דבר שמאפשר שימוש בתוכניות מותאמות אישית עבור שינוי קצב הלמידה, וכן שימוש ב-Framework המורחב של ה-Deep Learning Toolbox (זה שבעזרתו ניתן לאמן רשתות סיאמיות ו-GAN-ים). לדוגמה לשימוש ב-Experiment Manager לאימון GAN – לחצו פה.
    הודות לחידוש המוזכר לעיל, ניתן כעת להשתמש בממשק גם עבור ניהול ניסויים מתחומים נוספים, ולא רק מתחום ה-Deep Learning. למשל, ביצוע של ניסויי Reinforcement Learning (סריקת היפרפרמטרים, שימוש בסוכני Reinforcement Learning שונים, והשוואת פונקציות תגמול וסביבות שונות).

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

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

  4. שדרוג ליכולות ההמרה של רשתות בצורה אוטומטית לקוד C++/C/CUDA/HDL
    * יצירת קוד HDL
     – כזכור, מהגרסה הקודמת ניתן לבנות אבטיפוס של רשת למידה עמוקה ולהוריד אותה בקלות ל-FPGA או SoC בעזרת כלי ה-Deep Learning HDL Toolbox. כדי לטרגט רכיבים דלי הספק וזיכרון ממשיך לעמוד לרשות המשתמשים ממשק הקוונטיזציה Deep Network Quantizer, שמסייע לוודא שאין חריגה מדרישות הדיוק הרצויות. לסרטון קצר (5 דקות) בו מודגם תהליך הההורדה ל-FPGA של רשת לאיתור פגמים ברכיבים, לרבות ניתוח הביצועים שלה על החומרה וביצוע קוונטיזציה ל-int8 – לחצו פה.
    לתמיכה ביצירת קוד מתוך רשתות טוריות נוספה בגרסה החדשה תמיכה ביצירת קוד מתוך רשתות DAG. בנוסף, הורחבה רשימת השכבות הנתמכות. לרשימה העדכנית של הרשתות והשכבות הנתמכות, כמו גם של חומרות Xilinx ואינטל הנתמכות – לחצו פה.
    * יצירת קוד CUDA – כלי ה-GPU Coder מאפשר להמיר בצורה אוטומטית קוד MATLAB ומודלי Simulink לקוד CUDA מהיר וחסכוני בזיכרון לצורך מימוש על מערכות Embedded.

    בגרסה החדשה נוספו עוד שכבות לרשימת השכבות אשר נתמכות על ידי כלי ההמרה הנ"ל, דבר שמאפשר להמיר בקלות עוד רשתות עמוקות מקוד MATLAB לקוד הפועל על כרטיסי GPU של Nvidia. לרשימה המלאה של רשתות מאומנות, שכבות וקלאסים אשר ניתן להמיר אותם לקוד CUDA בצורה אוטומטית – לחצו פה.
    פרט לכך,
    נוספה תמיכה בהמרה לקוד CUDA של פונקציות נוספות מהכלים Wavelet Toolbox ,Computer Vision Toolbox ו-MATLAB. הנ"ל מאפשר לייצר קוד CUDA לאלגוריתם המלא, הכולל עוד מרכיבים מעבר לחלק של ה-Deep Learning. לרשימה המלאה של הפונקציות שנתמכות – לחצו פה.
    לסיום, יצויין כי נוספה אפשרות לשליטה על המספר המרבי של בלוקים עבור Kernel, דבר שאמור להביא לשיפור ביצועים.
    (חידושים נוספים מוזכרים בסעיפים 5, 10 ו-17 בפוסט זה).
    * יצירת קוד ++C/C – כלי ה-MATLAB Coder מאפשר להמיר קוד MATLAB לקוד ++C/C יעיל, ובפרט מאפשר להמיר רשתות למידה עמוקה לקוד עבור מעבדים של אינטל ופלטפורמות ARM.
    החל מהגרסה החדשה ניתן לייצר קוד גם עבור רשתות LSTM קונבולוציוניות (רשתות המכילות שכבות קונבולוציה ו-LSTM). לדוגמה העושה שימוש ב-MKL-DNN של אינטל – לחצו פה (ניתן להשתמש גם בספריית ARM Compute).
    כמו כן, נוספו שכבות נוספות לרשימת השכבות אשר נתמכות, דבר שמאפשר להמיר בקלות עוד רשתות עמוקות מקוד MATLAB לקוד ++C. לרשימה המלאה של רשתות מאומנות, שכבות וקלאסים אשר נתמכים – לחצו פה.

    בנוסף, יש כעת תמיכה ביצירת קוד ++C/C גנרי (כלומר – שאינו תלוי בספריות של צד שלישי) עבור מגוון שכבות, כולל שכבות שהוגדרו אישית על ידי המשתמש. ניתן לראות את רשימת השכבות הללו ברשימה שהובאה בקישור האחרון, בטבלה השניה, תחת העמודה ++Generic C/C. למידע נוסף – לחצו פה.
    פרט לכך, נוספה תמיכה בהמרה לקוד ++C/C של פונקציות נוספות ואובייקטים נוספים מכלים כמו Wavelet Toolbox ,Signal Processing Toolbox ,Image Processing Toolbox ,Computer Vision Toolbox ,MATLAB ואחרים. הנ"ל מאפשר לייצר קוד ++C/C לאלגוריתם המלא, הכולל עוד מרכיבים מעבר לחלק של ה-Deep Learning. לרשימה המלאה של הפונקציות שנתמכות – לחצו פה.
    (חידוש נוסף מוזכר בסעיף הבא).

    מגוון האפשרויות להורדת רשת למידה עמוקה לחומרת Embedded (ניתן ללחוץ על התמונה להגדלה)

  5. יכולות למידה עמוקה חדשות בסביבת Simulink  – כזכור, בגרסה הקודמת התווספה לסביבת התכנון מבוסס-מודל Simulink ספריית בלוקים בשם Deep Neural Networks, שהכילה בלוקים של Simulink לביצוע סיווג של תמונה באמצעות רשת מאומנת ולביצוע חיזוי של תגובה (אקטיבציות) של רשת מאומנת. בגרסה החדשה נוספו שני בלוקים חדשים, לביצוע סיווג וחיזוי של תגובה בעזרת RNN מאומנת. כל הנ"ל מאפשר שילוב קל של רכיב למידה עמוקה בתוך מערכת הממודלת ב-Simulink, דבר שמאפשר ביצוע סימולציה ובדיקות של רכיב זה ברמת המערכת המלאה בסביבה זו, שיכולה לכלול רכיבים ממגוון תחומים (מערכות בקרה, מידול פיזיקלי של מערכות מכאניות/חשמליות וכו').
    כמו הבלוקים שהתווספו בגרסה הקודמת, גם הבלוקים החדשים נתמכים להמרה אוטומטית לקוד C++/CUDA. יחד עם התמיכה שכבר היתה קיימת בהמרה לקוד CUDA של מודלי Simulink המכילים בלוק MATLAB Function (שיכול להכיל רשת גילוי אובייקטים, LSTM וגם קוד MATLAB שאינו קשור לתחום הלמידה העמוקה), מתאפשרת האצה של סימולציות Simulink תוך שימוש ב-GPU, יצירת exe לצורך בניה מהירה של אבטיפוס להרצה על GPU, והורדה של מודל Simulink ל-Embedded GPU כמו Jetson ו-DRIVE. לסרטון קצר (2 דקות) המדגים יצירה של קוד CUDA מתוך מודל Simulink המכיל רכיב של למידה עמוקה – לחצו פה.

    ספריית Deep Neural Networks בסביבת Simulink. הבלוקים החדשים לביצוע סיווג וחיזוי של תגובה בעזרת RNN מאומנת מוקפים בירוק (ניתן ללחוץ על התמונה להגדלה)

  6. תוספת של עשרות דוגמאות ממגוון תחומי יישום – יחד עם הדוגמאות החדשות, קיימות כעת ב-Help מעל 250 דוגמאות מתועדות היטב לביצוע למידה עמוקה בסביבות MATLAB ו-Simulink עבור מגוון תחומי יישום – עיבוד תמונה וראיה ממוחשבת, עיבוד Lidar, עיבוד אודיו ואותות אחרים, ניתוח טקסט, בקרה (Reinforcement Learning), נהיגה אוטונומית, תקשורת, הנדסת מערכת (Simulink) ועוד. לעמוד הבית של תחומי היישום השונים, ממנו ניתן להגיע לפקודות חשובות, Apps רלוונטים ודוגמאות שימושיות עבור תחום היישום שלכם – לחצו פה. ולדוגמאות רשמיות שממשיכות להתווסף כל הזמן – היכנסו ל-Repositories שלנו לתחום הלמידה העמוקה ב-GitHub (לחצו פה). בכוונת MathWorks להגביר את תדירות השחרור של מודלים מאומנים דרך GitHub, דבר שיאפשר לכל אחד ואחת שימוש במודלים העדכניים ביותר מהמחקר – עבור Transfer Learning ,Inference, תהליכי תיוג אוטומטים ויצירת קוד.

    אחת מהדוגמאות החדשות – שימוש בלמידה עמוקה לצורך סיווג מידע היפרספקטרלי ל-16 קלאסים של קרקע וצמחיה (לחצו לדוגמה). למידע נוסף על יכולות העיבוד של תמונות היפרספקטרליות בסביבת MATLAB – לחצו פה. להורדת חבילת תמיכה (חינמית) בתחום – לחצו פה.

  7. למידה שיתופית (Federated Learning) – מהגרסה החדשה ניתן לאמן רשת על מידע מבוזר, מבלי להעביר אותו למיקום מרכזי, אפילו אם הפילוג של מקורות מידע מסויימים לא תואם את הפילוג הכללי של המידע (מכונה גם "מידע שאינו IID"). הטכניקה מאמנת מספר מודלים במקביל, כל אחד בהתאם למקור מידע אחר, והמודל הראשי לומד מכל המודלים המקומיים הללו באמצעות שקלול מחזורי של הפרמטרים שמתעדכנים בהם. הנ"ל שימושי במקרים של כמויות מידע גדולות או בעיות פרטיות שעלולות לצוץ במקרה של העתקת מידע האימון. לדוגמה – לחצו פה. לסרטון בנושא למידה שיתופית – לחצו פה.
  8. פתרון משוואות דיפרנציאליות  – ניתן לבצע אימון של Neural ODEs כך שילמדו את הדינמיקה של מערכת פיזיקלית. Neural ODEs הן פעולות מבוססות למידה עמוקה המוגדרות על ידי פתרון של משוואה דיפרנציאלית רגילה. ניתן להשתמש בהן כדי למדל בעיות פיזיקליות מורכבות, וזאת ללא יותר מידי חישובים בהשוואה לאלה שכרוכים במציאת פתרונות נומריים, אך תוך שמירה על הפיצ'רים העיקריים. לדוגמה – לחצו פה.
    בנוסף, ניתן כעת לעשות שימוש בנגזרות מסדר גבוה על מנת לפתור משוואות דיפרנציאליות חלקיות, אשר כאמור ניתנות למידול באמצעות למידה עמוקה. הנ"ל יכול לשמש לפתרון בעיות בתחומים שונים, כמו מכניקת זורמים, אקוסטיקה לא ליניארית, דינמיקת גזים, זרימת תנועה ועוד…על מנת לאפשר חישוב של נגזרות מסדר גבוה בעת אימון באמצעות לולאת אימון מותאמת אישית, יש להגדיר בתור True את האופציה EnableHigherDerivatives בפונקציית dlgradient, אשר מבצעת את חישוב הגרדיאנטים באמצעות Automatic Differentiation (אוסף של טכניקות להערכה נומרית של הגרדיאנטים המשמש כדי לאמן רשתות Deep Learning מורכבות ללא צורך בחישוב ידני של הנגזרות). הנ"ל מאפשר לפתח מודלים כמו Wasserstein GANs אשר דורשים חישוב של נגזרות מסדר שני (לחצו לדוגמה).

    פתרון משוואת ברגר באמצעות למידה עמוקה – ניתן לראות כמה קרוב הפתרון של המד"ח הזו לערכים האמיתיים בזמנים השונים (ניתן ללחוץ על התמונה להגדלה). לדוגמה המלאה – לחצו פה.

  9. GAN APIs – ממשקי תכנות יישומים לשימוש ב-GAN-ים עבור מגוון יישומים Supervised ו-Unsupervised (בנוסף לתמיכה ביישומי Semi-Supervised שנוספה בגרסה הקודמת), הדבר מאפשר גם לאנשים שאינם מומחים בתחום לנצל שיטות כמו Pix2pixHD ,UNIT ,CycleGAN ו-PatchGAN, ואפילו לייצר קוד Embedded עבור הרשתות שהם יצרו ושינו. UNIT-GAN יכולה לשמש, למשל, להפיכת תמונות שצולמו ביום לתמונות שנראות כאילו צולמו בשעת בין ערביים (לחצו לדוגמה), או לייצור תמונות CT ברזולוציה גבוהה מתוך תמונות ברזולוציה נמוכה. Pix2Pix יכולה לייצר תמונות על סמך מפות סגמנטציה (לחצו לדוגמה).

    מימין – תמונה מלאכותית שנוצרה על בסיס מפת הסגמנטציה שבצד שמאל, בעזרת Pix2pixHD

  10. גילוי אוביקטים בעזרת YOLOv3 ,YOLOv4 ו-EfficientDet-D0 – בהמשך לדוגמאות שסופקו בגרסאות הקודמות, שוחררה חבילת תמיכה (חינמית) עבור גילוי אובייקטים בתמונות בעזרת YOLOv3 (אשר בהשוואה ל-YOLOv2 – מאפשר גילוי מדויק יותר, גם של אובייקטים קטנים במיוחד). החבילה מכילה את המודלים המאומנים DarkNet-53 ו-YOLOv3-Tiny, אשר אומנו על מאגר המידע COCO, וכן API שמאפשר לכל אחד ואחת לבצע בקלות התאמה אישית לצרכי גילוי אוביקטים ו-Transfer Learning עם המידע שמעניין אותו/אותה. לפקודה הרלוונטית ודוגמאות לשימוש בה – לחצו פה. להורדת חבילת התמיכה – לחצו פה. בנוסף, ניתן למצוא ב-GitHub את גלאי האוביקטים החד-שלבי YOLOv4 (קישור), אשר אפשר להשתמש בו כמו שהוא וכן להשתמש בו לצורך Transfer Learning או אוטומציה של תהליכי תיוג, והוא אף נתמך להמרה אוטומטית לקוד CUDA. גם גלאי האובייקטים החד- שלבי EfficientDet-D0 (קישור), אשר אומן על למעלה מ-80 סוגי אובייקטים (לקוחים ממאגר COCO 2017), נמצא כעת ב-GitHub, ואפשר להשתמש בו כפי שהוא וכן להשתמש בו לצורך Transfer Learning ולהמירו אוטומטית לקוד CUDA.
  11. יצירה מהירה של רשת המכילה מבנה שחוזר על עצמו – ניתן להשתמש בפונקציה blockedNetwork כדי לייצר בזריזות רשת בעלת בלוק של שכבות שחוזר על עצמו (למשל, מודול של מקודד שמבצע סדרה של פעולות downsampling או מודול של מפענח שמבצע סדרה של פעולות upsampling).
  12. טעינה מהירה של רשתות מאומנות ב-MATLAB Online – שירות MATLAB Online, המאפשר שימוש ב-MATLAB וכלים משלימים נוספים דרך הדפדפן, מבלי להתקין שום דבר ומבלי לשלם כל תשלום נוסף, טוען כעת רשתות מאומנות
    דוגמת  alexnet ,googlenet ,vgg16 ,resnet50 ,xception ,inceptionv3 ,squeezenet ,nasnetlarge עד פי 10 יותר מהר מאשר בעבר. למידע נוסף על MATLAB Online – לחצו פה.
  13. יכולות ויזואליזציה חדשות – ליכולות הויזואליזציה העשירות של סביבת MATLB בתחום הלמידה העמוקה (מפורטות בחלק השני של פוסט זה) נוספה בגרסה החדשה פונקציית gradCAM שמאפשרת לקבל הסברים לגבי חיזויים של רשת באמצעות טכניקת Gradient-Weighted Class Activation Mapping. כך ניתן לגלות בקלות אילו איזורים בתמונה 2D/3D השפיעו יותר מאחרים על התוצאה הסופית של בעיית סיווג, רגרסיה וסגמנטציה סמנטית (לדוגמה לשימוש בפקודה עבור בעיית סיווג – לחצו פה; ועבור בעיית סגמנטציה סמנטית – לחצו פה). פרט לכך, טכניקת LIME שנוספה בגרסה הקודמת מאפשרת כעת שימוש במפות סגמנטציה מותאמות אישית (שימושי במשימות בהן מעורבות תמונות לא טבעיות, כמו ספקטרוגרמות או תוכניות אדריכליות). לדוגמה – לחצו פה.

    שימוש בטכניקת Grad-CAM כדי למצוא את מידת ההשפעה של החלקים השונים בתמונה על סיווג התמונה לקלאס "גולדן רטריבר" על ידי googlenet

  14. תמיכה מלאה של כלי עיבוד האות (Signal Processing Toolbox ,Audio Toolbox ,Wavelet Toolbox) בכל תהליך הפיתוח של אלגוריתמי בינה מלאכותית בגרסה החדשה הושלם השיפור של תהליך העבודה מתיוג אותות אל אימון, בדגש על ניהול קל של ה-Data:
    * פונקצית folders2Labels אשר מייצרת רשימת Label-ים מתאימה עבור קבצי מידע, לפי שמות התיקיות שבהן הקבצים נמצאים,
    * פיצול וספירה של Label-ים עם הפונקציות splitlabels ו-countlabels,
    * מתודת createDatastores באוביקטי labeledSignalSet ליצירת signalDatastore ו-labelDatastore הניתנים לשילוב ושאפשר להפעיל עליהם טרנספורמציות,
    * פקודת writeall לכתיבה מהירה של מידע מ-signalDatastores לקבצים.
    הנ"ל מתווסף למפורט למעלה בנוגע ליכולות חדשות בהקשר של תיוג ולמפורט למטה בנוגע להפעלה של מודלים ויצירת קוד.
  15. Differentiable Signal Processing – כל יישום בתחום עיבוד האות שמשתמש בבינה מלאכותית מכיל שלב של עיבוד מקדים של המידע ו/או חילוץ פיצ'רים, לפני הגשה של המידע לרשת. השלב הזה מכיל מגוון פרמטרים והגדרות שיש לבחור להם ערכים שיאפשרו ביצוע של הדברים הרצויים, על מנת שהרשת תתפקד היטב. כדי להימנע מטעויות בעת השיתוף של המודלים, מומלץ להעביר את השלב הזה לתוך הרשת, וכך לקבל מודל עצמאי שמכיל את כל הדרוש. בגרסה החדשה נוספה פונקציה ראשונה שתומכת בגישה הזו, dlstft, אשר מבצעת Differentiable Short-Time Fourier Transform. לדוגמה העושה שימוש בפונקציה זו – לחצו פה.
  16. מודלי בינה מלאכותית נוספים לניתוח אותות אודיו, דיבור ואותות אקוסטיים אחרים  ניתן להפעיל בקלות (פקודה אחת) עוד מודלים של למידת מכונה ורשתות עמוקות מאומנות עבור אותות אלה. מדובר ברשתות CREPE ו-OpenL3 שהתווספו בגרסה החדשה אל VGGish ו-YAMNet שהתווספו בגרסה הקודמת. לרשימת הפקודות לפי הרשתות השונות – לחצו פה (ניתן לראות בה שגם עבור שתי הרשתות האחרונות נוספו פקודות חדשות לעיבוד מקדים של אות האודיו, לפני הכנסתו לרשת. עבור שתי הרשתות הראשונות נוספו מגוון פונקציות, למשל אחת שמאפשרת הערכה של התדר היסודי באות אודיו (גובה, Pitch) באמצעות CREPE ואחת שמאפשרת חילוץ Embeddings של אותות אודיו באמצעות OpenL3). אפשר להשתמש ברשתות גם לצורך ביצוע Transfer Learning.
  17. יכולות למידה עמוקה חדשות בתחום ה-LiDAR – רשת PointPillars תומכת כעת בגילוי אובייקטים מסוגים שונים במידע Lidar ממגוון חיישנים (Ouster ,Velodyne ,Pandar). לדוגמה – לחצו פה. הרשת גם ניתנת כעת להמרה אוטומטית לקוד CUDA (לחצו לדוגמה). לסרטון קצר (5 דקות) על שימוש ברשת – לחצו פה.
    גם לרשת הסגמנטציה הסמנטית SqueezeSegV2 נוספה תמיכה בריבוי קלאסים (לחצו לדוגמה).
    ניתן גם לבצע כעת סגמנטציה סמנטית של ענני נקודות LiDAR בזמן אמת בעזרת SalsaNext (הדור הבא של SalsaNet) והמרה אוטומטית לקוד CUDA (לחצו למידע נוסף).

    בנוסף, יש כעת דוגמה לשימוש ברשת ++PointNet עבור סגמנטציה סגמנטית למידע LiDAR שנרכש מהאוויר (Aerial LIDAR), אשר לצורך עבור מיפוי מבנים וערים, מיפוי טופוגרפי אחר, ניהול אסונות וכו'…הרשת מחלקת את ענן הנקודות לאיזורים מקומיים חופפים ואז מפעילה את PointNet על כל אחד מהם. לדוגמה – לחצו פה.

    סגמנטציה סמנטית בעזרת ++PointNet למידע LiDAR שנרכש מהאוויר

  18. יכולות חדשות בתחום ה-Reinforcement Learning – ל-Toolbox הייעודי לתכנון ואימון Policies בעזרת אלגוריתמי למידת חיזוק (למידה באמצעות חיזוקים) עבור בקרים ומערכות קבלת-החלטה אוטונומיות נוסף ה-Reinforcement Learning Designer App – ממשק שמאפשר להגדיר ולפתור בעיות RL בצורה ויזואלית ואינטראקטיבית, מבלי לכתוב קוד. הממשק מאפשר לייבא סביבה שקיימת ב-Workspace או לייצר סביבה מוגדרת מראש, לייבא או לייצר בצורה אוטומטית סוכן (DQN ,DDPG ,PPO ,TD3), לאמן ולסמלץ את הסוכן מול הסביבה, לנתח את תוצאות הסימולציה ולתקן את פרמטרי הסוכן, ולייצא את הסוכן הסופי להמשך שימוש ולהטמעה. לסרטון הדגמה (6 דקות) – לחצו פה. לדוגמה כתובה – לחצו פה.
    בנוסף, יש כעת תמיכה בשימוש ב-RNNs לצורך הגדרת Policies ופונקציות ערך גם עבור סוכנים מסוג PG ,DDPG ,AC ,SAC ו-TD3 (בנוסף לתמיכה בכך שכבר היתה קיימת עבור סוכני PPO ו-DQN). הנ"ל שימושי במיוחד במקרים בהם לסביבה יש מצבים שאינם נכללים בוקטור התצפיות.
    למעוניינים/ות ללמוד על תחום ה-RL, וכיצד להשתמש בסביבת MATLAB עבורו – מומלץ הקורס המזורז והחינמי ששוחרר לפני כשלושה חודשים. ניתן למצוא עליו מידע נוסף בפוסט הזה.

    ה-Reinforcement Learning Designer App – ממשק שמאפשר להגדיר ולפתור בעיות RL בצורה ויזואלית ואינטראקטיבית, מבלי לכתוב קוד (ניתן ללחוץ על התמונה להגדלה)

ויש כמובן עוד חידושים עליהם ניתן לקרוא בתיעוד…

לסיכום, היכולות החדשות בתחום ה-Deep Learning בסביבת MATLAB יחד עם היכולות שהיו קיימות בכלי בעבר ושקיימות בכלים משלימים, הופכות את MATLAB לפלטפורמה מובילה בתחומי ה-Data Science and Machine Learning, כפי שגם קבעה בחודש שעבר, שנה שנייה ברציפות, חברת המחקר והייעוץ בטכנולוגיית המידע Gartner, אשר מייעצת באופן אובייקטיבי ליותר מ-15,000 חברות ברחבי העולם (לחצו לקריאת הניתוח של Gartner).

בין היתרונות של MATLAB בעולם ה-Deep Learning:

  • Labeling מהיר ונוח, באמצעות מגוון Apps. מאפשר לסמן bounding boxes בתמונות/וידאו או לבצע תיוג ברמת הפיקסל לצורך סגמנטציה סמנטית ואף לבצע אוטומציה לתהליך ולהשתמש באלגוריתמים מותאמים אישית וכן לתייג ענני נקודות מ-Lidar, קטעי אודיו ואותות אחרים.
  • ממשקי משתמש אינטראקטיביים החוסכים את הצורך בכתיבת קוד (עבור בניה נוחה של רשת חדשה או עריכה קלה של רשת מוכנה, ביצוע של אוגמנטציות, הרצת אימון, ניהול ניסויים, קוונטיזציה, תכנון ואימון של סוכני Reinforcement Learning).
  • מהירות אימון (ניתן להאיץ את התהליך עוד יותר באמצעות שימוש פשוט ונוח בחומרות נוספות כמו מספר GPUs, חוות מחשבים וענן) ומהירות Inference.
  • אפשרות להמיר בצורה אוטומטית את קוד ה-MATLAB ומודלי ה-Simulink לקוד CUDA מהיר וחסכוני בזיכרון לצורך מימוש על מערכות Embedded או לקוד ++C עבור מעבדים של אינטל ופלטפורמות ARM או לקוד HDL עבור FPGAs ו-SoCs (כדי לטרגט כאלה רכיבים דלי הספק וזיכרון, אפשר להיעזר בממשק הקוונטיזציה Deep Network Quantizer המוזכר לעיל והמודגם פה, שעוזר לוודא שלא חורגים מדרישות הדיוק הרצויות). ניתן גם לשלוח את האלגוריתם השלם לרוץ על PC אחר, מערכת אנטרפרייז, Edge Device או ענן.
  • אפשרות לייבא לתוך MATLAB מודלים שפותחו ואומנו בסביבות Deep Learning אחרות ולייצא מודלים מ-MATLAB אליהן (באמצעות פורמט ONNX או דרך Importer-ים ישירים, למשל ל-TensorFlow).
  • נוחות עבודה – הודות לשימוש בסביבת פיתוח עשירה המיועדת למהנדסים ומדענים.
  • כל תהליך הפיתוח בתחום הלמידה העמוקה יכול להתבצע בסביבה משולבת אחת (משלב היצירה/ההכנה של ה-Data, דרך אימון הרשת ועד להורדתה אל חומרה), אשר גם כוללת כלים מתחומים נוספים, ובכך מאפשרת לפתח מוצר שלם (כלומר – לא לבצע רק Deep Learning, אלא הרבה מעבר לכך, ולבצע deployment ליישום כולו).
  • אפשרות לביצוע סימולציה ובדיקות ברמת המערכת המלאה בעזרת סביבת Simulink, אשר יכולה לסייע גם ביצירה/סימולציה של ה-Data הדרוש (קישור למידע נוסף).
  • תוכנה בעלת שלבי פיתוח "מסודרים" וצוותי הנדסת איכות מקצועיים (בקשות ליכולות חדשות נבחנות, ככל שמתגלים באגים הם מטופלים, וכל הכלים מהתחומים הנוספים שהוזכרו לעיל עובדים יחד זה עם זה).
  • ממשק יציב, תאימות לאחור ותמיכה מלאה במערכת ההפעלה Windows בנוסף לתמיכה במערכות הפעלה אחרות.
  • יכולות ויזואליזציה ודיבאגינג – צפיה ב-Activations, הצגת Deep Dream Images, צפיה במשקולות, בחינה של התקדמות האימון בכיוון הנכון, תצוגה גרפית של הרשת וניתוח שלה לצורך איתור בעיות אפשריות לפני ביצוע האימון, הצגת Class Activation Mapping ושימוש בטכניקת Grad-CAM, ניתוחי Occlusion Sensitivity, שימוש בטכניקת LIME, יצירת Confusion Matrices מתקדמות וכו'…
  • תיעוד מקיף וברור ומאות דוגמאות מוכנות לשימוש במגוון תחומי יישום, כמיטב המסורת של סביבת  MATLAB. לעמוד הבית של תחומי היישום השונים, ממנו ניתן להגיע לפקודות חשובות, Apps רלוונטים ודוגמאות שימושיות עבור תחום היישום שלכם – לחצו פה. ול-Repositories שלנו לתחום הלמידה העמוקה ב-GitHub – לחצו פה.
  • תמיכה טכנית מקצועית בטלפון 03-7660111 או באתר, לבעלי רישיון תחת חוזה שירות, ושירותי ייעוץ לפרויקטים מורכבים.

מה הלאה?

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

להרצאה בעברית בנושא "למידה עמוקה עם קוד פתוח או עם MATLAB? או גם וגם?", הכוללת גם סיפור משתמש בנושא "Style Transfer לקבצי וידאו", בו מודגמת הכנסה של רשת אל MATLAB מסביבת למידה עמוקה אחרת והתאמה שלה, לרבות המרה אוטומטית שלה לקוד CUDA, מתוך כנס AI שנערך בתאריך 28/6/21 – לחצו כאן.
להרצאה בעברית (24 דקות) הסוקרת את החידושים בתחום הבינה המלאכותית בסביבת MATLAB, ששודרה בתאריך 17/3/21 – לחצו כאן.
לצפיה בסמינר מקוון בעברית בנושא "Deep Learning בסביבת MATLAB עבור יישומי ראיה ממוחשבת", שהתקיים ב-23/4/20 – לחצו כאן.
לוובינר בעברית בנושא "אימון רשתות למידה עמוקה באמצעות MATLAB עבור יישומי ראיה ממוחשבת", ששודר ב-5/5/20 – לחצו פה.
לוובינר בעברית בנושא "גילוי אובייקטים באמצעות למידה עמוקה בסביבת MATLAB", ששודר בתאריך 14/5/20 – לחצו פה.
לוובינר בעברית בנושא "ביצוע רגרסיה באמצעות למידה עמוקה בסביבת MATLAB", ששודר בתאריך 21/5/20 – לחצו כאן.
לוובינר בעברית בנושא "סגמנטציה סמנטית", ששודר בתאריך 21/4/21 – לחצו כאן.

לוובינר בנושא "לימוד מכונה ולמידה עמוקה לישומי עיבוד תמונות רפואיות", שהוקלט בתאריך 20/5/20 – לחצו כאן.
לצפיה בוובינר בעברית בנושא "Deep Learning של אותות מכ"מ לצורך סיווג מטרות באמצעות MATLAB ", שהוקלט ב-7/4/20 – לחצו כאן.
לוובינר בנושא סיווג של אותות בעזרת Wavelet Scattering ,CNN ו-LSTM והמרה אוטומטית של קוד MATLAB לקוד CUDA, שהוקלט ב-13/5/20 – לחצו פה.
לוובינר בעברית בנושא "המרת רשתות למידה עמוקה לקוד CUDA/C++/C  והפעלתו על מערכות Embedded", ששודר בתאריך 19/8/20 – לחצו כאן.
לוובינר בעברית בנושא "Style Transfer בעזרת למידה עמוקה בסביבת MATLAB", ששודר בתאריך 8/9/20 – לחצו פה.
לוובינר בעברית בנושא "סיווג של מודלים תלת מימדיים בעזרת למידה עמוקה בסביבת MATLAB", ששודר בתאריך 27/12/20 – לחצו פה.
לוובינר בעברית בנושא "גילוי אובייקטים במידע Lidar באמצעות למידה עמוקה", ששודר בתאריך 26/7/21 – לחצו פה.
להרצאת אורח בנושא "Image Processing Workflows for AI" ששודרה בתאריך 25/8/20 – 
לחצו פה.
אתם גם מוזמנים להצטרף לשאר האירועים הציבוריים החינמיים שעורכת חברת סיסטמטיקס – לחצו לרשימת האירועים המקצועיים הקרובים.

לפוסטים נוספים בנושא Deep Learning בבלוג זה – לחצו כאן.

רוצים לעבור קורס מזורז בעבודה על Deep Learning  בסביבת MATLAB  ללא התחייבות, בזמנכם החופשי, ומבלי להתקין שום דבר על המחשב? אתם מוזמנים לנסות את ה-Hands On Tutorial החינמי באתר MathWorks . לא צריך רישיון ל-MATLAB  בשביל לעבוד איתו, הכל מבוצע דרך הדפדפן. ה-Hands On אמור לקחת לכם כשעתיים, וניתן לעצור אותו בכל שלב ולהמשיך כאשר אתם רוצים. לכניסה – לחצו פה.
רוצים לעבור קורס מזורז שיאפשר לכם להיכנס לעולם ה-Reinforcement Learning? אתם מוזמנים לנסות את ה-Hands On Tutorial החינמי המקביל, הממוקד לתחום זה. לכניסה – לחצו פה.

למידע בנוגע לקורס "Deep Learning עם MATLAB" של יום שלםלחצו פה. ניתן לבקש פרטים נוספים על ידי לחיצה כאן.

לצפיה בסיפורי משתמשים ישראלים – לחצו פה או פה או פה.

לשיחה עם מהנדס מכירות לצורך קבלת מידע נוסף ו/או תיאום פגישת הדגמה ללא התחייבות – התקשרו לטלפון
03-7660111 או מלאו את הטופס כאן או שלחו מייל אליי ל- royf@systematics.co.il.

הפכו את התמונות שלכם לריאליסטיות יותר באמצעות חומרי PBR

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

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

PBR (Physically Based Rendering) Materials

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

בואו נראה דוגמה ביחד:

אנחנו משווקים ג'וייסטיק ולרגל חגיגות ה 20 לחברה החלטנו לייצר מהדורה מוגבלת שלו עם כיסוי עשוי זהב. לשם כך, ניגש אל ספריית חומרי PBR ונחפש את החומר שהכי מתאים לנו

 

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

בשלב הבא ניגש אל תוכנת ה Visualize, נעבור ללשונית Appearance ונלחץ על ה + ע"מ להוסיף את החומר החדש.

בחלון הגדרות החומר בלשונית GENERAL ניתן לחומר שם, "Gold", ונבחר תחת Appearance Type את PBR Material.

בהגדרת ה Workflow ישנן 2 אופציות:

  • Metallic / Roughness– הגדרה המיועדת לחומרים מתכתיים.
  • Specular / Glossiness– הגדרה המיועדת לכל שאר החומרים (לא מתכתיים).

במקרה שלנו מדובר על מתכת (זהב) ולכן נבחר ב Metallic / Roughness.
את שאר ההגדרות נשאיר לאחר כך.

נעבור ללשונית Texture ונלחץ על ה + עבור טקסטורת ה COLOR. ניגש אל תיקיית החומר שהורדנו ושם נבחר בתמונת הטקסטורה המתאימה ל COLOR.

נשים לב שקופצת הודעה המציעה לנו שהתוכנה תבחר אוטומטית את כל שאר הטקסטורות הקיימות באותה התיקייה ונלחץ YES.

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

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

  • Metallic: הגדרה זו קובעת למעשה כמה מתכתי ייראה החומר, אותו הברק שחסר לזהב שלנו. לחומרים מתכתיים נבחר בערך 1 ולחומרים לא מתכתיים נבחר 0.

  • Roughness: הגדרה הקובעת כמה מחוספס יהיה המשטח. משטחים מחוספסים מפזרים את האור המוחזר ליותר כיוונים מאשר משטחים חלקים. עבור משטחים מחוספסים נבחר בערך של 1 ובעבור משטחים חלקים נבחר בערך של 0.
  • Clearcoat – מעניק ברק לצבע, בדומה ל"פוליש" בצבע מתכתי.
  • Clearcoat Roughness – כמה חלק או מחוספס יהיה החומר אחרי ה"פוליש", ערך של 0 יגדיר חלקות וברק חזק יותר.
  • Solid – מגדיר האם החומר מתייחס רק למשטח אותו בחרנו או לכל הגוף (חד צדדי אל מול דו צדדי). אם נגדיר אותו SOLID נוכל לקבוע גם שקיפות של החומר.
    • Transparency – מכיוון והגדרנו שהחומר הוא על כל הגוף נוכל לקבוע את רמת השקיפות של החומר.
    • IOR – מקדם השבירה של האור בתוך החומר.
    • Transparency Color – הגוון שמקבל האור שעובר דרך החומר.
    • Color Density – קובע את צפיפות החומר, ככל החומר צפוף יותר כך הצבע עמוק יותר.
  • Emission – מגדיר לחומר "פליטת אור", מיועד לחומרים זוהרים.
  • Brightness – בהירות הצבע.

טיפ: לאחר כל העבודה הקשה שעשינו נוכל לשמור את החומר (Appearance) שיצרנו אל ספריית התוכנה שלנו ולשימוש חוזר בעתיד. לצורך כך נסמן את החומר בלשונית ה Appearances ובתפריט למעלה נלחץ Export, ונשמור אותו בתוך תיקיית ה PBR Materials.

ספריות חומרי PBR מומלצות:

אוטומציה בתהליך התכנון באמצעות DriveWorks

DriveWorks הינו תוסף שמתלבש על SOLIDWORKS, מאפשר ללמד את המערכת מה הם כללי התכנון שלכם, וכך לאפשר למערכת לבצע תכנון אוטומטי, או אוטומטי חלקי של המוצרים שלכם.

להלן סקירה כללית על טכנולוגית של DriveWorks:

  1. Rules – כללים ומגבלות.
  2. Forms – עיצוב טפסי הזנת הנתונים.
  3. Workflow – תהליך משלב הצעת המחיר עד להפקת תוצרים לייצור.
  4. Integration – ממשקים למערכת ה SOLIDWORKS PDM ולמערכות אחרות.
  5. 3D – תצוגה תלת-ממדית של הבחירות בטפסים ללא צורך בהפעלת תוכנת SOLIDWORKS.
  6. Reporting – הפקת דוחות.
  7. Automating CAD – תכנון אוטומטי בעזרת SOLIDWORKS.

Rules:

ניתן להגדיר את כללי התכנון ואת הידע ההנדסי כחוקים (Rules).

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

חוקים יכולים להיות מסוגים שונים, כמו:

מתמטיקה, טקסט, טבלאות, לוגיקה, אבטחה, רשימות, תאריך/שעה, מגבלות, ולידציה.

לדוגמה, כלל לוגי שקובע אם אורך המיכל שאנחנו מתכנים גדול מ 1200 מ"מ, אז יש להשתמש בתומך נוסף:

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

הסבר מלא על אפשרויות השונות לקביעה והשימוש בחוקים:

Forms:

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

הטפסים משמשים גם להזנת נתוני המוצר, גם להזנת פרטי הלקוח ולצרכים שונים נוספים.

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

Workflow:

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

הסבר מלא על אפשרויות ה Workflow:

Integration:

מערכת DriveWorks מאפשרת ממשק ישיר למערכת ה SOLIDWORKS PDM ויצירת ממשקי נוספים למערכות אחרות. ניתן לקרוא ולכתוב מידע ל Databases שונים, וכמו כן – לבצע ממשקים נוספים בעזרת קבצים, Web Services, API ועוד.

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

3D – תלת ממד

תלת ממד הינו בבסיס הטכנולוגיה של DriveWorks, המערכת משתמשת במודלים שתכננו ב-SOLIDWORKS ומאפשרת להציגם בכל מכשיר ובכל מקום, תוך כדי שינויים פרמטריים, ללא שימוש ב-SOLIDWORS בזמן הצגת המוצרים.

הסבר מלא על אפשרויות ההצגה התלת-ממדית:

Reporting:

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

הסבר מלא על אפשרויות הדוחות השונים:

Automating CAD:

DriveWorks מאפשר לשלוט באופן אוטומטי, בהתאם לחוקים שנקבעו מראש על החלקים, הרכבות והשרטוטים.

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

הפקת תוצרים:

DriveWorks מאפשר להפיק באופן אוטומטי:

  1. קבצי התכנון: חלקים, הרכבות, שרטוטים.
  2. תוצרים נוספים ש SOLIDWORKS יכול להפיק כמו: Parasolid, sat, step, dxf, dwg
  3. פורמטים נוספים כמו: pdf, תמונות
  4. מסמכים שונים כמו: קבצי Word, Excel, XML עבור הצעות מחיר או צרכים שונים

ועוד…

בנוסף, ניתן גם להטמיע את מערכת ה DriveWorks כמערכת CPQ מלאה.

 

 

 

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

אנו בסיסטמטיקס מבצעים אפיון והטמעה, מדריכים, וכמובן תומכים בכל מוצרי DriveWorks ו- SOLIDWORKS.

צרו עמנו קשר.

צבעו את הסקיצות שלכם

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

יותר נוח ומהיר להתבונן בסקיצות צבועות, כדי להבין את הקונספט, אל מול סקיצות אפורות, בצבע ברירת המחדל.

 כדי לצבוע סקיצה:

  1. נבחר את הסקיצה הרצויה
  2. בלחצן ימני נבחר באפשרות Sketch Color מתוך התפריט המקוצר.
  3. נבחר את הצבע הרצוי ונלחץ OK

מידע נוסף לידיעתכם

*ניתן לצבוע את אותה הסקיצה בצבעים שונים עבור קונפיגורציות שונות.

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

* להסתרת הסקיצה תוכלו לבחור אותה ולסמן Hide.

כיצד ליצור סכמה חשמלית כמו מקצוענים

מילון אוקספורד מגדיר את המילה אלגנטי כך:

  • חינני ומסוגנן במראהו
  • גאוני ופשוט

Schematic Flow

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

Nets and Ports

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

לרשתות (Net Labels) תמיד צריך שיהיו שמות. זה נדרש לתכן וגם לעריכת ה – PCB. ב -Altium Designer ה – Net Labels מופיעות על גבי ה – Wires. חיווט ב – PCB שכותרתו לדוגמא NetIC2_14 אינו עוזר לנו להבין מה אותו סיגנל מעביר או איזה אות הוא עשוי לשאת – לכן, לא ברור מיד מה הזרם ומהי תדירות האות. רשמו על גבי הסכמה החשמלית את כל שמות הרשתות שלכם, זה יקל על עריכת ה- PCB וישפר את הלוגיקה של הסכימה החשמלית. כשמדובר במכשירים כמו מיקרו-בקרים והתקני לוגיקה אחרים שבהם לPINS יש פונקציות מרובות, שמות הרשתות הופכים מיד את השרטוט החשמלי לפשוט יותר לקריאה. במקום לעקוב אחר חוט מיציאת המיקרו-בקר PB4, למקום בו הוא מתחבר, אנו יכולים לקרוא ממש ליד הסמל הסכימטי של המיקרו-בקר כי זהו "BTN1", המציין שהוא מיועד ללחצן מספר 1:

זכרו לשמור על ה – Net Labels קצרים ככל שניתן. לא רק שזה חוסך הקלדות, אלא גם הופך את השמות לקלים יותר לזכירה וקלים הרבה יותר לקריאה על משטח ה – PCB. רשת ששמה USER_INPUT_BUTTON_1  מועילה פחות מ – BTN1 שכן ב PCB אולי נראה רק USER_IN … כמו כן כאשר אנו מדברים על שמות ליציאות חשמל/כח: PWR_IN – INPUT_POWER / V3.3 – V33.

בעת מיקום יציאות חשמל/כח, שמרו על כיוונן העקבי. כלומר, לשמור על פורטים בעלי פוטנציאל גבוה יותר כאשר חיבור הרשת יוצא מלמטה וסמלי פוטנציאל נמוכים יותר כאשר חיבור הרשת יוצא למעלה. תוויות כגון VCC, 5V ו- 3V3 צריכות להיות ממוקמות בחלקה העליון של הסכמה ובכיוון שייראה כמו צורת T. לעומת זאת, תוויות VEE / VSS / GND צריכות להיות מוגדרות תמיד בחלקה התחתון של הסכמה, ומתחים שליליים בהתאם. כל זאת בכדי שנוכל להיות מסוגלים לקבוע את הקוטביות של חיבורי החשמל רק על ידי הסתכלות עליהם.

Harnesses

ב – Altium Designer, Harnesses הן כלי רב עוצמה לביצוע קבוצת חיבורים מגיליון אחד למשנהו בתכנון היררכי. במקום ליצור עשר יציאות נפרדות עבור קבוצת חיבורים שעוברים לגיליון אחר, אנו יכולים להשתמש בסמל יציאה יחיד עם חיבור רשת יחיד בין שני הסמלים בתרשים הגבוה בהיררכיה שלנו.

Hierarchical Design

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

Logical Separation

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

Spacing

חשוב לתת ל – Symbols שלכם מקום ומרווח הגיוני, ככל שניתן. הייתי רוצה לספק לפחות ריבוע GRID אחד של שטח, אך רצוי שניים, בין PIN ל – PIN, הרכיבים וה – Net Labels. אם הכל יהיה קרוב מדי זה לזה, יהיה הרבה יותר קשה לעקוב. זה נוח גם עבור המהנדס עצמו וגם עבור מי שקורא את הסכמות שלו. כקורא, תרצה להעריך כל רכיב ורכיב על הסכמה לבדו, מבלי שרכיבים אחרים יצטופפו ויקשו על הקריאה.

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

לצפייה בכל הבלוגים שלנו לחצו כאן

נתראה בפוסט הבא.

המלצות וטיפים לבניית יישומי פורטל GIS ויראליים של ESRI

יישומים אלה סיפקו מידע חשוב למאות מיליונים – ככל הנראה מיליארדים – אנשים ברחבי העולם.

נוכל לציין לדוגמא את הדשבורד של אוניברסיטת ג'ונס הופקינס, אליו גלשו למעלה מ -1.5 מיליון צפיות בשעה במהלך השבוע של ה- 8 במרץ 2020, תלוי בשעה ביום. לדשבורד זה, אנו בסיסטמטיקס, ייצרנו גרסה מתורגמת לעברית, מותאמת לצפיה במחשב או בסלולר עבור הציבור. גרסה זאת גם הוטמעה בכל המדיות התקשורתיות בארץ.

לקוחות ESRI בישראל בנו יישומי פורטל ויראלים נוספים  להתמודדות עם משבר הקורונה כגון:

  • מפת תחלואה ארצית (רמזור) ומפת חיסונים ארצית לפי פריסת יישובים של משרד הבריאות
  • מפת רמזור החלטות ממשלה ומפת חינוך של פיקוד העורף
  • 500 מטר – יישום למדידת מרחק מהבית שהכנו בסיסטמטיקס
  • מפת מיקום עסקים פתוחים ברשויות מקומיות
  • ועוד …

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

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

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

מהו בעצם יישום ויראלי

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

יהיו כאלו שיגידו 500 צפיות ביישום בשעה, אחרים 1000 צפיות ואולי בכלל 50 אלף צפיות בשעה?

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

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

מה השיקולים שיש לחשוב עליהם בזמן תכנון ובניה של יישום ויראלי-

מסר – 

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

קהל היעד – 

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

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

חווית משתמש –

שיקול חשוב נוסף הוא מה החוויה שתרצו שתועבר למשתמשים ביישום שלכם.

כיצד יצפו ביישום –

בדסקטופ השולחני? במובייל? יישום מוטמע בתוך דפי מידע HTML אחרים?

כיצד המשתמש אמור לעבוד עם היישום- האם היישום מכיל רק מידע לצפיה? או מידע לעריכה?

מה אתם כאנשי ה GIS שאחראים על היישום רוצים שהמשתמש יפיק או יידע מהיישום בזמן השימוש ולאחר השימוש?

כיצד כדאי שיראה היישום (ויזואליזציה): איזה חלוניות מידע (POPUPS) להכין- פשוטות או מורכבות.

האם יש צורך בניתוח מידע בתוך היישום? להחליף מפות בסיס? לחקור מיקומים? לחקור מידעים? לשלב אפשרות הדפסה? לאפשר הפניות למקורות נוספים ועוד ועוד שיקולים שיש לחשוב עליהם…

KISS –

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

לסיכום השיקולים שיש לקחת בחשבון לקראת תכנון ובנייה של יישום ויראלי יכולים להתקבץ תחת שלוש קטגוריות –

פונקציונאליות  (2) נראות מותאמת (ויזואליזציה)  (3) ביצועים מהירים.

אנו נתחיל עם ההמלצות ליישומים אשר מתארחים בפורטל הענן ArcGIS Online

רשימת "מכולת" / צ'ק ליסט שמומלצת על ידי מומחי ESRI:

  • עבור יישום ויראלי לציבור הרחב הפתרון התשתיתי הנכון ביותר הוא להשתמש בענן של ESRI כלומר בArcGIS Online .
  • יש להשתמש ב- ArcGIS Online כדי לפרסם שכבות FEATURE או TILE מתארחות, כולל שכבות תצוגה (שכבות (VIEW על מנת לאחסן את השכבות את המפות וכמובן את יישומי האינטרנט.
  • יש לשתף את השכבות כפתוחות לכלל הציבור וללא הרשאות גישה, הדבר יאפשר שימוש בבקרת מטמון CDN) : (Content Delivery Network .
  • יש לודא שהגדרות של עריכה, סנכרון ועקיבה מושבתות בכל השכבות המתארחות הכלולות ביישום.
  • אל תכלול מסננים (פילטר) של  תאריך יחסי עם המפה, השכבה ו / או היישום.
  • במפות, אל תכלול מסננים המכילים את הפעולות "בסוף" או "לא אחרון".
  • ביישומים של Web AppBuilder, אל תכלול את הפעולות "האחרון", "לא האחרון", "היום", "אתמול" ו"מחר "בעת שימוש בווידג'ט פילטר.
  • מומלץ להשתמש במסנני תכונות ATTRIBUTE במקום במסננים מרחביים בעת הצגת נתונים המתעדכנים לפי מיקום. לדוגמא, אם ברצונך להציג את מיקומי האוכלוסי שיש לפנות בעת אירוע מזג אויר קיצוני או שריפות, מלחמה וכו' צריך לסנן את הערכים לפי מדינה או שם אזור ולא להשתמש בתיחום המפה.

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

  • סמן את השכבות, המפות והיישומים כמהימנים בהגדרות הפריט בפורטל הענן.
  • לשיפור ביצועים מומלץ (1) לייעל שרטוט שכבה (2) להשתמש ב attribute index

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

אם אתה מגדיר מסנן תכונות ליישום עם מערך נתונים גדול (יותר מ -2000 תכונות), אפשר ליצור אינדקס תכונות עם השכבה. אם האינדקס נוצר לפני הפרסום (ב- ArcMap או ArcGIS Pro) השכבה "תירש" את אותן הגדרות בעת פרסומה.

המלצות נוספות ליישומים מסוג לוח מחוונים (דשבורד):

  • גישה ליישום, במיוחד אם הוא מוטמע באתרים אחרים, באמצעות URL כללי של פורטל האון ליין arcgis.com
  • הגדרת שדה נוסף מסוג טקסט לתאריכים, במידה ויש צורך לבצע סינון והצגה לפי תאריך.

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

ניתן להגדיר 3 רמות של מטמון או "קש" כאשר אנו עובדים באינטרנט-

  • רמת הדפדפן – כלומר המשתמש שגולש. כולנו מכירים את יכולת ניקוי ה"קש" שלעיתים מתבקשת כדי לטעון מחדש יישום.
  • CDN – רשת שמחזיקה את המידע הזה מבוזר בענן.
  • רמת השרת – או במקרה שלנו המידע של השכבות בתוך רכיב SERVER ו/או בסיס הנתונים.

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

ניתן להבין שאם עבור כל "פניה" ליישום צריך לחזור אחורה עד לרמת השרת- הדבר עולה בביצועים.

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

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

מומלץ להגדיר את בקרת המטמון כך שתיישר קו עם תדירות עדכון הנתונים שלך בדף הגדרות השכבה. כברירת מחדל, שכבות ציבוריות מוגדרות ל -30 שניות. אם הנתונים שלך מתעדכנים כל רבע שעה, הגדר את בקרת המטמון ל 15 דקות.

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

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

התמקדנו בעיקר בפורטל הענן של ESRI, המומלץ ביותר ליישומים ויראלים לציבור הרחב.

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

חשוב להכיר המלצות חשובות ברמת ממשק רכיב ה-SERVER שיכולים לעזור לנו לייצר יישומים כאלו:

  • האדמין של המערכת חייב להבין ולדעת מה יכולות השרתים מבחינת זיכרון , דיסק ו CPU.
  • POOLING –
    בהתאם להבנת יכולות המערכת המותקנת בארגון ניתן להגדיר עבור SERVICES אשר מיועדים לשרת יישומים ויראלים ערך גבוה יותר של SOC כלומר של אינסטנסים, רכיבים שיספקו את המידע.
    ערך ברירת המחדל בעת פרסום שירות הוא פתיחה של מקסימום 2 SOC לשירות. בזמן פרסום שירות, או לאחר הפסום בממשק ניהול השרת ניתן לשנות את הגדרת הערך הזה ולהגדיל לפי הצורך.
  • סטטיסטיקות –
    שימוש בנתוני סטטיסטיקות בממשק ניהול השרת, יהוו אינדקציה לגבי עומס על שירותים ויכולים לסייע לנו להחליט האם לשנות הגדרות לשירותים אלו.
    מומלץ שאנשי ה-GIS  שמנהלים (עם הרשאת אדמין)  את המערכת יכירו הגדרות אלו וישתמשו בהם בחכמה ובעיקר עבור יישומים ויראלים או עם פוטנציאל להפוך לויראלים.

בדיקות מומלצות ליישומים ויראלים לפני הפצה:

באופן כללי צריך לבדוק –

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

system test –

כלי שפותח בקהילת ESRI –

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

באמצעות כלי זה מקליטים את הפקודות שעוברות בהפעלה של יישום מסוים – למשל אם יש דשבורד איטי. טוענים את ההקלטה לכלי ומגדירים הרצה, שתדמה מספר משתמשים בו זמנית שמריצים את הפקודות. למשל, להתחיל עם 100 משתמשים ועד 600 משתמשים, כאשר כל דקה מוסיפים עוד 50 משתמשים.

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

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

חלק מהניטור הוא גם בדיקת המשאבים של שרתי בסיסי הנתונים המשתתפים.

כלי המוניטור של ESRI –

הכלי מחובר באופן קבוע לרכיבי המערכת ומנטר אותם.

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

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

לסיכום –

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

אנו מחכים לשיתופים שלכם ביישומים ויראלים מוצלחים!

 

לשימושכם מידע נוסף ניתן למצוא בלינקים הבאים:

הגדרות והמלצות ליישומים ויראלים :

https://www.esri.com/arcgis-blog/products/arcgis-online/data-management/essential-configurations-for-highly-scalable-arcgis-online-web-applications-viral-applications/

https://www.esri.com/arcgis-blog/products/arcgis-online/sharing-collaboration/best-practices-for-high-demand-viral-apps/

https://community.esri.com/t5/coronavirus-disease-2019-covid/best-practices-for-virtual-operations/ba-p/885522

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

https://doc.arcgis.com/en/dashboards/reference/build-highly-scalable-dashboards.htm

https://doc.arcgis.com/en/dashboards/create-and-share/dashboard-urls.htm

CDN:

https://doc.arcgis.com/en/arcgis-online/manage-data/manage-hosted-feature-layers.htm#CDN

CDN בענן של אמזון, עבור ARCGIS ENTERPRISE :

https://community.esri.com/t5/implementing-arcgis-blog/a-content-delivery-network-cdn-approach-to-arcgis-enterprise/ba-p/886922

סרטונים והרצאות של ESRI בנושא יישטמים ויראלים:

https://www.esri.com/videos/watch?videoid=1lev6JB9M-w

https://www.youtube.com/watch?v=WpAknnK93EA

https://proceedings.esri.com/library/userconf/fed19/papers/fed_93.pdf

כלי בדיקה:

https://www.arcgis.com/home/item.html?id=e8bac3559fd64352b799b6adf5721d81