Думаю впихнуть C++ в веб клиента
От: Артём Австралия жж
Дата: 28.09.23 21:31
Оценка:
Кастую фанатов C++ на обсуждение.
Контекст — все ML пакеты имеют общую черту. Они под капотом C++. Если у пакета наружу торчит только питон- это шоустопер для веб. Но слинковать подкапотную функцию из C++ можно ручками.

Подискасить ради
Re: Думаю впихнуть C++ в веб клиента
От: reversecode google
Дата: 28.09.23 21:46
Оценка:

все ML написанные на C++ компиляются в wasm
так что с js оно сростается вообще прочно и качественно
хз где вы там питон нашли
Re[2]: Думаю впихнуть C++ в веб клиента
От: Артём Австралия жж
Дата: 28.09.23 22:32
Оценка:
Здравствуйте, reversecode, Вы писали:

R>

R>все ML написанные на C++ компиляются в wasm
R>так что с js оно сростается вообще прочно и качественно
R>хз где вы там питон нашли

Не все. EasyOCR только из питона.

Такой момент: официальная либа opencv тянет все стандартные функции, т.е. утежеляет, однако нестандартные (contrib) нужно для C++ кастомную сборку. Раз так, то возможно, имеет смысл свой полностью кастомный wasm, который залинкует множество либ и tree shacking у эмскриптена отрежет неиспользуемые пути исполнения.

Если либа wasm давно не поддерживается, то новых фичей типа simd в ней не будет. Однако я видел пример, как пакет собирает 2 версии wasm и в рантайме пытается сначала подгрузить ту, что с simd собрана. Разница в перфомансе матричных операций значительная.
Отредактировано 28.09.2023 22:36 Артём . Предыдущая версия .
Re[3]: Думаю впихнуть C++ в веб клиента
От: reversecode google
Дата: 28.09.23 22:37
Оценка:
что такое свой кастомный wasm я хз
но opencv насколько я помню тоже в wasm компилиться

сходу не вспомню
но всех эти ml рекогнишин примеров и уже даже сбилдених на гитхабе тьма тьмущая

так что юз гугл люк
прежде чем взваливать на себя огромную гору и птытаться передвигать силой мысли целые галактики
Re: Думаю впихнуть C++ в веб клиента
От: andrey.desman  
Дата: 28.09.23 23:32
Оценка:
Здравствуйте, Артём, Вы писали:

Компилятор C++ хочешь впихнуть?
Re: Думаю впихнуть C++ в веб клиента
От: sergey2b ЮАР  
Дата: 29.09.23 03:23
Оценка:
Здравствуйте, Артём, Вы писали:

Аё>Подискасить ради


opencv можно скомпилить как N библиотек и под линоквать только нужную
при включенной поддержки GPU твой AI будет как живой быстро работать
Re[2]: Думаю впихнуть C++ в веб клиента
От: Артём Австралия жж
Дата: 29.09.23 03:48
Оценка:
Здравствуйте, sergey2b, Вы писали:

S>при включенной поддержки GPU твой AI будет как живой быстро работать

Это зависит от размера модели и размера VRAM в телефоне. Но да, that is the idea.
Re[3]: Думаю впихнуть C++ в веб клиента
От: sergey2b ЮАР  
Дата: 29.09.23 04:02
Оценка:
Я не знаю как телефоне
Но в Intel CPU уже есть gpu те получаеться вариант оптимизации без вложения денег
Re[4]: Думаю впихнуть C++ в веб клиента
От: denisko http://sdeniskos.blogspot.com/
Дата: 29.09.23 12:49
Оценка: +2
Здравствуйте, sergey2b, Вы писали:

S>Я не знаю как телефоне

S>Но в Intel CPU уже есть gpu те получаеться вариант оптимизации без вложения денег
как бы это вариантом пессимизации не было.
<Подпись удалена модератором>
Re[5]: Думаю впихнуть C++ в веб клиента
От: sergey2b ЮАР  
Дата: 29.09.23 13:20
Оценка:
Здравствуйте, denisko, Вы писали:

D>как бы это вариантом пессимизации не было.


если не секрет почему вы так думайте ?
я за последнию неделю столкнулся с двумя ошибками в Intel encoder
Re[6]: Думаю впихнуть C++ в веб клиента
От: denisko http://sdeniskos.blogspot.com/
Дата: 29.09.23 15:27
Оценка: 9 (1)
Здравствуйте, sergey2b, Вы писали:

S>Здравствуйте, denisko, Вы писали:


D>>как бы это вариантом пессимизации не было.


S>если не секрет почему вы так думайте ?

