С помощью этого руководства вы развернете модель машинного обучения с помощью KServe в сервисе ML Inference. Вы научитесь создавать Docker-образ с моделью, загружать его в реестр Artifact Registry и разворачивать модель в Docker RUN. В результате вы получите готовый инференс на базе модели google/flan-t5-small, доступный через API и совместимый с OpenAI.
Вы будете использовать следующие сервисы и инструменты:
ML Inference — сервис для запуска ML-моделей в облаке с использованием GPU.
Artifact Registry для хранения, совместного использования и управления Docker-образами, Deb-пакетами, RPM-пакетами, Helm-чартами и файлами любого типа (generic).
KServe — инструмент для развертывания и управления ML-моделями на базе Kubernetes.
Hugging Face — платформа с открытым исходным кодом и сообщество разработчиков, ориентированное на машинное обучение, обработку естественного языка (NLP) и другие области искусственного интеллекта.
Шаги:
Если вы уже зарегистрированы, войдите под своей учетной записью.
На верхней панели слева нажмите и убедитесь в том, что сервис ML Inference в разделе AI Factory подключен.
Если сервис ML Inference не подключен, оставьте заявку на подключение.
Клонируйте репозиторий с примером кода для последующей сборки Docker-образа:
git clone https://github.com/cloud-ru/evo-docker-run-kserve-lab.gitcd kserve-example
Скачайте модель google/flan-t5-small:
mkdir -p models/flan-t5-smallhf download --local-dir ./models/flan-t5-small google/flan-t5-small
Если утилита hf не установлена, используйте Python-скрипт:
from transformers import T5ForConditionalGeneration, T5Tokenizer# Load the model and tokenizermodel = T5ForConditionalGeneration.from_pretrained("google/flan-t5-small")tokenizer = T5Tokenizer.from_pretrained("google/flan-t5-small")# Save the model and tokenizermodel.save_pretrained("./models/flan-t5-small")tokenizer.save_pretrained("./models/flan-t5-small")
Соберите Docker-образ, содержащий модель и необходимые зависимости для запуска через KServe:
docker build -t <registry_name>.cr.cloud.ru/kserve-flan-t5-small .
Где <registry_name> — название реестра, которое вы указывали при создании в Artifact Registry.
Выполните команду для загрузки образа в реестр:
docker push <registry_name>.cr.cloud.ru/kserve-flan-t5-small
Где <registry_name> — название реестра, которое вы указывали при его создании в Artifact Registry.
Убедитесь, что образ отображается в личном кабинете на странице Artifact Registry → Артефакты.
В личном кабинете перейдите в раздел AI Factory → ML Inference.
Перейдите на вкладку Docker RUN.
Нажмите Создать.
Заполните параметры для развертывания модели:
Название: kserve-flan-t5-small
URI Docker-образа: <registry_name>.cr.cloud.ru/kserve-flan-t5-small
Где <registry_name> — название реестра, которое вы указывали при его создании в Artifact Registry.
Порт контейнера: 8080
Нажмите Продолжить.
Настройте параметры масштабирования:
Минимальное количество экземпляров: 0
Максимальное количество экземпляров: 1
Нажмите Продолжить.
Нажмите Создать.
Дождитесь, когда статус инференса изменится на «Запущен», и появится публичный URL-адрес.
Скопируйте публичный URL-адрес созданного инференса:
На верхней панели слева нажмите и перейдите ML Inference → Model RUN.
Нажмите на название созданного инференса.
В строке Публичный URL нажмите кнопку Копировать.
Отправьте тестовый curl-запрос в формате v1:
curl -X POST https://<public_url>/v1/models/flan:predict \-H "Content-Type: application/json" \-d '{"instances": [{"text": "Translate to German: My name is Arthur"}]}'
Где <public_url> — публичный URL-адрес созданного инференса.
Отправьте тестовый curl-запрос в формате v2:
curl -X POST https://<public_url>/v2/models/flan/infer \-H "Content-Type: application/json" \-d '{"inputs": [{"name": "input-0","shape": [1],"datatype": "BYTES","data": ["Translate to German: My name is Arthur"]}]}'
Убедитесь, что в ответе вы получаете корректный результат:
{"predictions": ["Mein Name ist Arthur"]}
В ходе практической работы вы развернули модель машинного обучения с использованием KServe в сервисе ML Inference. Вы научились создавать Docker-образ с моделью, загружать его в реестр Artifact Registry и разворачивать модель в Docker RUN в облаке Cloud.ru Evolution.