Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Webassembly Powered
Machine Learning
Mihail Zachepilo
@WorldThirteen
pentatonica.co
gammacv.com
Mihail Zachepilo - WebAssembly powered Machine Learning
Традиционное программирование
Машинное обучение
Машинное обучение
Mihail Zachepilo - WebAssembly powered Machine Learning
Зачем JavaScript
разработчику это нужно?
https://xviniette.github.io/FlappyLearning
Это весело
Это красиво
https://lines.chromeexperiments.com/
(и немного обманчиво)
Это красиво
– Продающие системы для интернет-магазинов;
– Прогнозы поведения клиентов;
– Оптимизация производства;
– Анализ показателей из IoT, умного дома;
– Анализ данных как сервис;
– ...
Это может решать конкретную бизнес задачу
– Предугадывание действий;
– Помощь пользователю;
– Оценка действий пользователя.
Это может улучшить пользовательский опыт
Это может помочь другим вступить
в изучение машинного обучения
https://playground.tensorflow.org
Mihail Zachepilo - WebAssembly powered Machine Learning
Machine Learning Flow
Производительность
Вычисления в машинном
обучении могут быть
паралеллизированы
Лучше всего параллельные и
численные вычисления
производит GPU
WebGL problems:
– Недоступно с некоторыми Intel Built-in graphics, и видеокартами из blacklist-а;
– Трудность разработки под WebGL (особенно 1.0);
– IO Overhead.
Что же может нам помочь?
Mihail Zachepilo - WebAssembly powered Machine Learning
– Портируемость:
- создан как compilation target;
- может быть запущен на любой архитектуре x64/x86/arm;
– Возможность ручного менеджмента памяти (никаких
проседаний FPS из-за GC);
– Теоретически большая производительность чем у
аналогичного JS кода;
Что дает нам WebAssembly
А еще танчики
Что WebAssembly даст нам в будущем
– Threads issue#1073
– SharedArrayBuffer - отключен из-за Meltdown и Spectre (что
исключает производительную многопоточность на время для
WASM и JS).
– SIMD issue#1075
– Bulk memory operations issue#1114
Mihail Zachepilo - WebAssembly powered Machine Learning
У нас есть Machine Learning
У нас есть WebAssembly
И что нам делать?
Проект позволяет портировать готовые ML модели в веб.
Портирование с:
– Keras;
– PyTorch;
– TensorFlow;
–...
Backend-ы:
– WebAssembly;
– asm.js;
– WebGL;
– WebGPU (Safari with MacOS, iOS);
– JavaScript.
Готовые решения: WebDNN
https://mil-tokyo.github.io/webdnn
Сравнение производительности Keras.js и портированных моделей
WebDNN на разные backend-ы
Tensorflow AOT Compilation to WASM
https://humantoanimal.com
Mihail Zachepilo - WebAssembly powered Machine Learning
Mihail Zachepilo - WebAssembly powered Machine Learning
Популярная OpenSource библиотека, скомпилированная
в WebAssembly с помощью emscripten.
Выигрыш: Портирована большая, готовая, протестированная
кодовая база подготовки данных и выполнения модели
Готовые решения: OpenCV.js
Можем ли мы обучить нейронную сеть?
1m 54s 8.373s
https://ai.danruta.co.uk/webassembly (jsNet)
13.7x Faster
vs
Grayscale
X1 X10
1.61 1.74 15.5 13.6 38
1.75 1.87 3.65 16.7 12.3 26
3.1 44.76 10.01 4 55 15.5
ms
4.39
Задача: Локализация лица
Признаки: HOG, добываются на GPU
Классификация: JS
Есть: ~44 FPS
Цель: ~60 FPS
История
Мысль: заменить JS на WASM
Ведь Twitter весь в
“Bringing the web up to speed with WebAssembly”
История
Код перенесен на C, скомпилирован с помощью
https://webassembly.studio
P.S. Огромная благодарность Yury Delendik и контрибьюторам
История
DEMO
~44 FPS ~46 FPS
– JS код и так занимал не больше 2-4ms;
– Вызовы WebAssembly-функций на данный момент
накладывают небольшой overhead;
– Передача данных в память WebAssembly instance-a также
внесла свою долю;
– Среднее отклонение fps стало меньше за счет уменьшения
работы для GC.
Почему так
https://iodide.io/pyodide-demo/python.html
Python в браузере
Machine Learning — необходимо развивать инструментарий
WebAssembly
– не серебряная пуля для машинного обучения
– не имеет полного набора выигрышных фич для улучшения
производительности
– требует експериментов
Итог
Спасибо за внимание
Экспериментируйте с машинным обучением, с WebAssembly и
делайте наш мир лучше.
И конечно же, задавайте вопросы.
Михаил Зачепило
mihailzachepilo@gmail.compentatonica.co

More Related Content

Mihail Zachepilo - WebAssembly powered Machine Learning