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

Успешно ли вы разработали, обучили и протестировали приложение машинного обучения (MLA)? Несмотря на проверку в лаборатории, разве MLA не вела себя приемлемо, а может быть, даже потерпела неудачу в производстве?

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

Наш подход

Снижение высоких затрат и бремени проектирования, разработки и развертывания приложений для машинного обучения является предметной областью методологии DataOps, DevOps, MLOps, GitOps, CloudOps… xOps, где Ops означает Операции [1].

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

Мы думаем, что xOps - это ходьба, бег и полет в жизненном цикле MLA.

Начнем с ползания.

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

Управление проектами описывается как подводные камни и передовой опыт.

Управление проектом можно представить в виде графа (ребер и узлов) шагов. Задачи, которые выполняются последовательно в определенном порядке, - это методология управления проектами Waterfall. Примером может служить последовательный порядок проектирования, разработки, тестирования и, наконец, развертывания.

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

Управление проектами MLA представляет собой непрерывный циклический график задач (см. Рисунок 1). Мы также думаем о проекте приложения как о контрольном списке задач, где каждая задача частично выполнена. Некоторые из этих задач могут выполняться параллельно, некоторые зависят от других задач, а некоторые повторяются до тех пор, пока приложение не станет мусорным баком.

Примечание. Мы рекомендуем выполнять задачи итеративно и асинхронно,

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

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

Мы также попали в ловушки разработки и производства на более поздних этапах жизненного цикла проекта MLA. Мы копались (обычно) с лучшими практиками.

Подводные камни и передовой опыт

Ловушка 1: решение для машинного обучения ищет проблему.

Мы поместили эту ловушку на позицию №1, потому что, как консалтинговая группа, в основном в 2016 году и ранее, мы часто добавляли решения по машинному обучению, когда бизнес-задачи этого не требовали.

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

Ловушка 2: нет данных, проблем не выявлено

Не смейтесь, но в первые дни до 2017 года к нам обратился клиент, но ни данных, ни проблем не было.

Мы обнаружили, что и ловушка №1, и ловушка №2 нуждаются в разрешении, прежде чем продолжить.

Лучшая практика 1. Понять бизнес-проблему, определить решение ВПП.

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

Лучшая практика 2: низкая стоимость означает низко висящие фрукты.

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

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

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

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

KPI (ключевые показатели эффективности) - отличный индикатор того, что организация считает важным. Организация может измерять набор показателей работоспособности отдела, процесса и проекта.

Кроме того, опросите заинтересованных лиц и выясните, что их расстраивает больше всего.

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

Лучшая практика 4. Работайте над одной ВПП за раз.

Как только вы определите проблему (а) бизнес-обоснования, предложите одно решение ВПП. Вы можете запускать другие проекты MLA после того, как первая MLA станет измеримым успехом.

Лучшая практика 5. Когда первая ВПП окажется успешной, увеличьте инвестиции, запустив больше проектов ВПП.

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

Ваш спонсор (или вы) может быть очень взволнован прекрасными результатами обучения, тестирования и проверки в лаборатории. Предупредите себя и их о катастрофах прошлого [2].

Ловушка 3. Проектируйте монолитную архитектуру.

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

Лучшая практика 6. Разработайте конвейер компонентов или архитектуру микросервисов.

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

Совет. Компонентная архитектура позволяет вашей команде асинхронно разрабатывать различные части MLA.

Лучшая практика 7. Разработайте план ГНД.

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

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

Лучшая практика 8. Используйте свои лучшие практики в области разработки программного обеспечения.

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

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

Ловушка 4. Изобрести колесо заново.

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

Хорошие художники берут взаймы, великие художники воруют - П абло Руис Пикассо (25 октября 1881 г. - 8 апреля 1973 г.)

Совет: сначала потратьте время на поиск в Google на GitHub, а затем продолжайте работу над проектом.

Совет: Наш опыт показывает, что хорошие статьи на arvix.org реализованы в коде и размещены на GitHub. Фрагменты кода помогают запустить ваш проект.

Ловушка 5: слишком простое решение.

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

Лучшая практика 9: Архитектура приложения для обработки естественного языка (NLP) требует преобразователя.

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

