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

И AWS, и GCP предоставляют индивидуальную службу вывода контейнеров, которая чрезвычайно полезна для построения конвейеров непрерывного обучения и автоматизации утомительной задачи обучения модели.

Службы предоставляют интерфейс REST для вызова вашей обученной модели и возврата полученных результатов.
Ниже приведено подробное руководство по созданию собственного контейнера ML и его обучению на AWS и GCP.

-Развертывание моделей машинного обучения в GCP

Предварительные условия — Структура репозитория кода:
Сохраните файл Dockerfile в корневом каталоге и сохраните имя основного сценария вывода как «infer.py». Пример структуры каталогов (имя папки-вывод):

inference
├── Dockerfile
└── src
    ├── infer.py
    ├── nginx.conf
    ├── predictor.py
    ├── requirements.txt
    ├── serve
    └── wsgi.py
  1. Создайте файл Docker для контейнеризации приложения ML
    Пример файла Docker
ARG UBUNTU_VERSION=20.04

FROM ubuntu:${UBUNTU_VERSION} as base

ARG DEBIAN_FRONTEND=noninteractive

RUN apt-get update && apt-get install -y --no-install-recommends \
    python3.8 \
    python3-pip \
    nginx \
    git \
    vim nano wget curl libpython3.8 ffmpeg libsm6 libxext6 \
    && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/* 
    
ENV LANG C.UTF-8

ADD src/infer/  /opt/program/
ADD src/build_scripts/  /opt/program/

ENV PATH $PATH:/root/google-cloud-sdk/bin

ENV PATH="/opt/program:${PATH}"

WORKDIR /opt/program

RUN chmod +x *

RUN pip3 install -r "requirements.txt"
RUN pip3 install glob2 flask gunicorn google-cloud-storage
RUN pip3 install protobuf==3.20.*

RUN curl -sSL https://sdk.cloud.google.com | bash

ENV PYTHONUNBUFFERED=TRUE
ENV PYTHONDONTWRITEBYTECODE=TRUE

2. Создайте и разместите свой контейнер в реестре контейнеров GCP.

docker build -t ml-infer-container <folder_where_Dockerfile_is_located>
gcloud auth configure-docker gcr.io
docker tag ml-infer-container gcr.io/dir/ml-train-container
docker push gcr.io/dir/ml-infer-container:latest

3. Импортируйте пользовательскую модель в реестр моделей:
- Из консоли:
Перейдите в консоль GCP->Vertex AI->Реестр моделей и нажмите «Импортировать модель» вверху.

4. Разверните конечную точку
Перейдите в консоль GCP->Vertex AI->Конечные точки и нажмите «Создать конечную точку».

5. Тестирование развернутой конечной точки
Мы можем вызвать конечную точку, используя запрос REST с данными в формате JSON.
Самый простой способ проверить это — использовать встроенный инструмент GCP. Реестр моделей Go->Выберите свою модель->Выберите версию->Развертывание и тестирование
Предоставьте свои входные данные в виде массива внутри словаря с ключевыми «экземплярами». Пример:

{
    "instances": [{
        "data1": "value1",
        "data2": "value2"
    }]
}

ИЛИ
Вызовите конечную точку с помощью запроса REST:
Перейдите в раздел «Конечная точка» и выберите «Пример запроса» для развернутой модели.

curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict \
-d "@${INPUT_DATA_JSON}"

6. Теперь модель ML развернута и работает. Теперь ваше приложение может вызывать модель с помощью запросов POST.