Эта статья была первоначально написана Jakub Czakon и размещена в блоге Neptune.

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

Мы задались вопросом: «Каковы лучшие инструменты, библиотеки и фреймворки, которые используют стартапы машинного обучения?» чтобы справиться с этой задачей.

И чтобы ответить на этот вопрос, мы попросили 41 стартап машинного обучения со всего мира.

Результат?

Тонна отличных советов, которые мы сгруппировали в:

  • Методология
  • Настройка разработки программного обеспечения
  • Фреймворки машинного обучения
  • млн операций в секунду
  • Непредвиденный

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

Хорошая методика – это ключ

Инструменты настолько сильны, насколько сильна методология, которая их использует.

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

Кай Милденбергер из psyML говорит, что:

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

Я думаю, что четкое понимание того, для чего вы хотите использовать свои инструменты (и что они вам действительно нужны), — это самый первый шаг.

Тем не менее, важно знать, что есть и что люди в подобных ситуациях успешно используют.

Давайте погрузимся прямо в это!

Инструменты разработки программного обеспечения — основа команд машинного обучения.

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

Команды машинного обучения используют различные инструменты в качестве IDE. Многие команды, такие как SimpleReport и Hypergiant, используют Jupyter Notebooks и Jupyter Lab с его экосистемой NB Extensions.

Jupyter Notebook очень удобен для быстрых экспериментов и визуализации, особенно при обмене идеями между несколькими членами команды. Поскольку мы используем Tensorflow, Google Colab — это естественное расширение, упрощающее обмен нашим кодом.— говорит Вэньси Чен из Juji.

Также были упомянуты различные варианты Jupyter. Deepnote (размещенное решение Jupyter Notebook) любима командой Intersect Labs за свои возможности машинного обучения, в то время как Google Colab является естественным расширением, упрощающим обмен нашим кодом для команды Джуджи.

Другие выбирают более стандартные IDE для разработки программного обеспечения. Среди них Pycharm, отмеченный Ором Изчаком из Hotelmize как лучшая среда разработки Python, и код Visual Studio, используемый Scanta за его простоту подключения к Azure и многие ML- на основе предоставленных расширений упоминались чаще всего.

Для команд, использующих язык R, такой как SimpleReport, RStudio была явным победителем, когда дело доходит до выбора IDE. Как упоминает Кентон Уайт из Advanced Symbolics

«В основном мы используем R + RStudio для анализа и построения моделей. Рабочая лошадка для нашего моделирования ИИ — это VARX для прогнозов временных рядов. “

Когда дело доходит до управления версиями кода, Github является явным фаворитом. Как отмечает Даниэль Ханчен из Umbra AI:

«Github (теперь бесплатный для всех команд!!) с его сверхнадежной системой контроля версий и простой функцией совместного использования репозитория очень полезен для большинства команд машинного обучения».

Среди самых популярных языков у нас есть Python, R и, что интересно, Clojure (упомянутый Wenxi Chen из Juji).]

Что касается настройки среды/инфраструктуры, то примечательные упоминания стартапов машинного обучения:

Ооочень много фреймворков машинного обучения

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

За игру с табличными данными чаще всего упоминали Pandas.

Дополнительным преимуществом использования Pandas, отмеченным Немо Д'Криллом, генеральным директором Sigma Polaris, является:

«Я бы сказал, что Pandas, вероятно, является одним из самых ценных инструментов, особенно при совместной работе с внешними разработчиками над различными проектами. Наличие всех файлов данных в виде фреймов данных между командами и отдельными разработчиками значительно упрощает совместную работу и избавляет от лишних хлопот».

Интересной библиотекой, упомянутой разработчиком программного обеспечения из Hotelmize, была dovpanda — библиотека расширений python для panda, которая дает вам представление о вашем коде и данных panda при работе с panda.

Когда дело доходит до визуализации, matplotlib чаще всего используется такими компаниями, как Trustium, Hotelmize, Hypergiant и другими.

Сюжет также был распространенным выбором. Как поясняют разработчики из Wordnerds, для отличной визуализации, чтобы данные были понятны и хорошо выглядели. Dash, инструмент для создания интерактивных информационных панелей поверх диаграмм Plotly, был рекомендован Теодоросом Яннакопулосом из Behavioral Signals для команд машинного обучения, которым необходимо представлять свои аналитические результаты в удобной для пользователя форме.

Для более стандартных задач машинного обучения большинство команд, таких как Wordnerds, Sensitrust или Behavioral Signals, используют Scikit-Learn. Команда машинного обучения из iSchoolConnec объясняет, почему это такой замечательный инструмент:

«Это один из самых популярных наборов инструментов, используемых исследователями, инженерами и разработчиками в области машинного обучения. Легкость, с которой вы можете получить то, что вы хотите, удивительна! scikit-learn предоставляет вам все возможности, от разработки функций до интерпретируемости».

По правде говоря, Pandas и Sklearn — рабочие лошадки команд машинного обучения по всему миру.

Как говорит Майкл Филлипс, Data Scientist из Numerai:

