В области машинного обучения (ML) инструменты и методы передового опыта только начинают разрабатываться. На конференции разработчиков PyTorch (PTDC-18) несколько докладчиков, включая Джерома Пезенти, вице-президента по искусственному интеллекту из Facebook и Андрея Карпати, директора Tesla AI, рассказали о передовых методах работы с машинами. развитие обучения. Обсуждаемые вопросы включали применение традиционных методов разработки программного обеспечения, таких как модульное тестирование, системы CI / CD, автоматическое развертывание, контроль версий и многое другое, в области машинного обучения.

В этом сообщении блога мы рассмотрим лучшие практики из PTDC-18 и будущее разработки инструментов машинного обучения.

1. Инженерные практики от разработчиков PyTorch

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

1.1. Будущее инструментов машинного обучения

Что касается будущего машинного обучения, Джером предвидел «оптимизированную разработку, более доступные инструменты, революционное оборудование и многое другое». Говоря об огромном разрыве между программной инженерией и машинным обучением, Презенти сказал:

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

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

1.2. PyTorch мотивация

PyTorch 1.0 реализует один важный инженерный принцип - «плавный переход от исследований ИИ к производству». Это помогает как можно быстрее перевести технологии искусственного интеллекта из исследований в производство. Для этого было решено несколько задач:

  1. Напишите код один раз - не нужно переписывать или повторно оптимизировать код, чтобы перейти от исследования к продукту.
  2. Производительность - обучающая модель на больших наборах данных.
  3. Другие языки - не только Python, который отлично подходит для прототипирования, но также C ++ и другие языки.
  4. Масштабирование - более легкое развертывание PyTorch в масштабе.

2. Инженерные практики для программного обеспечения 2.0

2.1. Плавка ПО 2.0 и ПО 1.0

Андрей Карпати из Tesla AI провел специальный доклад о лучших инженерных практиках в области машинного обучения. Он провел контраст между традиционной разработкой программного обеспечения (программное обеспечение 1.0) и программным обеспечением, использующим методы машинного обучения (программное обеспечение 2.0), заявив, что

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

Это означает, что жизненный цикл разработки машинного обучения аналогичен традиционному программному обеспечению:

«Когда вы работаете с этими [нейронными] сетями в производстве, вы делаете гораздо больше, чем это [обучение и измерения моделей]. Вы поддерживаете кодовую базу, и эта кодовая база жива, как код 1.0 ».

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

2.2. Лучшие практики программного обеспечения 2.0

Далее Карпати описал, как лучшие практики программного обеспечения 1.0 могут быть использованы в программном обеспечении 2.0 (моделирование машинного обучения):

  1. Разработка на основе тестов - разделения наборов данных тест / поезд недостаточно, поскольку он описывает только ожидаемую производительность. Необходимо проверить крайние случаи, чтобы убедиться, что модель работает должным образом. Это требует включения большего количества примеров в наборы данных, или изменения архитектуры модели, или изменения функций оптимизации.
  2. Продолжает интеграцию и продолжает доставку (CI / CD). Интеллектуальное использование CI / CD может подтолкнуть команду к быстрой гибкой разработке программных систем. Этапы задач CI / CD включают: 1) автоматическое повторное обучение модели машинного обучения при изменении кода или набора данных; 2) запуск юнит-тестов; 3) легкий доступ к последней модели; 4) Автоматическое развертывание для тестовых и / или производственных систем.
  3. Контроль версий - отслеживайте все изменения наборов данных (меток), а не только кода.
  4. Обучайте одну модель каждый раз с нуля, не используя другие предварительно обученные модели. (Внешние предварительно обученные модели не считаются, насколько я понимаю.) Цепочка моделей тонкой настройки очень быстро разрушает кодовую базу. В программном обеспечении 1.0 единый монорепо является аналогом единой модели, что также помогает избежать распада.

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

3. Инструменты, ориентированные на файлы данных

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

Необходимость в инструменте для обработки артефактов машинного обучения с философией, ориентированной на файлы данных, была основной мотивацией нашего проекта с открытым исходным кодом - контроля версий данных (DVC) или dvc.org.

DVC соединяет Git с файлами данных и конвейерами машинного обучения, что помогает поддерживать контроль версий в моделях машинного обучения и наборах данных с использованием знакомой семантики Git в сочетании с мощью облачных систем хранения, таких как Amazon S3, Google GCS, Microsoft Azure или серверов без операционной системы, к которым SSH.

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

Заключение

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