Как стать автором
Обновить

Комментарии 22

Ого. Использование матлаба в 2022. Я думал он остался в 2015 и особо не развивается.

Не понимаю, правда, почему вы бенчмаркаете pytorch|tensorflow без оптимизации под железо с оптимизированным matlab'ом…

Кстати, в 2016 появился LiveScript (aka Live Editor), стало возможно работать в MATLAB в стиле Jupyter Notebooks. До этого – только скрипты и сторонний код для нейронок.

Если изучать быстродействие в вакууме, то Вы правы, сравнение не безупречно. Но если изучать количество телодвижений от стадии инженер+ТЗ+железка до прототипа со встроенной нейросеткой... То понятно что для всего нужен свой инструмент.

Не очень понимаю про какие телодвижения вы говорите.
Есть Torch-TensorRT | TF-TRT, где даже ничего менять не надо.
Есть инструменты инференса чистого. ONNX-Runtime (а вот тут я ещё десяток разбираю — habr.com/ru/company/recognitor/blog/524980 ), которые не тащат с собой кучу дополнительного кода + 1-2 строчками на разных платформах используются.

Крутая статья, спасибо! Забавно, как много стойких стандартов создаёт MS. И похоже что у каждой компании есть свой отдельный ONNX-фреймворк.

Матлаб был в университетской среде потому что на нём как-то могли писать студенты. Первые лекции по ML с Coursera были еще как-то в Октаве потом всё ушло в Jupyter Notebooks, но мы уже тогда спрыгнули на питон. Инженер + ТЗ + железка это очень часто tiny YOLO на ComputeModule с чем справится и интерн (a потренирует в Colab). Если задача сложная и более научная, например анализ / классификация RF сигналов и надо самим думать и пялиться много на графики и т.п. то в команде прижился R и SciPy, к которому все прикручивается сильно проще и из которого потом можно так же просто экспортировать. В итоге в нашей научной команде, не настоящих программистов, ответа на вопрос зачем плаить зa лицензию Маталаба мы не нашли.

Спасибо за дискуссию! Естественно, интересно было бы больше почитать про ваш стэк и задачи. Если комбинация инструментов эффективно решает ваши проблемы, то прекрасно.

Лично для меня MATLAB чуть ли не лучшее воспоминание среди институтских инструментов. Критерий: сколько всего удавалось сделать за один присест в одном инструменте.

У меня было обратное впечатление - столько всего кликать кнопками, где можно нормально кодом обойтись с контролем версий.

Но да, как визуальная среда для стендов - прикольно.

Конечно, ко всякой роли своя тулза... Мне кажется, если удается свести сложный проект к конфигурированию off-the-shelf компонентов, это успех. Для этого, и для экспериментов с новыми для себя методами, лучше иметь графическую среду. Да и в матлабе есть CLI и ноутбуки (Live Script).

Или... nano – наше всё? :)

Ноутбуки не видел, наверное тогда еще не сделали, может и норм. Но тоже не для прода.

Для меня главные два условия прода - можно закомитить в vcs и переиспользовать в соседних проектах.

MatLab 3.5 (DOS) был удобен.

Представить только, то можно было делать на 8088. Согласно WinWorld, MATLAB тогда мог работать на этом:

Могу подтвердить, что мог. Где-то в 1989-м в институте появилась первая и единственная на тот момент PC XT то ли 8086, то ли 8088 с янтарным(!!!) дисплеем Hercules, на которой один или два препода развлекались в матлабе. Остальные на них смотрели как на какое-то чудо, потому что вообще не знали, с какого боку подходить к этому компу

И что самое главное - работал

Интересная статья спасибо! Попробуйте ради интереса сравнить еще и с ONNX на CPU и GPU, благо сейчас можно конвертнуть модель с торча за пару строчек кода. В своих экспериментах мне удавалось увеличить скорость интерференса в 2-2,5 раза!

Оказывается, код нашей сетки выполняется в MATLAB на CPU чуть быстрее, чем в других фреймворках. Бенчмарк для CPU построен на Intel Xeon 3.6 GHz – такие солидные частоты редко встречаются на борту. На более приземленном CPU, возможно, код будет вести себя слегка иначе.

Xeon E-22XX, E-23XX, W-22XX - только вот ведь загвоздка... Теперь их тютю.

О том и речь. :) Простые готовые нейросетки таргетированы либо не сервисы, и там неважно какое оборудование, оно в облаке. Или на роботов, и тогда оборудование будет поскромнее.

Насколько скромнее? Будущее покажет. ) Под Arduino тоже можно сгенерировать встроенный код из MATLAB.

К слову вспомнил, что в начале волны IoT люди красноречиво переживали, что им страшновато что в интернете окажутся миллиарды глупых 8-битных процессоров. Они неспособны на криптографию, на нормальную фильтрацию, на обучение... Пожалуй, это наш нижний предел, 8-битники почти не стоит использовать. Что вы думаете на этот счёт?

Интересно было прочитать, не думал что задачи распознавания изображений так легко теперь решаются.

Когда такие задачи выполняются для заказчиков, то заказчику всё равно чтобы работать с продуктом нужно покупать лицензию на Матлаб? Она достаточно дорога, особенно для комерческой организации. Потому, даже при медлительности, факт бесплатности PyTorch и Tensorflow делает их более привлекательными, имхо.

