Учебник 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
.
Команда в этом задании довольно проста:
- Установите линтер в среде GitLab
- Запускаем линтер
Обратите внимание: если на этом этапе произойдет сбой, конвейер будет остановлен и не перейдет к этапу развертывания.
Таким же образом поступаем и с этапом развертывания:
# 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].
При желании вы можете назначить встречу с нами здесь.