Проиллюстрирован мемами

Итак, вы занимаетесь ML-проектом! Возможно, вы хотите создать систему обнаружения объектов для приложения для робототехники или добавить систему рекомендаций в свое веб-приложение.

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

Лидеры (инженерные менеджеры, технические лидеры, менеджеры по продуктам и т. Д.) Должны думать о том, как создать правильную структуру команды, чтобы сделать проекты ML успешными. Вот несколько уроков, извлеченных из нашего собственного опыта создания и масштабирования команд машинного обучения!

Создание MVP (0–2 человека)

Группа менеджеров решила, что это «машинное обучение» довольно интересно и заслуживает некоторого исследования. Теперь они вкладывают время и человеческие ресурсы в запуск проекта машинного обучения. Цель состоит в том, чтобы запустить и запустить MVP, а затем оценить, стоит ли вкладывать больше ресурсов в эту область.

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

Будь проще!

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

Почти всегда лучше использовать то, что уже построено. Вытяните предварительно обученную модель из tensorflow / models и запустите ее на своих данных. Если у вас есть больше времени, настройте готовую модель на основе данных с открытым исходным кодом, аналогичных вашей предметной области. Еще лучше использовать такую ​​службу, как Google AutoML, которая занимается настройкой модели и обучением за вас.

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

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

Строительство трубопровода (2–10 человек)

MVP показал некоторые надежды! (классное демонстрационное видео, некоторые показатели, показывающие, что это лучше, чем статус-кво, и т. д.) Боссы решили вложить больше ресурсов в этот проект машинного обучения, чтобы довести его до производства.

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

  • Инструменты маркировки для отправки данных операционным группам для визуализации, маркировки и обеспечения качества (если ваша задача требует маркировки данных).
  • Системы управления наборами данных для хранения, визуализации и контроля версий данных и этикеток.
  • Конвейеры данных для предварительной обработки данных, извлечения функций и т. д. из больших наборов данных.
  • Инфраструктура обучения для быстрого обучения моделей на больших наборах данных.
  • Инфраструктура тестирования и проверки для измерения производительности модели.
  • Оптимизация развертывания для быстрого выполнения выводов модели в производственной среде.
  • Мониторинг, чтобы убедиться, что модель работает правильно в процессе производства.

Численность персонала на этом этапе все еще достаточно мала, чтобы удовлетворять правилу двух пицц Amazon. Обычно всей командой может без особых проблем управлять один менеджер / руководитель. Тем не менее, есть еще несколько передовых методов построения правильного состава команды.

Масштабируйте команду

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

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

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

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

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

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

Продолжайте развертывать новые модели

Большинство команд склонны придерживаться образа мышления: «Давайте создадим что-то, что работает нормально, а затем перейдем к следующей самой большой проблеме». Это означает, что команда обучит модель, развернет ее и оставит. 6 месяцев спустя в производстве возникает пожар, который требует переобучения модели, только для того, чтобы команда обнаружила, что код обучающего конвейера теперь сломан, что требует дополнительных инженерных усилий, чтобы вернуть его к жизни. Это называется «модельной гнилью».

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

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

Этот рабочий процесс очень хорошо описан в выступлениях Андрея Карпати о концепции Operation Vacation, и он чрезвычайно ценен, поскольку позволяет команде масштабировать улучшение модели с помощью операций и машинного времени, а не времени разработки!

Используйте отличные инструменты

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

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

Несколько примеров:

  • Такие компании, как Scale, Labelbox, Dataloop, Hive и Cloudfactory, позволяют приобретать отличную инфраструктуру для этикетирования с управляемой операционной командой.
  • Такие фреймворки, как Determined AI, позволяют выполнять обучение распределенной модели без необходимости развертывать собственный фреймворк или иметь дело с низкоуровневыми API-интерфейсами Tensorflow / Pytorch.
  • Предложения с открытым исходным кодом, такие как Apache Beam и Apache Spark (с размещенными средами выполнения в Google Dataflow и Databricks), упрощают масштабирование обработки данных в кластере машин. Такие предложения, как Roboflow, помогают с более специфичными для домена операциями ETL (например, в компьютерном зрении).

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

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

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

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

Спасибо, что остаетесь с нами до сих пор! Часть 2 исследует, как перейти от 10 человек до 100 человек и масштабировать одну команду машинного обучения в организацию, состоящую из множества команд.

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