s0me_nickname
@s0me_nickname

Какой язык наиболее актуален для переписывания нейросети с питона перед её размещением на робототехническом устройстве?

Некоторое время назад получил такую информацию, что нейросеть после обучения и перед помещением в продакшн переписывается с питона на некоторый другой язык, для экономии ресурсов (что, зная об умении питона расходовать память, выглядить очень логичным шагом). Из одного надёжного источника мне стало известно, что для этих целей обычно выбирается Golang. Но реальный источник у меня всего только один, и кроме этого в интернете можно найти информацию, что также применяют C++ и не только. Поэтому мне хотелось бы спросить у лиц, владеющих реальной информацией о переписывании обученных нейросетей с питона на что-то другое (если таковые здесь найдутся), о том, какой язык сейчас наиболее актуален для этого? В качестве "продакшена" меня конкретно интересуют робототехнические устройства (роботы-пылесосы, роботы-доставщики и беспилотные автомобили), но также было бы интересно узнать и об использовании описанного приёма и в других предметных областях.
  • Вопрос задан
  • 359 просмотров
Пригласить эксперта
Ответы на вопрос 3
@dmshar
Обученная нейросеть это по сути алгоритм, с помощью которого решается реальная задача. Алгоритм может быть разным, но чаше всего - это в конечном итоге некая математическая формула. Причем живущая не сама по себе, а взаимодействующая с другими компонентами системы (например - с системой управления того-же пылесоса, или системой управления автомобилями из ваших примеров). В свою очередь это предполагает, что эти системы уже функционируют на некоторых процессорах, встроенных в объект. Отсюда ответ - Нейросеть "в режиме продакшн" может и должна быть реализована на том языке, на котором имеется компилятор для вашего процессора. Как правило, это действительно "С", "С++" или "Go", но могут быть варианты. Надо смотреть и решать именно исходя из характеристик целевого вычислительного устройства (процессора).
P.S. Идеальный вариант, конечно, всегда ассемблер соответствующего процессора, как язык, позволяющий писать наиболее эффективные на этапе выполнения решения. Но позволительна такая роскошь с точки зрения наличия соответствующих разработчиков, стоимости, а также скорости разработки - другой вопрос. Наверное Тесла может себе такое позволить. А вот некий маленький стартап - не уверен.
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Это точно не Golang. Поскольку цели и задачи которые ставились перед Golang - сильно отличаются от встраивания в бытовую технику. Это скорее всего C или С++ но вы должны это уточнять.

Вообще с таким сырым ТЗ ничего начинать нельзя. Узнайте хотя-бы модели и названия железок на которых это должно работать.
Ответ написан
Комментировать
SADKO
@SADKO
aka -=SADKO=-
Что значит переписываются? Разберитесь для начала с пайплайном, ну допустим, на питоне у вас описан нейрон и топология сети, хотя это и не то что не быстро, не удобно и как правило на питоне писана лишь обёртка, что гораздо удобнее и гибче. Не суть, результат обучения есть топология, и коэффициенты, которые вполне переносимы, тк нейроны и их топологию можно хоть на ассемблере написать, а коэффициенты просто загрузить готовые.
Проблемы будут с точностью и правилами вычислений, которые могут различаться в системе обучения и на целевой платформе. И самый простой способ их избежать, учитывать особенности целевой платформа в процессе обучения.
Ну или стать настоящим сатанистом, ведь сайенс он не в инжениринге данных, а именно в понимании математики всей этой кухни. Открывающей широкие возможности оптимизации и извлечения данных из обученных сетей!
Например можно обучать на столько глубокие сети, что публичные средства уткнутся в затухании сигналов и шумах захлебнутся, а потом оптимизировать это дело до возможности гонять в обычном GPU окружении без значимых потерь качества.
С контроллерами та-же шляпа, мне приходилось переносить даже на PIC с ATmega-ми, на сях писать-то можно что угодно, и есть библиотеки которые сделают вам математику, вопрос скорости и размера ;-) И по факту, что-бы реально делать такие фокусы, приходится делать свою математику, а что бы её делать, с ней приходится разбираться весьма фундаментальненько.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы