Skip to content

cloud-ru/evo-docker-run-kserve-lab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Пример развертывания модели google/flan-t5-small с использованием KServe

Этот проект демонстрирует полный цикл развертывания модели google/flan-t5-small с использованием KServe. Модель предварительно загружается и встраивается непосредственно в Docker-образ.

Примечание: Для развертывания модели в облаке Cloud.ru Evolution с использованием сервисов Artifact Registry и ML Inference Docker RUN, см. практическое руководство.

Структура проекта

/
├── Dockerfile              # Dockerfile для сборки образа
├── flan_t5_model.py        # Реализация модели с использованием KServe
├── pyproject.toml          # Файл зависимостей проекта
├── uv.lock                 # Блокировочный файл зависимостей
├── models/                 # Папка с предварительно загруженной моделью (создается вручную)
│   └── flan-t5-small/      # Файлы модели google/flan-t5-small
├── README.md               # Этот файл с инструкциями
└── LICENSE                 # Лицензия

Подготовка модели

Перед сборкой Docker-образа необходимо предварительно загрузить модель google/flan-t5-small и сохранить её в папку models/flan-t5-small.

Для этого выполните следующий Python-скрипт:

from transformers import T5ForConditionalGeneration, T5Tokenizer

# Загрузка модели и токенизатора
model = T5ForConditionalGeneration.from_pretrained("google/flan-t5-small")
tokenizer = T5Tokenizer.from_pretrained("google/flan-t5-small")

# Сохранение модели и токенизатора
model.save_pretrained("./models/flan-t5-small")
tokenizer.save_pretrained("./models/flan-t5-small")

Вы можете скачать модель используя команду huggingface-cli:

hf download --local-dir ./models/flan-t5-small google/flan-t5-small

Сборка Docker-образа

После подготовки модели можно собрать Docker-образ. Dockerfile использует двухстадийную сборку, при этом финальной стадией является prod, поэтому для создания финального образа можно не указывать таргет:

docker build -t kserve-flan-t5-small .

При необходимости можно явно указать целевую стадию:

docker build -t kserve-flan-t5-small --target prod .

Запуск контейнера

После сборки образа можно запустить контейнер:

docker run -p 8080:8080 kserve-flan-t5-small

По умолчанию сервис будет доступен по адресу http://localhost:8080.

Использование модели

После запуска контейнера модель будет доступна через REST API. Ниже приведены примеры запросов к API.

Пример запроса (формат v1)

curl -X POST http://localhost:8080/v1/models/flan:predict \
  -H "Content-Type: application/json" \
  -d '{"instances": [{"text": "Translate to German: My name is Arthur"}]}'

Пример запроса (формат v2)

curl -X POST http://localhost:8080/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 - фреймворк для развертывания моделей машинного обучения
  • transformers - библиотека Hugging Face для работы с моделями трансформеров
  • sentencepiece - библиотека для токенизации текста
  • torch - фреймворк PyTorch для глубокого обучения

Полный список зависимостей можно найти в файле pyproject.toml.

Реализация модели

Реализация модели находится в файле flan_t5_model.py. Она включает:

  • Класс FlanT5Model, наследующийся от Model из KServe
  • Метод load() для загрузки модели и токенизатора
  • Метод preprocess() для обработки входных данных
  • Метод predict() для выполнения инференса модели

About

Этот проект демонстрирует полный цикл развертывания модели google/flan-t5-small с использованием KServe. Модель предварительно загружается и встраивается непосредственно в Docker-образ.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors