Краткий обзор конвейеров Kedro, машинного обучения Azure и Scikit-Learn.

Не поймите меня неправильно; Блокноты Jupyter (и, соответственно, блокноты Databricks) отлично подходят для выполнения начального исследовательского анализа данных, изучения производительности модели и тестирования начальных заданий ETL. Однако использование исключительно ноутбуков для обучения и развертывания моделей машинного обучения ограничивает воспроизводимость и стандартизацию. Трудно взять чужой блокнот Jupyter и сразу приступить к делу!

Так что же нам делать с переходом Jupyter Notebook «Исследования» на повторяемые стандартизированные конвейеры?

У нас есть множество вариантов перевода кода, изначально разработанного в блокнотах, в набор стандартизированных конвейеров. Сюда могут входить параметры, относящиеся к библиотеке машинного обучения (например, scikit-learn, Keras и т. д.), специфичные для облачного провайдера (например, машинное обучение Azure или AWS Sagemaker) или для большинства библиотек и облаков (например, Kedro).

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

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

  • Упрощенный контроль версий.Разбивая монолитную записную книжку Jupyter на удобоваримое подмножество файлов, классов и объектов Python, вы сможете лучше управлять версиями (Github, Azure DevOps, AWS CodeCommit и т. д.) и отслеживать изменения.
  • Модульный код. Разбивая монолитный блокнот Jupyter на отдельные файлы и классы Python, вы также можете легко повторно использовать компоненты из предыдущих конвейеров вместо того, чтобы перерабатывать другой проект машинного обучения с нуля.
  • Легче развертывать. Машинное обучение не ограничивается высокой производительностью. Он заканчивается выводом, развернутым в веб-приложении, анализом важности функций для принятия более эффективных бизнес-решений и решениями по масштабируемости, позволяющими генерировать информацию для производственных данных. Все это можно упростить с помощью конвейеров.

Обзор избранных конвейерных решений для машинного обучения

Кедро

  • Суть:платформа Python с открытым исходным кодом, предоставляющая структуру для выполнения конвейеров, организации данных и упрощения выбора параметров. Бонус: легко визуализировать потоки в трубопроводе с помощью Kedro-Viz.
  • Плюсы: можно использовать во всех библиотеках машинного обучения (использующих Python) и облачных платформах.
  • Минусы. Может потребоваться немного обучения для продвинутых вариантов использования.
  • С чего начать.Ознакомьтесь с документацией и примером конвейера классификации ниже.


Машинное обучение Azure (или другие облачные решения PaaS)

  • Суть.Azure предлагает различные уровни услуг машинного обучения: от отсутствия кода до минимального кода и управляемых вычислительных экземпляров; Azure Machine Learning Designerпредлагает баланс между модулями с небольшим количеством кода или без него с пользовательскими блоками кода Python или SQL.
  • Плюсы: предлагает широкий набор инструментов (помимо конвейеров) и обеспечивает упрощенную интеграцию с другими облачными ресурсами.
  • Минусы. Это связывает ваше решение для машинного обучения с конкретным поставщиком облачных услуг и может стать дорогостоящим при неправильном масштабировании.
  • С чего начать.Зарегистрируйте бесплатную учетную запись Azure здесь, чтобы начать работу. Ознакомьтесь с моим руководством по Машинному обучению Azure ниже:


Scikit-Learn (или другие конвейеры для конкретных платформ)

  • Суть:Scikit-Learn предлагает конвейеры в своей библиотеке с открытым исходным кодом. Это позволяет пользователям просто объединять предварительную обработку, обучение и оценку в одном потоке конвейера. (Пример здесь)
  • Плюсы. Встроенные пайплайны Scikit-Learn просты в освоении и использовании. Scikit-learn широко используется, поэтому совместное использование и развертывание с помощью scikit-learn не будет большой проблемой.
  • Минусы. Конвейеры Scikit-Learn в значительной степени зависят от построения моделей в Scikit-Learn. Это можно решить с помощью некоторых обходных путей (Ссылка на пример)
  • С чего начать. Этот пример на Medium является хорошей отправной точкой:


Дополнительные соображения по кедро

Узлы и конвейеры

Kedro отлично использует узлы и конвейеры, чтобы разбить отдельные функции машинного обучения и объединить их в конвейер (У Kedro есть хорошее руководство по приветствию, мир и более подробное руководство по документации)

Узлы. Узлы — это отдельная часть конвейера, состоящая из функции, входных и выходных данных. Ниже приведен простой пример:

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

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

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

Каталог данных и параметры

Но как представлены выходные данные и параметры?

Все данные представлены в файле yaml каталога данных, а все параметры зафиксированы в файле yaml конфигурации репрезентативного конвейера.

Каталог данных. Этот файл yaml используется для обозначения входных имен, используемых в файле конвейера. Вот пример ниже:

Здесь вы видите, что набор данных (классификация грибов) хранится в промежуточных частях конвейера в виде файла .csv. При запуске конвейера файлы .csv сохраняются в пути к каталогу (стандартный путь к каталогу, используемый для всех моделей Kedro). Это позволяет любому клонировать репозиторий и запускать конвейер без поиска файлов и изменения имен каталогов.

Параметры.Вместо того, чтобы скрывать параметры в функциях или словаре параметров в блокноте Jupyter, у Kedro есть файл yaml для каждого конвейера, в котором хранятся параметры конвейера. См. ниже, например:

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

В Кедро есть еще много чего, включая Кедро-Виз. Обязательно ознакомьтесь с документами.

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

Повышение уровня кодирования

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

  • 👏 Хлопайте за историю и подписывайтесь на автора 👉
  • 📰 Смотрите больше контента в публикации Level Up Coding
  • 🔔 Подписывайтесь на нас: Twitter | ЛинкедИн | "Новостная рассылка"

🚀👉 Присоединяйтесь к коллективу талантов Level Up и найдите прекрасную работу