«Современные библиотеки Python, такие как Pandas и Scikit-learn, содержат 99 % инструментов, необходимых команде машинного обучения для достижения успеха. Несмотря на простоту, эти инструменты обладают необычайной мощью в руках опытного специалиста по данным».

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

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

Многие команды, такие как Wordnerds и Behavioral Signals, выбирают PyTorch.

Команда экспертов по машинному обучению из iSchoolConnect рассказывает нам, почему так много практиков и исследователей машинного обучения выбирают PyTorch.

«Если вы хотите погрузиться в воду, PyTorch — правильный инструмент для вас! Сначала потребуется время, чтобы привыкнуть к нему, но как только вы освоитесь с ним, ничего подобного не будет! Библиотека даже оптимизирована для быстрого обучения и оценки ваших моделей машинного обучения».

Но по-прежнему лидируют по популярности Tensorflow и Keras.

Большинство команд, таких как Strayos и Repetere, выбирают его в качестве своей среды разработки машинного обучения. Сидар Милаццо из Trustium сказал:

«Конечно, Tensorflow. Особенно с 2.0! Стремительное исполнение было тем, что действительно нужно TF, и теперь оно здесь. Я должен отметить, что когда я говорю «tensorflow», я имею в виду «tensorflow + keras», поскольку keras теперь встроен в TF».

Также важно отметить, что вам не нужно выбирать один фреймворк и исключать другие.

Например, основатель Мелодии Омид Арьян сказал, что:

«Инструменты, которые принесли нам наибольшую пользу, — это TensorFlow, PyTorch и старые инструменты для обучения Python».

Есть несколько популярных фреймворков для более специализированных приложений.

В области обработки естественного языка мы слышали:

  • Huggingface: это самая продвинутая и высокопроизводительная библиотека НЛП из когда-либо созданных. Это первый в своем роде проект, в котором исследователи вносят непосредственный вклад в масштабируемую библиотеку НЛП. Он отличается от других подобных инструментов тем, что инструменты производственного уровня доступны через несколько месяцев после публикации новой модели», — говорит Бен Ламм, генеральный директор Hypergiant.
  • "Spacy — это очень крутой набор инструментов для работы с естественными языками. NLTK на сегодняшний день является самым популярным, и я, безусловно, использую его, но spacy делает много вещей, которые NLTK не может делать так хорошо, например, определение корней и анализ зависимостей». упоминает Седар Милаццо, генеральный директор Trustium
  • «Gensim также хорош для векторов слов и векторов документов, и я считаю, что он не так популярен», добавляет Седар Милаццо.

В компьютерном зрении:

Также стоит отметить, что не каждая команда самостоятельно внедряет модели глубокого обучения.

Как говорят Юлия Грибанова и Лэнс Сейдман из Мунхрона, сейчас есть API-сервисы, где часть (или всю) работу можно отдать на аутсорсинг:

«Комплект Google ML в настоящее время является одним из лучших простых в использовании инструментов, который позволяет мобильным разработчикам легко встраивать службы ML API, такие как распознавание лиц, маркировка изображений и другие элементы, которые Google предлагает, в приложения для Android или iOS. Но, кроме того, вы также можете использовать свои собственные облегченные модели TF (TensorFlow) для проведения экспериментов, а затем запускать их в производство с помощью Google ML Kit».

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

Как поделилась Наурин Махмуд из Meshcapade:

«В прошлом некоторыми важными библиотеками автодиффа, которые позволили нам запустить несколько совместных оптимизаций и при этом помогли нам создать некоторые основные технологии, которые мы используем до сих пор, были Chumpy и OpenDR. Теперь есть более интересные и быстрые решения, такие как Pytorch и TensorFlow».

Когда дело доходит до развертывания модели, Патрисия Тейн из Private AI упоминает tflite, flask, tfjs и coreml в качестве предпочтительных фреймворков. Она также говорит, что для них очень важна визуализация моделей, и для этого они используют Нетрон.

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

Вот тут-то и появляется MLOps.

MLOps становится все более важным для стартапов машинного обучения

Вам может быть интересно, что такое MLOps или почему вас это должно волновать.

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

Жан-Кристоф Петкович, технический директор Acerta, предоставил нам чрезвычайно подробное объяснение того, как их команда машинного обучения подходит к MLOps. Он был настолько хорош, что я решил поделиться им (почти) полностью:

«Я думаю, что большинство интересных инструментов, которые получат более широкое распространение в 2020 году, сосредоточены на MLOps. В прошлом году был большой толчок к созданию этих инструментов, и в этом году мы собираемся выяснить, кто станет победителем.

На мой взгляд, MLflow лидирует в отслеживании экспериментов, артефактов и результатов. Многое из того, что мы создали для этой цели, является расширениями функциональности MLflow, чтобы включить больше отслеживания данных, аналогично тому, как DVC отслеживает данные.

Другими громкими именами в MLOps являются Kubeflow, Airflow и TFX с Apache Beam — все инструменты, предназначенные для сквозного захвата рабочих процессов и конвейеров обработки данных.

