Машинное обучение становится мейнстримом, покидая исследовательскую лабораторию и внедряясь в продукты. На самом деле, у каждой инженерной команды, с которой мы работали, в дорожной карте был пункт, который звучал примерно так: «Улучшить [крутую функцию] с помощью машинного обучения».

Но «заниматься машинным обучением» — не типичная инженерная задача. Существует бесчисленное множество блокировщиков, которые могут помешать вам запустить ваши проекты машинного обучения, в том числе:

  1. Время, необходимое для понимания и объединения фрагментированной экосистемы низкоуровневых пакетов для машинного обучения.
  2. Потребность в знаниях в области науки о данных для реализации стратегий моделирования, дающих полезные результаты.
  3. Инженерные усилия, связанные с созданием и обслуживанием инфраструктуры, способной выполнять крупномасштабные рабочие нагрузки машинного обучения.
  4. Чтобы быть в курсе последних отраслевых стандартов в области архитектуры машинного обучения и стратегий обучения, необходимы постоянные инвестиции.

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

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

Что такое декларативное машинное обучение?

Декларативные системы машинного обучения были созданы для поддержки внутренних платформ машинного обучения в ведущих технологических компаниях, таких как Ludwig в Uber, Overton в Apple и Looper в Meta. Мотивация для этих технологий была проста: предоставить разработчикам программного обеспечения, не имеющим глубоких знаний в области машинного обучения, возможность обучать, обслуживать и контролировать большое количество моделей ИИ. Сегодня на этих платформах размещаются тысячи моделей и обрабатываются миллиарды выводов.

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

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

1 — «Не изобретайте велосипед»

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

Итак, всего восемь строчек конфига:

input_features:
    - name: description
      type: text
    - name: profile_image_url
      type: image
output_features:
    - name: account_type
      type: category

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

Это позволяет нам придерживаться священного принципа программного обеспечения: не изобретать велосипед; вместо этого встаньте на плечи гигантов.

2 — Управляй тем, что хочешь; Автоматизируйте остальное

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

Мы считаем, что по двум причинам:

  1. Большинство приложений машинного обучения, как правило, итеративны, когда вы начинаете с первой модели, которая прошла большую часть пути, и постепенно поднимаетесь к лучшему решению, поворачивая ручки.
  2. Инженерам нужна свобода действий и контроль над своими инструментами. Автоматизировать что-то — это здорово, если вы не ограничены этим выбором.

Ludwig решает эти проблемы с помощью умных настроек по умолчанию, которые можно настраивать с помощью единого шаблона проектирования. Хотите перевести все текстовые данные в нижний регистр, чтобы стандартизировать их, использовать большую предварительно обученную языковую модель, такую ​​как BERT, вместо стандартной нейронной сети и добавить еще немного регуляризации? Каждая настройка — это всего лишь одна дополнительная строка в конфиге.

input_features:
    - name: description
      type: text
      preprocessing:
          lowercase: true
      encoder:
          type: bert
          use_pretrained: true
          trainable: true
output_features:
    - name: account_type
      type: category
trainer:
    regularization_lambda: 0.1

3. Больше никаких проблем с инфраструктурой

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

Ваше время слишком дорого, чтобы целый день бороться с ошибками CUDA. По умолчанию Ludwig включает приведенные выше оптимизации и многое другое в свой конвейер моделирования и абстрагирует их, чтобы вы могли сосредоточиться на текущей задаче машинного обучения. создан для изначальной совместимости с лучшими в своем классе фреймворками, включая Ray, унифицированную вычислительную инфраструктуру для масштабирования рабочих нагрузок Python от некоторых первоначальных создателей Spark. Однако, как и все остальное в Ludwig, любую из этих оптимизаций можно настроить декларативно:

backend:
  type: ray
  processor:
    type: dask
  trainer:
    strategy: horovod
    use_gpu: true
    num_workers: 16

(Обязательный график сложной распределенной инфраструктуры)

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

4 — Опирайтесь на открытые экосистемы

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

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

Начните с декларативного машинного обучения

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

Если вам интересно узнать больше о том, как и почему декларативное машинное обучение работает только для инженера, присоединяйтесь к нам на нашем живом вебинаре, который в следующий вторник будет организован Open Data Science. Вы также можете присоединиться к сообществу Ludwig с открытым исходным кодом и загрузить одно из многих учебников по ​​вариантам использования.

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

До следующего раза, счастливого строительства!

Статья Джеффри Ангуса и Девврета Риши из Predibase

Первоначально опубликовано на OpenDataScience.com

Читайте другие статьи по науке о данных на OpenDataScience.com, включая учебные пособия и руководства от начального до продвинутого уровня! Подпишитесь на нашу еженедельную рассылку здесь и получайте последние новости каждый четверг. Вы также можете пройти обучение по науке о данных по запросу, где бы вы ни находились, с нашей платформой Ai+ Training. Подпишитесь также на нашу быстрорастущую публикацию на Medium, ODSC Journal, и узнайте, как стать писателем.