S>я за последнию неделю столкнулся с двумя ошибками в Intel encoder


1) Чтобы GPU код дал ускорение, надо уметь писать под него. Причем под конкретную модель/архитектуру.
2) Чтобы GPU дал ускорение из него вырезали большую часть работы с памятью и кэшем в пользу алушек и поставили тупо быструю память.
3) Чтобы GPU дал ускорение -- его надо уметь делать.

Пока на все вопросы ответы отрицательные.
1) Вряд ли значимое число людей что-то адаптировало под интеловские встроиши. А даже если адапатировалоа надо аккуратно смотреть бенчмарки.
2) Память используется встроенная и отжатая у ПК, что может привести к узким местам
3) Интел пока не показал, что он умет делать что-то ГПУподобное, предназначенное для общих вычислений.
<Подпись удалена модератором>
Re[7]: Думаю впихнуть C++ в веб клиента
От: sergey2b ЮАР  
Дата: 29.09.23 15:32
Оценка:
Здравствуйте, denisko, Вы писали:

я скорей всего копал не так глубоко как вы

но если собрать ffmpeg с Intel GPU саппорт енкодер сможет обрабатывать 1.9 раза больше фреймов за сек
если пересобрать opencv с Intel GPU саппорт покрайней мере те операции что нужны мне, становяться на 40% быстрей
Re[8]: Думаю впихнуть C++ в веб клиента
От: denisko http://sdeniskos.blogspot.com/
Дата: 29.09.23 18:09
Оценка: 9 (1)
Здравствуйте, sergey2b, Вы писали:

S>Здравствуйте, denisko, Вы писали:


S>я скорей всего копал не так глубоко как вы


S>но если собрать ffmpeg с Intel GPU саппорт енкодер сможет обрабатывать 1.9 раза больше фреймов за сек

S>если пересобрать opencv с Intel GPU саппорт покрайней мере те операции что нужны мне, становяться на 40% быстрей
Чем в однопотоке? А если включить 4 потока , или сколько у тебя эффективных есть?
Просто лет 5 назад, при написании ГПУшного кода можно было прошибиться настолько, что плохой код замедлял работу, а хороший ускорял раз в 100-300 (при удаче и грамотной раскладке в памяти). А плохой от хорошего без инсайта было отличить почти невозможно. Потом они (нвидишники) вроде навешивали защиту от криворуких, но все равно когда ты пилишь что-то свое, наличие у тебя приблуды под названием GPU означает не "халявная производительность" а "кровь, пот, слезы при отладке и написании".
<Подпись удалена модератором>
Re[9]: Думаю впихнуть C++ в веб клиента
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 29.09.23 21:48
Оценка:
Здравствуйте, denisko, Вы писали:

D>Просто лет 5 назад, при написании ГПУшного кода можно было прошибиться настолько, что плохой код замедлял работу, а хороший ускорял раз в 100-300 (при удаче и грамотной раскладке в памяти). А плохой от хорошего без инсайта было отличить почти невозможно. Потом они (нвидишники) вроде навешивали защиту от криворуких, но все равно когда ты пилишь что-то свое, наличие у тебя приблуды под названием GPU означает не "халявная производительность" а "кровь, пот, слезы при отладке и написании".

Ты говоришь так, будто при оптимизации кода под CPU нет похожих проблем.
Sic luceat lux!
Re[8]: Думаю впихнуть C++ в веб клиента
От: Артём Австралия жж
Дата: 30.09.23 00:47
Оценка:
Здравствуйте, sergey2b, Вы писали:

S>но если собрать ffmpeg с Intel GPU


Мне интересно Computer Vision

Вот по этой ссылке https://microsoft.github.io/onnxruntime-web-demo/#/yolo

на телефоне модели 2017г с камеры, распознавание моего собакена происходит на GPU чуть быстрее, но ощущается как тормоз: видео замирает на цикл работы нейросетки. На CPU WASM картинка плавная, ничего не замирает, а рамка с надписью незначительно медленнее обновляется. Там есть переключатель на страничке GPU<->CPU.
Re[10]: Думаю впихнуть C++ в веб клиента
От: denisko http://sdeniskos.blogspot.com/
Дата: 02.10.23 11:42
Оценка: 6 (1)
Здравствуйте, Kernan, Вы писали:

K>Ты говоришь так, будто при оптимизации кода под CPU нет похожих проблем.

Количество степеней свободы меньше и возможность сделать феерическую глупость, прочтя 1 раз того же Агнера ( https://www.agner.org/optimize/ ) тоже меньше.
<Подпись удалена модератором>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.