Мы развернули приложение НЛП на основе GLOVE в 2017 году [3]. Трансформатор BERT появился в 2018 году [4]. BERT привел к значительному скачку производительности НЛП с двумя ключевыми улучшениями:

  1. BERT был предварительно обучен на корпусе размером, по крайней мере, на четыре порядка (в 10 000 раз больше), чем наша модель машинного обучения на основе GLOVE;
  2. Количество параметров модели BERT было примерно на два порядка (в 100 раз больше) больше, чем у нашей модели ML на основе GLOVE.

«[…] Масштабирование до экстремальных размеров модели также приводит к значительным улучшениям […]»

(Девлин и др., 2018)

Ловушка 6. Не сообщайте о прогрессе

Независимо от того, насколько успешна ГНД, в ходе реализации проекта будут возникать сбои. Мы нашли 1-2-страничный еженедельный отчет о состоянии проекта для спонсора и менеджера клиентского проекта, даже если они не просили его об этом, что устраняет большинство проблем недопонимания в проекте.

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

Ловушка 7. Вы неправильно поняли бизнес-обоснование.

Независимо от того, где вы находитесь в проекте, ваши требования неверны, и вам нужно остановиться и переоценить. Будьте готовы начать все сначала, иначе вас уволят. Задокументируйте свое новое предлагаемое решение. Жизнь слишком коротка, чтобы продолжать и внедрять решение MLA, в котором есть проблема.

Ловушка 8. Приложение ML не удовлетворяет потребности.

Ловушка 8 похожа на Ловушку 7. Мы перечисляем ее здесь, потому что вы правильно поняли бизнес-обоснование, но бизнес-потребность сейчас имеет низкий приоритет или исчезла. Единственное, что вы можете сделать в этом случае, - это ответить на другую потребность. Будьте готовы уйти.

Ловушка 9. У клиента нет предыдущего опыта или знаний в области машинного обучения.

Раньше мы проводили занятия на тему «Как извлечь выгоду из машинного обучения?». Теперь мы указываем им URL-адреса Awesome-X в блогах Github, Coursera и Medium.

Мы не выбросили слайд-колоду, поскольку мы все еще используем ее время от времени.

Совет: наставляйте разработчиков клиента в методах машинного обучения.

Ловушка 10. Отсутствие инфраструктуры развертывания машинного обучения

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

Можно развернуть собственную инфраструктуру. Apple, Amazon, Goggle, IBM, Zillow и другие многомиллиардные (или триллионные) компании сделали это. Наш ответ - получите облачный аккаунт.

Лучшая практика 10: развертывание в облаке

Google Cloud Platform (GCP) - один из основных вариантов развертывания моделей машинного обучения в облаке. Другие варианты: AWS, Microsoft Azure, Paperspace и т. Д.

Совет: Наш фаворит - бесплатная e GCP Colab [5].

Лучшая практика 11: периодические аудиты решения

Современные изменения в области машинного обучения (SOTA) происходят и ускоряются. Вы не хотите, чтобы вас ошеломил еще один случай типа BERT.

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

Резюме

Мы написали этот блог с точки зрения внешнего консультанта по разработке приложения машинного обучения (MLA) для клиента. Однако все подводные камни и передовые методы применимы в равной степени, и если вы являетесь внутренним сотрудником или командой, которой поручено разработать решение MLA.

Можно утверждать, что первая волна индустрии искусственной промышленности (AI 1.0) потерпела неудачу в конце 1980-х годов. Индустрия AI 1.0 умерла из-за сложности развертывания надежных производственных приложений машинного обучения (MLA).

Индустрия AI 2.0 пользуется успехом благодаря развертыванию и повседневному использованию надежных производственных ГНД. Мы ожидаем, что успех будет расти, если люди используют машинное обучение в своей жизни и даже не осознают этого (несмотря на маркетинг).

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

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

Оставляйте комментарии о своем опыте. Нам нравится их читать.

использованная литература

[1] MLOps: конвейеры непрерывной доставки и автоматизации в машинном обучении.

[2] Microsoft заставляет замолчать свой новый A.I. бот Тай, после того, как пользователи Твиттера учат его расизму .

[3] Перчатка: глобальные векторы для представления слов.

[4] BERT: предварительная подготовка глубоких двунаправленных преобразователей для понимания языка.

[5] Блокноты Colab.