Все готово, и ваша модель сияет, но теперь вы хотите поделиться ею.

В этой статье вы узнаете, как:

  • создать API, используя структуру FastAPI для вашей модели
  • контейнеризируйте свой API с помощью Docker
  • разверните свой контейнерный API на облачном провайдере или VPS

Давайте погрузимся!

Кстати: если у вас нет модели глубокого обучения, которой вы хотите поделиться, вы можете прочитать статью ЧАСТЬ 1:



Как создать простой API

Предупреждение: это простой API для демонстрации, НЕ используйте его в производственной среде! Вы должны добавить некоторые стены безопасности (https, установить токен доступа…)

from fastapi import FastAPI
from pydantic import BaseModel
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
import torch
import os
# VERY important, this is for the dockerfile
model_file = os.getenv("MODEL_FILE")
tokenizer = AutoTokenizer.from_pretrained('moussaKam/barthez-orangesum-abstract')
model = torch.load("path_to_finetuned_model.pt", map_location=torch.device('cpu'))
model.eval()
def get_prediction(input_text, model):
# Encode input text
input_tokens = tokenizer(input_text, truncation=True, padding="max_length", max_length=1024, return_tensors='pt')
with torch.no_grad():
output_tokens = model.generate(input_tokens['input_ids'], num_beams=4, max_length=150, early_stopping=True, no_repeat_ngram_size=2)
# Decode the output tokens to text
return tokenizer.decode(output_tokens[0])
# FastAPI app
app = FastAPI()
class Item(BaseModel):
text: str
@app.post("/predict")
def predict(item: Item):
prediction = get_prediction(item.text, model)
return {"prediction": prediction}
view raw api.py hosted with ❤ by GitHub

Это API для модели, генерирующей текст, он может не подходить для других типов моделей. Вы должны указать именно то, что вам нужно для запуска прогнозов на локальной установке. Например, для модели классификации вам понадобится csv/json с метками.

Собираем наш контейнер

Для сборки docker-контейнера вам понадобится папка с этими файлами:

  • Ваш API
  • Файл вашей модели (.pt, .pth…)
  • файл .env
  • Dockerfile (без расширения)
  • файл requirements.txt со ВСЕМИ модулями, которые вам нужны

Докерфайл

Вот Dockerfile для проекта: