מאמרים בנושא ‏תכנה ומחשבים‏.

רשתות נוירונים בקוד פתוח... להפשיל שרוולים

ב־יום ראשון, 25 ביולי 2021, מאת ארתיום; פורסם תחת: תכנה חופשית, פיתוח, תכנה ומחשבים, בינה מלאכותית; ‏2 תגובות

כתבתי בעבר על המצב העגום של תחום ה־deep learning בקוד פתוח - שלמעשה לא קיים. אחרי ש־Google בפועל הרגו את ה־plaidml עם keras והפיתוח של Caffe הופסק אז נוצר המצב בו אין כל דרך לאמן רשתות בעזרת פלטפורמה פתוחה - OpenCL.

יש סיבות טובות לעבוד עם OpenCL מעבר לשמירה על הקוד הפתוח. למשל לפתח תוכנה שתעבוד על כל כרטיס גרפי סביר ובכל מערכת הפעלה - בלי להסתבך.

אז הרמתי את הכפפה: https://github.com/artyom-beilis/dlprimitives

זהו פרויקט חדש בשם DLPrimitives שאמור לתת מענה לסוגיה. הוא אמור לספק ספריה בסגנון cudnn/miopen שמממשת את הפעולות הבסיסיות של Deep-Learning וגם לספק כלים ל־inference. בנוסף, הרעיון הוא להתחבר כ־backend לאחד ה־deep learning frameworks העדכניים כמו pytorch, tensorflow או mxnet.

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

לחסרי סבלנות - הצלחתי להגיע ל־150%-200% של ביצועי caffe-opencl ו־plaidml על פלטפורמת amd ו־nvidia ולהגיע לכ־50% עד 70% של ביצועי המימושים הספציפיים שלהם על בסיס cudnn/miopen.

כל התוצאות:

https://github.com/artyom-beilis/dlprimitives/blob/master/docs/summary.md

סיכום לעצלנים - ממוצע על 5 רשתות נפוצות alexnet, resnet18, resnet50, vgg, mobilenet:

GPU Batch Train, Cuda/HIP Test, Cuda/HIP Train, Plaidml/Caffe Test, Plaidml/Caffe
gtx960 16 51% 60.73% 171% 167.33%
gtx960 8 59% 72.03% 187% 155.25%
gtx1080 16 42% 41.34% 207% 137.52%
rtx2060s 16 49% 57.53% 211% 149.48%
rx560 16 53% 56.82% 153% 115.63%
rx560 8 55% 54.19% 172% 122.64%
intel-hd530 8 109% 66.12%

אומנם זו התחלה אבל כבר התחלה טובה!

מקוביות לכוכבים

ב־יום ראשון, 21 במרץ 2021, מאת ארתיום; פורסם תחת: תכנה חופשית, פיתוח, תכנה ומחשבים, אסטרונומיה; ‏0 תגובות

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

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

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

אז במה מדבור?

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

כלב גדול

אם רוצים למצוא קלאסטר M41 (שמסומן בעיגול צהוב) אז אפשר למצוא את סיריוס ואת אדרה ולכיוון את הטלסקופ למיקום של 1/3 ו־2/3 ביניהם. כמובן שזה דורש: (א) שבסביבת האוביקט שאתה מחפש יהיו כוכבים בהירים וקלים לזיהוי. (ב) שנקודות ייחסו יהיו קלות להערכה בעין. שיטה זו דורשת גם הרבה מיומנות וגם שמיים חשוכים יחסית כדי להקל על הניווט מה שלא תמיד מתאפשר בתנאי העיר.

ומה לגבי אפליקציות כמו SkyMap הרי הן יודעות לכוון אותך למקום הרצוי? הבעיה שלסנסורים של טלפון יש שגיאה המגיע עד כ־5 מעלות בערך בעוד ששדה הראיה של טלסקופ טיפוסי למתחילים נע בין 1.0 ל־2.5 מעלות. אבל זו רק חצי בעיה. השגיאה של המצפן יכולה להגיע עד עשרות מעלות. מה שהופך כל תוכנות הפלנטריום לא רלונטיות לכיוון מדויק של הטלסקופ אלא רק להערכה כללית של כיוון הצפייה.

אז עלה בראשי רעיון

אומנם הסנסורים לא מדויקים אבל לטלפון יש גם סנסור gyro. אפשר לקרוא אותם בעזרת Device Orientation Event ואז אם במקום למדוד את הכיוון האובסולטי למדוד את השינוי נוכל להגיע לדיוק יותר גבוה! גם בציר גובה בגם בציר הכיוון (מצפן)

כיוון שאני מעולם לא פיתחתי אפליקציות אז בחרתי לעבור עם WebApi ולממש הכל ב־JavaScript. בצורה זו אוכל בקלות לבנות אפליקציה גם ל־Android וגם ל־iPhone (כי הרבה חובבי אסטרונומיה אוהבים iPhoneים). בסה"כ מדובר בקצת גיאומטריה חישובית וגם בבסיס הנתונים.

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

כל מה שנשאר לי זה להמיר את ה־csvים ל־JSON להמיר כמה פונקציות חישוביות מ־python ל־javascript ולהסתבך בהרבה טרנספורמציות לינאריות. וכמון לכתוב גם UI נחמד.

אז הנה התוצאה: https://artyom-beilis.github.io/skyhopper.html לטלפון חכם בלבד.

וכמבו הנה הקוד: https://github.com/artyom-beilis/skyhopper