Существует несколько составляющих полной системы MLOps:

  • Вы должны иметь возможность создавать артефакты модели, содержащие всю информацию, необходимую для предварительной обработки данных и получения результата.
  • После того как вы сможете создавать артефакты модели, вы должны иметь возможность отслеживать код, который их создает, и данные, на которых они обучались и тестировались.
  • Вам нужно отслеживать, как связаны между собой все эти три элемента: модели, их код и их данные.
  • После того, как вы сможете отслеживать все эти элементы, вы также можете пометить их как готовые к промежуточному и производственному использованию и запустить их через процесс CI/CD.
  • Наконец, чтобы фактически развернуть их в конце этого процесса, вам нужно каким-то образом развернуть сервис на основе этого артефакта модели.

Когда дело доходит до отслеживания, мы выбираем MLflow, проверенный временем в Асерте, так как несколько наших сотрудников уже использовали его в своих личных рабочих процессах, и теперь это де-факто инструмент отслеживания наших данных. ученые.

Для отслеживания конвейеров данных или самих рабочих процессов мы в настоящее время разрабатываем для Kubeflow, поскольку мы уже используем Kubernetes, что упрощает развертывание, а наша внутренняя инфраструктура конвейерной обработки моделей хорошо сочетается с концепцией компонентов Kubeflow.

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

Все эти инструменты должны быть на месте. Я знаю, что во многих местах есть собственные домашние решения этой проблемы, но я думаю, что в этом году мы увидим гораздо больше стандартизации машинного обучения. приложений.”

Эмили Крюгер из Каскада, которая случайно оказалась стартапом, создающим решение для магазина функций.

добавляет:

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

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

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

Что касается более крупных платформ, часто упоминались два имени:

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

Как правило, инструменты отслеживания экспериментов отслеживают метрики и гиперпараметры, но, как отмечает Джеймс Каплан из MeetKai:

«Наиболее полезными для нас типами инструментов машинного обучения являются все, что помогает справляться с регрессиями модели, вызванными чем угодно, кроме архитектуры модели. Большинство из них — это инструменты, которые мы создали сами, но я предполагаю, что существует множество существующих вариантов. Нам нравится рассматривать матрицы путаницы, которые можно визуально отличить в таких сценариях, как:

– новые данные, добавленные в обучающий набор (и провидение этих данных)

– конфигурации квантования

– обрезка/дистилляция

Мы обнаружили, что возможность отслеживать эффективность при добавлении новых данных гораздо важнее, чем просто отслеживать эффективность по гиперпараметрам самой модели. Это особенно актуально, когда наборы данных растут/изменяются намного быстрее, чем конфигурации модели»

Говоря об обрезке/дистилляции, Мальте Питч, соучредитель deepset, поясняет, что:

«Мы видим растущую потребность в инструментах, которые помогают нам профилировать и оптимизировать модели с точки зрения скорости и использования оборудования. С ростом размера моделей НЛП становится все более важным повысить эффективность обучения и логического вывода.

Хотя мы все еще ищем здесь идеальный инструмент, нам очень пригодились pytest-benchmark, NVIDIA Nsight Systems и kernprof».

Еще одним интересным инструментом для бенчмаркинга обучения/вывода является MLPerf, предложенный Антоном Лохмотовым из Dividiti.

Экспериментирование с моделями, несомненно, очень важно, но представление моделей перед конечными пользователями — это то, где происходит волшебство (для большинства из нас). В связи с этим Роза Лин из Tolstoy упомянула об использовании streamlit.io, который является отличным инструментом для простого создания веб-приложений модели машинного обучения.

Ценное предупреждение об использовании решений, ориентированных на машинное обучение, исходит от Джанвито Пио, соучредителя Sensitrust:

«Существуют также такие инструменты, как Knife и Orange, которые позволяют проектировать весь конвейер с помощью перетаскивания, а также инструменты AutoML (см. AutoWEKA, auto-sklearn и JADBio), которые автоматически выбирают наиболее подходящая модель для конкретной задачи.

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

Непредвиденный

Хорошо, когда я начал работать над этим, некоторые ответы, такие как PyTorch, Pandas или Jupyter Lab, были тем, что я ожидал.

Но один ответ, который мы получили, был действительно нестандартным.

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

Кристофер Пенн из Trust Insights предложил ML-командам использовать довольно интересный инструмент:

«Wetware — комбинация аппаратного и программного обеспечения, которая находится между вашими ушами, — это самый важный, самый полезный и самый мощный инструмент машинного обучения, который у вас есть.

Слишком много людей надеются, что искусственный интеллект — это волшебная палочка, которая решает все практически без участия человека. Обратное верно; ИИ требует большего контроля и контроля, чем когда-либо, потому что нам не хватает информации о сложных моделях.

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

Итак, программное обеспечение — человек в курсе — самый полезный инструмент в 2020 году и в обозримом будущем».

Наша точка зрения

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

Итак, мы видим:

… и поскольку это наши клиенты, естественно, они используют Neptune-Notebook для отслеживания исследований в Jupyter Notebooks и Neptune для отслеживания экспериментов и организации своих проектов машинного обучения.

Эта статья изначально была написана Jakub Czakon и размещена в блоге Neptune. Там вы можете найти более подробные статьи для специалистов по машинному обучению.