Машинное обучение, млн операций в секунду
Пользовательские пайплайны Vertex AI для начинающих с использованием образов Docker[Часть 2]
Пошаговое руководство о том, как создать собственный образ Docker на Vertex AI.
Мотивация
В моем предыдущем посте я обсудил процесс реализации пользовательских конвейеров в Vertex AI с использованием компонентов Kubeflow. Для простоты мы обсудили распространенный вариант использования под названием Предсказать качество вина».
В этом посте я расскажу в основном о создании образов докеров. Цель состоит в том, чтобы объяснить, как настроить собственные образы докеров с нуля. Мы продолжим шаги по созданию образа Docker, а затем расскажем, как опубликовать образ и как использовать образ в компоненте конвейера.
Базовые термины
Прежде чем двигаться дальше, давайте уточним несколько терминов, которые мы собираемся использовать.
Так что же такое докер? Docker — это просто открытая платформа контейнеризации, которая упаковывает ваше приложение и все его зависимости в контейнер. Это упрощает процесс разработки и запуска приложений. Это поможет вам легко контролировать и запускать ваше приложение из одной среды в другую.
Cloud Build — это официальный конструктор образов Google Cloud Platform (GCP). Это полностью управляемая платформа CI/CD, позволяющая автоматизировать сборку.
Artifact Registry — это полностью автоматизированный менеджер пакетов, интегрированный с большинством инструментов CI/CD.
Обзор архитектуры, часть 2 (обратите внимание на синюю рамку)
Создание образа Docker начинается с создания Dockefile. После того, как файл Dockerfile готов, мы создаем образ, вызывающий файл Dockefile, с помощью облачной сборки GCP и, следовательно, помещаем его в реестр артефактов. Образ может использоваться компонентом конвейера после того, как образ будет доступен в реестре артефактов.
Настройка среды
Требования:
- Вершина AI Workbench
- Питон 3
- Компоненты пайплайна Kubeflow
- Докер
Чтобы установить компоненты Kubeflow, ai-платформу и импортировать необходимые библиотеки, обратитесь к разделу настройки среды в моем предыдущем посте.
Создание образа Docker для обучения
1. Докерфайл
Создайте каталог docker-train в Workbench, чтобы сохранить файл Dockefile и все необходимые сценарии. В итоге должно получиться так:
Для каждого создания образа Docker требуется файл Dockerfile (текстовый документ), содержащий список инструкций по сборке. Фактически в Dockerfile каждая инструкция создает новый слой поверх предыдущего.
Важно помнить несколько важных указаний:
- FROM: определяет базовый образ, который будет использоваться контейнером.
- WORKDIR: указывает рабочий каталог контейнера.
- COPY: копирует файлы/каталоги с хоста в док-контейнер.
- RUN: включает выполнение команды в контейнере.
DockerFile всегда начинается с команды FROM, за которой обычно следует набор инструкций. Например, в нашем случае WORKDIR указывает каталог, который мы собираемся использовать для нашего приложения. Мы можем копировать или не копировать файлы из локального файла в каталог docker с помощью инструкции COPY. В нашем случае мы копируем локальный файл requirements.txt в каталог приложения. Мы используем инструкцию RUN, чтобы начать установку библиотек Python, упомянутых в файле requirements.txt.
В нашем примере файл requirements.txt содержит библиотеки Pandas, NumPy и scikit-learn.
pandas==1.3.3 numpy==1.19.5 scikit-learn==0.24.2
2. Сборка докера
Как только ваш Dockerfile будет готов, нам нужно его собрать. Убедитесь, что в вашем локальном каталоге docker-train есть Dockefile иrequirements.txt. Добавьте docker_build.sh, как показано в примере ниже. Сам сценарий содержит общие параметры среды GCP, имя изображения и команду для создания изображения. Чтобы сгенерировать образ Docker локально, вам нужно собрать его, введя ./docker_build.sh в консоли Workbench. Обратите внимание: чтобы иметь возможность отслеживать изображение в GCP, я рекомендую пометить изображение с помощью Project_ID и региона.
3. Отправьте образ в реестр артефактов.
Во-первых, нам нужно создать репозиторий для нашего приложения в реестре артефактов. Мы должны указать формат репозитория, в нашем случае docker и регион. Имейте в виду, что gcloud необходимо зарегистрировать в реестрах Docker. Поэтому мы используем команду gcloud auth configure-docker, чтобы убедиться, что gcloud имеет правильные учетные данные. Наконец, мы отправляем локальный образ Docker в созданный репозиторий в реестре артефактов с помощью команды docker-push.
Напомните изменить PROJECT_ID во всех файлах с вашим идентификатором проекта GCP.
Не забудьте зайти в реестр артефактов GCP, чтобы убедиться, что ваше изображение доступно. Перейдите на вкладку поиска в GCP:
Щелкните Реестр артефактов:
Если это так, мы можем использовать его в качестве базового изображения в компоненте поезда следующим образом:
Создание образа Docker для развертывания
Мы можем просто использовать ранее созданный образ докера. В противном случае нам придется повторить описанные выше шаги, изменив имя изображения с train на Predict во всех скриптах (например, IMAGE = scikit-learn-winequality-predict:latest). В конце концов, добавьте новые библиотеки в файл requirements.txt. После того как образ появится в реестре артефактов, добавьте URL-адрес в компонент развертывания и повторно запустите компонент развертывания и конвейер. Пожалуйста, обратите внимание на ноутбук, которым я пользовался.
Чтобы проверить прогноз в реальном времени, перечислите все развернутые модели. Напомним, что каждый конвейер и модель имеют временную метку. Перечислите идентификатор конечной точки последней развернутой модели и сделайте прогноз, указав вектор экземпляра. Предсказание по умолчанию поддерживает формат экземпляра вектора: [список признаков для предсказания].
Возобновить
Мы узнали, как создать образ Docker в нашем локальном Vertex AI Workbench и как использовать его в нашем пользовательском конвейере Vertex AI.
Все ресурсы доступны на мой GitHub. В следующем посте я покажу вам, как развернуть собственный сервис прогнозирования с помощью Flask.
Спасибо за чтение!
Не забудьте подписаться, если хотите получать мои будущие истории в свой почтовый ящик.
Если вам нравится читать мою историю и вы хотите поддержать меня как автора, рассмотрите возможность регистрации, чтобы стать участником Medium и получить доступ к тысячам статей по инженерии данных и науке о данных.