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

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

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

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

Когда использовать машинное обучение?

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

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

Чтобы понять, что может сделать ML, давайте рассмотрим, что обычно делают решения ML:

Машинное обучение — это подход к (1) изучению (2) сложных шаблонов из (3) существующих данных и использованию этих шаблонов для (4) прогнозов на (5) невидимых данных.

  1. Обучение: система способна учиться

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

2. Сложные шаблоны: есть шаблоны, которые нужно изучать, и они сложны

Решения машинного обучения полезны только тогда, когда есть шаблоны для изучения.

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

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

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

3. Существующие данные: данные доступны или их можно собрать

Поскольку машинное обучение учится на данных, должны быть данные, на которых можно учиться.

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

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

4. Прогнозы: это проблема прогнозов

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

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

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

5. Невидимые данные: невидимые данные имеют общие шаблоны с обучающими данными

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

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

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

6. Это повторяется

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

7. Цена неправильных прогнозов очень низкая

Если производительность вашей модели машинного обучения не равна 100% все время, что маловероятно для каких-либо значимых задач, ваша модель будет совершать ошибки. ML особенно подходит, когда цена неверного прогноза невелика.

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

8. Это в масштабе

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

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

9. Шаблоны постоянно меняются

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

Большинство современных алгоритмов машинного обучения не следует использовать ни при одном из следующих условий:

  • Это неэтично.
  • Более простые решения делают свое дело.
  • Это нерентабельно.

Понимание систем машинного обучения

Машинное обучение в исследованиях по сравнению с производством

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

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

Различные заинтересованные стороны и требования

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

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

Рассмотрим мобильное приложение, которое рекомендует рестораны пользователям. Приложение зарабатывает деньги, взимая с ресторанов 10% комиссии за обслуживание с каждого заказа. Это означает, что дорогие заказы приносят приложению больше денег, чем дешевые заказы. В проекте участвуют инженеры машинного обучения, продавцы, менеджеры по продуктам, инженеры по инфраструктуре и менеджер.

Инженеры машинного обучения:

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

Отдел продаж:

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

Команда разработчиков:

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

Команда платформы машинного обучения:

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

Менеджер:

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

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

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

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

Вычислительные приоритеты

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

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

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

Данные

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

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

Справедливость

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

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

Интерпретируемость

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

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

Системы машинного обучения VS традиционное программное обеспечение

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

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

В традиционном SWE вам нужно сосредоточиться только на тестировании и управлении версиями вашего кода. С ML мы также должны тестировать и версионировать наши данные, и это сложная часть.

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

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

Хорошая новость заключается в том, что эти инженерные задачи решаются с головокружительной скоростью. Еще в 2018 году, когда впервые вышла статья «Представления двунаправленных кодировщиков от трансформаторов» (BERT), люди говорили о том, что BERT слишком большой, слишком сложный и слишком медленный, чтобы быть практичным. Предварительно обученная большая модель BERT имеет 340 миллионов параметров и занимает 1,35 ГБ. Перенесемся на два года вперед: BERT и его варианты уже использовались почти в каждом английском поиске в Google.

Краткое содержание

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

Ссылка

  1. https://learning.oreilly.com/library/view/designing-machine-learning/9781098107956/