Распаковка ценности конвейеров машинного обучения

Когда в 1913 году компания Генри Форда построила свою первую движущуюся сборочную линию для производства своей легендарной модели T, она сократила время сборки каждого автомобиля с 12 до 3 часов. Это резко снизило затраты, позволив Model T стать первым доступным автомобилем в истории. Это также сделало возможным массовое производство: вскоре дороги заполонили Model T.

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

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

История автомобилестроения повторилась в индустрии программного обеспечения за последние пару десятилетий: каждая значительная часть программного обеспечения в настоящее время обычно создается, тестируется и развертывается с использованием инструментов автоматизации, таких как Jenkins или Трэвис. Однако метафоры Model T уже недостаточно. Программное обеспечение не просто развертывается и забывается; его необходимо контролировать, поддерживать и регулярно обновлять. Программные конвейеры теперь больше похожи на динамические циклы, чем на статические производственные линии. Крайне важно иметь возможность быстро обновлять программное обеспечение (или сам конвейер), не нарушая его. И программное обеспечение гораздо более настраиваемое, чем когда-либо была модель T: программное обеспечение можно раскрасить в любой цвет (например, попробуйте подсчитать количество существующих вариантов MS Office).

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

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

По этим (и другим) причинам специалисты по данным и инженеры-программисты сначала начали создавать и обучать модели машинного обучения вручную, так сказать, «в своем гараже», и многие из них до сих пор это делают. Но за последние несколько лет были разработаны новые инструменты автоматизации, которые решают проблемы конвейеров машинного обучения, такие как TensorFlow Extended (TFX) и Kubeflow. Все больше и больше организаций начинают использовать эти инструменты для создания конвейеров машинного обучения, которые автоматизируют большинство (или все) шагов, связанных с созданием и обучением моделей машинного обучения. Преимущества этой автоматизации в основном такие же, как и в автомобильной промышленности: экономия времени и денег; создавать лучшие, более надежные и безопасные модели; и тратьте больше времени на выполнение более полезных задач, чем на копирование данных или изучение кривых обучения.

Однако создание конвейера машинного обучения — нетривиальная задача.

За последние несколько лет произошли поразительные изменения в области машинного обучения. Благодаря широкой доступности графических процессоров (GPU) и появлению новых концепций глубокого обучения, таких как трансформеры, такие как BERT, или генеративно-состязательных сетей (GAN), таких как глубокие сверточные GAN, количество проектов ИИ резко возросло. Количество ИИ-стартапов огромно. Организации все чаще применяют новейшие концепции машинного обучения для решения всевозможных бизнес-задач. В погоне за наиболее эффективным решением для машинного обучения мы заметили несколько моментов, которым уделялось меньше внимания. Мы видели, что специалистам по данным и инженерам по машинному обучению не хватает хороших источников информации для концепций и инструментов для ускорения, повторного использования, управления и развертывания их разработок. Что необходимо, так это стандартизация конвейеров машинного обучения.

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

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