А что в отношении интегрирования таких программ по распознованию изображений в другие проекты? я помню, у Матлаба это было не просто. PyTorch - наверное будет проще, т.к. написан на питоне. В отношении Tensorflow вообще не знаю.

Можете сгенерировать из MATLAB-кода независимую DLL, тогда вашу разработку можно будет запустить на стороне заказчика без MATLAB.

К слову о скорости, здесь реализации PyTorch и TF запущены без каких-либо ухищрений, прямо из библиотеки. Наверное их можно ускорить.

Относительно интеграции с другими инструментами – если не получается импортировать граф нейросети в MATLAB (через Deep Learning Toolbox) и посмотреть/поработать с ним в виде коробочек, можно по крайней мере запускать внешний код на Python, так что интеграция есть и разная.

MATLAB - это воплощение удобства и универсальности. Мне пока не доводилось делать готовые программные продукты в матлабе, но мне часто приходилось тестировать различные алгоритмы, и ML в том числе. При этом, когда дело доходило до обучения нейросетей, мне приходилось сталкиваться и с pytorch. В итоге, за годы своей работы я сделал вывод, о том, что матлаб - это топчек, хотя у него есть определённые минусы.

Во-первых, главное достоинство матлаба - это то, что не надо искать никаких библиотек и париться с их установкой. Голый питон сам по себе может не много, и на каждый чих надо искать какую-то библиотеку. Плюс при работе в питоне возникает адская боль, когда нужно собрать окружение и согласовать все версии библиотек так, чтобы всё заработало. В матлабе такого нет. Там в из коробки есть всё, что нужно, и ты просто берёшь и пользуешься. Во-вторых, код получается более лаконичным за счёт возможностей синтаксиса и бесконечного набора встроенных функций. Практически для любого действия есть готовая функция, надо только в хелпе найти. Кстати, хелп тоже топ. Там и подробное описание, и примеров куча, и описание теории, если надо. В-общем чудо, а не фреймворк.

Теперь, справедливости ради, надо и о недостатках поговорить. Одним из них является меньшее количество возможностей в плане того, что можно делать непосредственно с нейросетями. У того же торча возможностей больше. Буквально недавно столкнулся с тем, что мне нужно было обучить сеть классификации сигналов, но исходный вариант работал с сигналами произвольной длительности, а реализуемая сеть начиналась со свёрточных слоёв. Свёрточному слою в общем-то без разницы, какой там размер у входных данных, и в торче первым указывается просто свёрточный слой, и никаких проблем нет. В матлабе же так не прокатит. Там на входе должен быть специальный входной слой, который что-то там нормирует, и параметры поступающих на его вход данных фиксируются. И без него никак. Это делает невозможным реализацию такого рода сетей в матлабе, что очень печально. Так же нет возможности замораживать какие-то слои и не обучать всю сеть целиком.

Подводя итог, могу написать, что для себя я решил, что любую задачу я буду решать в первую очередь в матлабе, потому что это быстро и удобно, а другими языками программирования буду пользоваться только тогда, когда в матлабе не найдётся чего-то, что нужно для решения задачи.

Спасибо за красноречивый отклик!

Я попрошу более опытных коллег изучить проблему, но первое, что напрашивается – просто добавить паддинг до максимальной длины сигнала. Вход в 2D конволюции тоже обычно нужно приводить к какому-то заданному размеру. Может быть я не всё правильно понял? Рекуррентная сеть может работать с бесконечно длинным сигналом, про CNN я такого не помню.

Очередной пост из серии "XXX лучше, чем YYY, потому что XXX я знаю лучше, чем YYY"

главное достоинство матлаба - это то, что не надо искать никаких библиотек и париться с их установкой

Иными словами, главный недостаток питона в том, что, будучи установленным из некоего установочного файла, он не содержит чего-то, что в матлабе некоторой версии существует из коробки

По мне, это неубедительнейший из доводов. К питону есть такие штуки, как менеджеры среды, которые позволяют в один присест ставить комплект со всеми необходимыми плюшками

Практически для любого действия есть готовая функция, надо только в хелпе найти

Интересно, много ли есть матлабовских функций, для которых нет готовых питонячьих аналогов? А что насчёт проверить в обратную сторону?

А вот что хелпа в питоне нет - на это возразить, конечно, нечего

Разве это немного не то же самое, что сравнивать MS Office и OpenOffice+LaTeX? Взял такой пример потому что такую аналогию поймёт более широкий круг. В красном углу ринга унифицированный корпоративный стандарт язык+IDE+редактор схем, нацеленный на бесшовный обмен с контрагентами. В синем углу связка из нескольких мощнейших бесплатных инструментов которые мы все очень любим. StackOverflow есть про оба инструмента.

В продакшене придётся работать на том, что дадут. А в зоне личных предпочтений всё зависит от культуры, кому что интереснее. Если инженерный ВУЗ давал MATLAB, то есть приятные воспоминания о бесшовной интеграции диаграмм и кода. А для народа из ComputerScience, наверное, это не так важно.

Всё равно ведь лучше Python & MATLAB & годик в каком-нибудь крупном интересном проекте.

Зарегистрируйтесь на Хабре , чтобы оставить комментарий