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

Эксперименты с машинным обучением обычно проходят по заранее определенному набору этапов, например:

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

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

Встречайте Apache Airflow

Airflow - это проект с открытым исходным кодом, поддерживаемый программным обеспечением Apache. Согласно официальному сайту, Airflow - это:

Платформа, созданная сообществом для программного создания, планирования и мониторинга рабочих процессов.

Airflow построен с учетом простоты и позволяет строить ориентированные ациклические графы (DAG) полностью на Python, написав краткий и понятный код. Он широко применяется в отрасли для множества различных целей, а также предоставляется в некоторых управляемых версиях некоторыми поставщиками облачных услуг (например, gcp cloud composer).

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

Настройка Airflow с помощью Docker и docker-compose

Существуют разные способы развертывания Apache Airflow, я считаю Docker одним из самых простых, в этой статье я буду ссылаться на этот репозиторий github, просто клонируйте репозиторий и создайте докер, как показано ниже:

git clone https://github.com/puckel/docker-airflow.git
cd docker-airflow
docker-compose -f docker-compose-LocalExecutor.yml up

После короткой фазы запуска Airflow будет запущен и вы сможете посетить пользовательский интерфейс по следующему адресу: http: // localhost: 8080, вы увидите что-то в строке следующего изображения:

Создание нашего DAG

Чтобы создать направленный ациклический граф, нам необходимо предоставить файл Python, содержащий весь код для объявления и создания экземпляра DAG. Давайте создадим наш файл orchestrated_experiment.py в папке dags. Давайте тогда создадим экземпляр нашего DAG:

Теперь мы можем создавать различные задачи, составляющие нашу DAG. Задачи будут именно теми этапами машинного обучения, которые мы обсуждали в начале статьи. Для этого нам нужно будет использовать операторы, их очень много, и они используются для создания задач. Например, мы можем использовать PythonOperator, который принимает в качестве входных данных python_callable: функцию python, которая будет выполняться для данной задачи.

В Airflow мы получим следующий результат:

Теперь все, что вам нужно сделать, это определить эти функции и вставить всю основную логику вашего эксперимента, используя ваши любимые инструменты и фреймворки. Такие как pandas, scikit-learn, tensorflow и так далее.

Примеры организованного эксперимента.

Как сопоставить задачи машинного обучения операторам? Давайте посмотрим на некоторые из возможностей:

  • Прием данных: мы могли бы использовать хуки для подключения к разнородным источникам данных, таким как BigTable, хранилище BLOB-объектов Azure, ftp-серверы или ваша локальная файловая система.
  • Проверка данных: мы можем использовать PythonOperator, чтобы убедиться, что данные действительны и соответствуют нашим ожиданиям. Если мы поместим утверждения внутри функций, и они не работают, Airflow автоматически пометит задачу и, следовательно, DAG как сбойную.
  • Подготовка данных: используйте PythonOperator для подготовки данных. Вы можете установить собственные библиотеки, такие как pandas или scikit-learn, просто поместив файл requirements.txt в корневой каталог воздушного потока и сопоставив том в разделе томов docker-compose, как показано ниже: ./requirements.txt:/requirements. текст
  • Обучение модели: мы все еще можем использовать PythonOperator в сочетании с вашей любимой библиотекой (например, scikit-learn, tensorflow ..), или вы можете проявить творческий подход и использовать что-то вроде оператора обучения SageMaker. Если вы хотите, чтобы ваше обучение было отдельным и изолированным, вы можете использовать DockerOperator для выполнения команд внутри обучающего контейнера и передачи ссылки на расположение выходных данных этапа подготовки данных.
  • Оценка модели: этого можно легко достичь, используя ранее созданную модель, которую можно загрузить в корзину s3 или реестр моделей (например, с помощью MlFlow) и оценить производительность на тестовом наборе. .
  • Развертывание модели: вы можете начать этап развертывания, проверив результаты этапа оценки, и, если они приемлемы, начните развертывание. Для этого вы можете использовать PythonBranchOperator, используя выходные данные вашей любимой метрики выбора (например, точности) для значения, полученного на этапе оценки.
    Вы можете легко проверить результаты предыдущих шагов, возвращая значения в функциях и получая их через XCOM.

Выводы

Предположим, у вас есть алгоритм, работающий в производственной среде. Вам необходимо убедиться, что точность алгоритма не опускается ниже порогового значения 90%. Как может помочь Airflow?
Мы можем запланировать оценку в обычное время в течение дня и гарантировать, что в случае невыполнения требований KPI будет выполнено автоматическое переобучение и повторное развертывание.

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

Airflow широко используется и готов к производству, легко масштабируется и хорошо вписывается во многие экосистемы благодаря широкой поддержке операторов. Однако обязательно ознакомьтесь с другими интересными инструментами, такими как KubeFlow, PolyAxon или metaflow.