Учебник Titan # 10: Базовый конвейер для машинного обучения

Вступление

С момента своего создания каждая деталь и функция Titan разрабатывалась и создавалась с учетом совместимости.

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

В этом руководстве мы узнаем, как использовать Titan с двумя сервисами CI / CD: GitLab CI и GitHub Actions.

Основы CI / CD

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

Использование сервисов CI / CD дает несколько важных преимуществ для управления жизненным циклом наших приложений (в нашем случае модель AI / ML), таких как:

  • Уменьшите количество человеческих ошибок при выполнении повторяющихся задач
  • Ускорьте выпускные циклы
  • Интеграция с репозиторием исходного кода

Общая структура конвейера CI / CD показана на следующем рисунке:

Наша первая модель CI / CD

Чтобы понять, как Titan можно использовать в этих конвейерах, мы будем работать в очень простом процессе, как показано на рисунке ниже:

Как видно, наш конвейер будет делать следующее:

  • Связь с репозиторием исходного кода
  • Использование линтера для выявления ошибок, ошибок или неправильного кода (в нашем примере мы будем использовать версию flake8 для Jupyter Notebook)
  • После проверки кода он будет развернут с помощью Titan.

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

Реализация GitLab

Начнем с сервиса GitLab для CI / CD: GitLaB CI. Что касается других сервисов CI / CD, конфигурация конвейера просто создается путем определения YAML-спецификации шагов.

Обратите внимание, что для применения CI / CD требуется репозиторий GitLab!

Лучший способ понять, как все это работает - сразу перейти к спецификации YAML:

Разберем структуру файла:

stages:  
  - lint  
  - deploy

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

После этого мы можем определить каждое из заданий.

# Lint the Jupyter Notebook
lint:  
  image: python:3.8  
  stage: lint  
  script:  
  # Install Linter  
  - pip install flake8-nb  
  # Run Linter  
  - flake8-nb helloworld.ipynb

Это первое задание называется lint, будет использовать изображение Python в среде GitLab и связано с этапом lint, ранее определенным с помощью строкиstage: lint.

Команда в этом задании довольно проста:

  1. Установите линтер в среде GitLab
  2. Запускаем линтер

Обратите внимание: если на этом этапе произойдет сбой, конвейер будет остановлен и не перейдет к этапу развертывания.

Таким же образом поступаем и с этапом развертывания:

# Deploy stage will deploy our Titan service
deploy:  
  image: python:3.8  
  stage: deploy  
  script:  
  # Install Titan CLI  
  - curl -sf https://install.akoios.com/beta | sh  
  # Deploy Notebook API service  
  - titan deploy --image scipy helloworld.ipynb

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

$ titan deploy

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

В настройках CI / CD репозитория GitLab можно определить следующие переменные:

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

Когда процесс будет завершен, наша модель будет работать в Titan, как и ожидалось, как мы можем видеть на панели инструментов:

Теперь представьте, что мы хотим проверить, выполняет ли линтер свою работу. Для этого мы внесем синтаксическую ошибку в наш код (обратите внимание на отсутствующие кавычки в команде print):

Если мы зафиксируем и отправим изменения, процесс CI запустится снова, но, как показано ниже, он завершится неудачно, как и ожидалось:

Проверяя логи в GitLab CI, мы видим, что линтер возвращает следующую ошибку:

Вы можете найти весь код в этом репозитории GitLab.

Реализация действий GitHub

Действия GitHub - это подход GitHub к CI, который работает аналогично GitLab CI.

Точно так же GitHub Actions использует файл конфигурации YAML для создания или конвейера:

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

Аналогичным образом, управление учетными данными Titan для аутентификации также осуществляется с использованием секретных переменных:

Вы можете найти весь код в этом репозитории GitHub.

Заворачивать

В этом посте мы увидели, как использовать Titan из двух разных служб CI / CD, GitLab CI и GitHub Actions,

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

Спасибо за прочтение!

Предисловие

Titan может помочь вам радикально сократить и упростить усилия, необходимые для внедрения моделей AI / ML в производство, позволяя командам Data Science быть гибкими, более продуктивными и более близкими к влиянию своих разработок на бизнес.

Если вы хотите узнать больше о том, как начать использовать Titan или получить бесплатную демоверсию, посетите наш веб-сайт или напишите нам по адресу [email protected].

При желании вы можете назначить встречу с нами здесь.