אז איך זה עובד?

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

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

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

מסקנות מתחום כתיבת הקוד

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

רשתות נוירונים בקוד פתוח... תמונת מצב

ב־יום שבת, 30 בינואר 2021, מאת ארתיום; פורסם תחת: תכנה חופשית, פיתוח, תכנה ומחשבים, בינה מלאכותית; ‏3 תגובות

כידוע היום שוק ה־deep learning נשלט באופן כמעט בלעדי ע"י nVidia. אומנם כל תשתיות למידה החישובית הפופולריות כגן TensorFlow, PyTorch, Caffe, MXNet ואחרות משוחררות כקוד פתוח, אבל בליבו של כל אחד מהם, ללא יוצא מן הכלל, רצות ספריות cublas ו־cudnn המאפשרות לנצל את החומרה בצורה מיטבית. כולן כמובן קוד בסגור ומסוגר הרץ על בסיס CUDA. כמובן, גם הוא API פרטי וקנייני של חברת nVidia.

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

אבל אני רוצה קוד פתוח?

אז יש מספר פתרונות וכיוונים:

  1. לאמן הכל ב־CPU בלבד.
  2. להשתמש בתשתית ROCm של AMD.
  3. להשתמש ב־OpenCL במקום ב־CUDA ואז חוץ מדרייבר של nVidia הכל יהיה פתוח (פחות או יותר)
המשך...

1984 הדיגיטלי

ב־יום שישי, 15 בינואר 2021, מאת ארתיום; פורסם תחת: תכנה חופשית, אינטרנט, תכנה ומחשבים, פוליטי; ‏5 תגובות

בעקבות פרשת טראמפ, החלטתי להבין מה קרה שם בגבעת הקפיטול. לא מהפרשנים אלא מהמקור. מה הייתה ההסתה לכאורה שגרמה להמון משולהב להתפרץ. פתחתי גוגל: trump capitol speech, הגעתי למלא פרשנויות אבל לא למקור. שיניתי גרסאות החיפוש אותה תוצאה... מוזר. פתחתי bing בקישור השני מצאתי וידאו מלא. זה צרם לי אבל המשכתי הלאה. ראיתי ש־twitter החזירו את החשבון לעת עתה.

היום מדברים בחדשות שהחשבונו נחסם לצמיתות. מעניין. Googe: twitter trump. מגיע לעשרות כתבות של חדשות על חסימת חשבון - אבל לא הקישור לחשבון עצמו. הפעם אני פותח bing במידי ובקישור הראשון אפשר למצוא את חשבונו החסום - ממקור ראשון. הפעם האסימון נפל.

1984 מויקיפדיה

זוכרים את תפקידו של וינסטון ב־1984? הוא היה אחראי על שיפוץ עיתונים ישנים ומחיקת היסטוריה לא רצויה. אם לא קראתם את הספר עד עכשיו - הזמינו אותו מיד. אז מסתבר גם גוגל התאימו את המציאות. הרי זה ידוע - אם אתה לא בגוגל אתה לא קיים! אחד כלי המחקר האינטרנטי - שנותן לנו בעצם גישה לאינסוף מידע ודיעות, עוזר למצוא מקורות הוא מונע את המידע.

עד היום לא הסתמכתי על כלי תקשורת אחד כדי לגבש עמדה על משהו חשוב - כי ידוע לכל כלי תקשורת יש אג'נדה משלו. לכן תמיד הסתכלי במספר דיווחים משני צידי המתרס. ידיעות וישראל היום. ערוץ 13, 12 ו־20 ואם הנושא חשוב באמת הייתי מחפש את המקורות - למשל קראתי את פסק דינו של אלאור אזריה. צפיתי בשידורי הבג"ץ בנושא חוק הלאום. כי לא סמכתי על פרשנויות.

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

ובעיקר מטריד...

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

טוב אז מאין תבוא הישועה? bing? duck-duck-go? yandex? יש עוד אלטרנטיבות?

מישהו מכיר מנוע חיפוש מבוסס FOSS?

התמונה נלקחה מויקיפדיה

רשת חברתית חופשית או פעם זה היה אחרת

ב־יום ראשון, 10 בינואר 2021, מאת ארתיום; פורסם תחת: תכנה חופשית, אינטרנט, תכנה ומחשבים, פוליטי; ‏5 תגובות

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

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

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

בלוגים

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

מוכר? נכון - זה ממש כמו פייסבוק! רק במספר הבדלים

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

בד"כ אנשים לא פרסמו "מאמרים" בסגנון

בוקר - 16 גרביים - אף זוג 😕

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

אלא השקיעו בתוכן איכותי. ומה הקמת בלוג לא הייתה עניין מסובך אבל גם לא משהו פשוט.

היה קשה ליצור קשרים חברתיים

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

ברוב הפלטפורמות הפתוחות התוכן היה שלך

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

פורומים

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

ההקמה של פורומים הייתה קשה ומסובכת (עשיתי זאת פעם). אבל אפשר היה גם להקים פורום בפלטפורומות פתוחות אבל זה היה פחות נפוץ.

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

אז מה אפשר לעשות מלבד לדבר על זכרונות הימים שעברו?

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

    • קל להתחיל - לכל אחד
    • לק לעבור מפלטפורמה אחת לשניה - על ידי דרישה לעמידה בתקנים חופשיים ומבוזרים

מי מרים ו/או הרים כבר את הדגל?

העמוד הבא

דפים

נושאים