Автор: Майкл Карраз.

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

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

Доля разработчиков машинного обучения, которые пишут код своего приложения или проекта локально на ноутбуке или настольном компьютере, снизилась с 61 % до 56 % в период с середины по конец 2019 года. Хотя падение на пять процентных пунктов является значительным , большинство разработчиков продолжают запускать свой код локально. Неудивительно, что любители делают это чаще, чем профессиональные разработчики машинного обучения (65 % против 51 %).

Напротив, за тот же период мы наблюдаем небольшое увеличение доли разработчиков, которые развертывают свой код в общедоступных облаках или на мейнфреймах. В этой волне опроса мы представили мультиоблако как новый возможный ответ на вопрос: «Где выполняется код вашего приложения/проекта?», чтобы определить разработчиков, которые использование нескольких общедоступных облаков для одного проекта.

Как оказалось, 19% разработчиков машинного обучения используют мультиоблачные решения (см. шпаргалку по мультиоблачным технологиям здесь) для развертывания своего кода. Вероятно, вводя эту новую опцию, мы недооцениваем реальное увеличение использования общедоступного облака для выполнения кода; некоторые респонденты могли выбрать мультиоблако вместо общедоступного облака. При этом становится все проще и дешевле запускать несколько экземпляров и запускать модели машинного обучения в арендованных облачных инфраструктурах. На самом деле, большинство ведущих решений для облачного хостинга предоставляют бесплатные среды для ноутбуков Jupyter, которые не требуют настройки и полностью работают в облаке. Google Colab, например, переустанавливается с большинством библиотек машинного обучения и выступает в качестве идеального места, где вы можете подключить и работать для создания решений машинного обучения, где зависимость и вычисления не являются проблемой.

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

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

Разработчики, занимающиеся исследованиями в области машинного обучения/ИИ, с большей вероятностью запускают код локально на своих компьютерах (60%), чем другие разработчики машинного обучения (54%); в основном потому, что они, как правило, работают с меньшими наборами данных. С другой стороны, разработчики, отвечающие за развертывание моделей, созданных членами их команды, или разработчики, создающие платформы машинного обучения, с большей вероятностью будут запускать код в решениях облачного хостинга.

Преподаватели ML/AI или науки о данных также чаще, чем в среднем, используют облачные решения, в частности, гибридные или мультиоблачные. Следует отметить, что большая часть разработчиков, преподающих ML/AI, по-разному вовлечены в науку о данных и ML/AI. Например, 41 % используют сторонние API, а 37 % обучают и внедряют алгоритмы машинного обучения в свои приложения или проекты. Они не обязательно используют гибридные и мультиоблачные архитектуры в рамках своей преподавательской деятельности.

Тип платформ или библиотек машинного обучения, которые используют разработчики машинного обучения, является еще одним индикатором работы кода в архитектуре облачных вычислений. Разработчики, которые в настоящее время используют фреймворки для больших данных, такие как Hadoop и особенно Apache Spark, с большей вероятностью будут использовать общедоступные и гибридные облака. Разработчики Spark также чаще используют частные облака для развертывания своего кода (40% против 31% других разработчиков машинного обучения) и локальные серверы (36% против 30%).

Разработчики глубокого обучения чаще запускают свой код в облачных экземплярах или на локальных серверах, чем разработчики, использующие другие платформы/библиотеки машинного обучения, такие как популярная библиотека Python Scikit-learn.

Однако существует четкое различие между разработчиками, использующими Keras и TensorFlow — популярные и наиболее доступные библиотеки глубокого обучения для Python — по сравнению с теми, кто использует Torch, DeepLearning4j или Caffe. Первые с меньшей вероятностью будут запускать свой код на чем-либо, кроме своих ноутбуков или настольных компьютеров, в то время как вторые значительно чаще используют гибридные и мультиоблачные среды, локальные серверы и мейнфреймы. Эти различия в основном связаны с опытом разработчиков в области машинного обучения; например, только 19 % пользователей TensorFlow имеют опыт работы более 3 лет по сравнению с 25 % и 35 % разработчиков Torch и DeepLearning4j соответственно. Torch определенно лучше всего подходит для разработчиков машинного обучения, которые заботятся об эффективности, благодаря простому и быстрому языку сценариев LuaJIT и базовой реализации C/CUDA.

Аппаратные архитектуры чаще используются разработчиками машинного обучения, работающими с распознаванием речи, сетевой безопасностью, перемещением роботов и биоинженерией. Эти разработчики также с большей вероятностью будут использовать продвинутые алгоритмы, такие как генеративно-состязательные сети, и работать с большими наборами данных, отсюда и потребность в дополнительной вычислительной мощности. Точно так же разработчики, которые в настоящее время используют библиотеки машинного обучения C++, более активно используют аппаратные архитектуры, отличные от ЦП (38% против 31% других разработчиков) и мэйнфреймы, предположительно потому, что они также заботятся о производительности.

Наконец, существует четкая корреляция между тем, где выполняется код разработчиков машинного обучения, и этапами рабочего процесса машинного обучения/обработки данных, в котором они участвуют. локальные серверы, в то время как те, кто занимается развертыванием моделей, более активно используют общедоступные облака для развертывания своих решений машинного обучения. 31 % разработчиков, участвующих во всех этапах рабочего процесса машинного обучения — от начала до конца — запускают код на собственных решениях, по сравнению с 26 % разработчиков, которые этого не делают. Они также с большей вероятностью будут запускать свой код в общедоступных и гибридных облаках.

Напротив, разработчики, занимающиеся визуализацией или исследованием данных, как правило, запускают свой код в локальных средах (62% и 60% соответственно), даже в большей степени, чем разработчики машинного обучения, участвующие в других этапах рабочего процесса обработки данных (54%).

В 18-м выпуске Developer Economics приняли участие более 17 000 респондентов из 159 стран мира. Таким образом, серия Экономика разработчиков продолжает оставаться самым глобальным независимым исследованием мобильных, настольных компьютеров, промышленного IoT, бытовой электроники, сторонних экосистем, облачных вычислений, сети, игр, AR/VR и машинного обучения, а также разработчиков и специалистов по обработке и анализу данных вместе взятых из когда-либо проводившихся. Полный бесплатный отчет можно прочитать здесь.

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