Кастую фанатов C++ на обсуждение.
Контекст — все ML пакеты имеют общую черту. Они под капотом C++. Если у пакета наружу торчит только питон- это шоустопер для веб. Но слинковать подкапотную функцию из C++ можно ручками.
Здравствуйте, reversecode, Вы писали:
R> R>все ML написанные на C++ компиляются в wasm R>так что с js оно сростается вообще прочно и качественно R>хз где вы там питон нашли
Не все. EasyOCR только из питона.
Такой момент: официальная либа opencv тянет все стандартные функции, т.е. утежеляет, однако нестандартные (contrib) нужно для C++ кастомную сборку. Раз так, то возможно, имеет смысл свой полностью кастомный wasm, который залинкует множество либ и tree shacking у эмскриптена отрежет неиспользуемые пути исполнения.
Если либа wasm давно не поддерживается, то новых фичей типа simd в ней не будет. Однако я видел пример, как пакет собирает 2 версии wasm и в рантайме пытается сначала подгрузить ту, что с simd собрана. Разница в перфомансе матричных операций значительная.
Здравствуйте, sergey2b, Вы писали:
S>при включенной поддержки GPU твой AI будет как живой быстро работать
Это зависит от размера модели и размера VRAM в телефоне. Но да, that is the idea.
Здравствуйте, sergey2b, Вы писали:
S>Я не знаю как телефоне S>Но в Intel CPU уже есть gpu те получаеться вариант оптимизации без вложения денег
как бы это вариантом пессимизации не было.
Здравствуйте, sergey2b, Вы писали:
S>Здравствуйте, denisko, Вы писали:
D>>как бы это вариантом пессимизации не было.
S>если не секрет почему вы так думайте ? S>я за последнию неделю столкнулся с двумя ошибками в Intel encoder
1) Чтобы GPU код дал ускорение, надо уметь писать под него. Причем под конкретную модель/архитектуру.
2) Чтобы GPU дал ускорение из него вырезали большую часть работы с памятью и кэшем в пользу алушек и поставили тупо быструю память.
3) Чтобы GPU дал ускорение -- его надо уметь делать.
Пока на все вопросы ответы отрицательные.
1) Вряд ли значимое число людей что-то адаптировало под интеловские встроиши. А даже если адапатировалоа надо аккуратно смотреть бенчмарки.
2) Память используется встроенная и отжатая у ПК, что может привести к узким местам
3) Интел пока не показал, что он умет делать что-то ГПУподобное, предназначенное для общих вычислений.
но если собрать ffmpeg с Intel GPU саппорт енкодер сможет обрабатывать 1.9 раза больше фреймов за сек
если пересобрать opencv с Intel GPU саппорт покрайней мере те операции что нужны мне, становяться на 40% быстрей
Здравствуйте, sergey2b, Вы писали:
S>Здравствуйте, denisko, Вы писали:
S>я скорей всего копал не так глубоко как вы
S>но если собрать ffmpeg с Intel GPU саппорт енкодер сможет обрабатывать 1.9 раза больше фреймов за сек S>если пересобрать opencv с Intel GPU саппорт покрайней мере те операции что нужны мне, становяться на 40% быстрей
Чем в однопотоке? А если включить 4 потока , или сколько у тебя эффективных есть?
Просто лет 5 назад, при написании ГПУшного кода можно было прошибиться настолько, что плохой код замедлял работу, а хороший ускорял раз в 100-300 (при удаче и грамотной раскладке в памяти). А плохой от хорошего без инсайта было отличить почти невозможно. Потом они (нвидишники) вроде навешивали защиту от криворуких, но все равно когда ты пилишь что-то свое, наличие у тебя приблуды под названием GPU означает не "халявная производительность" а "кровь, пот, слезы при отладке и написании".
Здравствуйте, denisko, Вы писали:
D>Просто лет 5 назад, при написании ГПУшного кода можно было прошибиться настолько, что плохой код замедлял работу, а хороший ускорял раз в 100-300 (при удаче и грамотной раскладке в памяти). А плохой от хорошего без инсайта было отличить почти невозможно. Потом они (нвидишники) вроде навешивали защиту от криворуких, но все равно когда ты пилишь что-то свое, наличие у тебя приблуды под названием GPU означает не "халявная производительность" а "кровь, пот, слезы при отладке и написании".
Ты говоришь так, будто при оптимизации кода под CPU нет похожих проблем.
на телефоне модели 2017г с камеры, распознавание моего собакена происходит на GPU чуть быстрее, но ощущается как тормоз: видео замирает на цикл работы нейросетки. На CPU WASM картинка плавная, ничего не замирает, а рамка с надписью незначительно медленнее обновляется. Там есть переключатель на страничке GPU<->CPU.
Здравствуйте, Kernan, Вы писали:
K>Ты говоришь так, будто при оптимизации кода под CPU нет похожих проблем.
Количество степеней свободы меньше и возможность сделать феерическую глупость, прочтя 1 раз того же Агнера ( https://www.agner.org/optimize/ ) тоже меньше.