Найти в Дзене
SkyNet | Новости ИИ

Реализация создания продвинутых API для машинного обучения с несколькими конечными точками с помощью LitServe: пакетная обработка, потоковая

Реализация создания продвинутых API для машинного обучения с несколькими конечными точками с помощью LitServe: пакетная обработка, потоковая передача, кэширование и локальный вывод В этом руководстве мы рассмотрим LitServe — лёгкую и мощную платформу для запуска моделей машинного обучения в виде API с минимальными усилиями. Мы создадим и протестируем несколько конечных точек, которые демонстрируют функциональные возможности в реальных условиях, такие как генерация текста, пакетная обработка, потоковая передача, многозадачная обработка и кэширование, все работающие локально без использования внешних API. К концу мы чётко поймём, как проектировать масштабируемые и гибкие конвейеры для обслуживания машинного обучения, которые одновременно эффективны и просты в расширении для приложений производственного уровня. Установка среды и зависимостей Мы начинаем с настройки нашей среды в Google Colab и установки всех необходимых зависимостей, включая LitServe, PyTorch и Transformers. Затем мы и

Реализация создания продвинутых API для машинного обучения с несколькими конечными точками с помощью LitServe: пакетная обработка, потоковая передача, кэширование и локальный вывод

В этом руководстве мы рассмотрим LitServe — лёгкую и мощную платформу для запуска моделей машинного обучения в виде API с минимальными усилиями. Мы создадим и протестируем несколько конечных точек, которые демонстрируют функциональные возможности в реальных условиях, такие как генерация текста, пакетная обработка, потоковая передача, многозадачная обработка и кэширование, все работающие локально без использования внешних API. К концу мы чётко поймём, как проектировать масштабируемые и гибкие конвейеры для обслуживания машинного обучения, которые одновременно эффективны и просты в расширении для приложений производственного уровня.

Установка среды и зависимостей

Мы начинаем с настройки нашей среды в Google Colab и установки всех необходимых зависимостей, включая LitServe, PyTorch и Transformers. Затем мы импортируем основные библиотеки и модули, которые позволят нам эффективно определять, запускать и тестировать наши API.

```python

import litserve as ls

import torch

from transformers import pipeline

import time

from typing import List

```

Создание API для генерации текста

Здесь мы создаём два API LitServe: один для генерации текста с использованием локальной модели DistilGPT2, а другой для пакетного анализа настроений. Мы определяем, как каждый API декодирует входящие запросы, выполняет вывод и возвращает структурированные ответы, демонстрируя, насколько просто создавать масштабируемые, повторно используемые конечные точки для обслуживания моделей.

```python

class TextGeneratorAPI(ls.LitAPI):

def setup(self, device):

self.model = pipeline("text-generation", model="distilgpt2", device=0 if device == "cuda" and torch.cuda.is_available() else -1)

self.device = device

def decode_request(self, request):

return request["prompt"]

def predict(self, prompt):

result = self.model(prompt, maxlength=100, numreturnsequences=1, temperature=0.8, dosample=True)

return result[0]['generated_text']

def encode_response(self, output):

return {"generated_text": output, "model": "distilgpt2"}

```

Создание API для пакетного анализа настроений

```python

class BatchedSentimentAPI(ls.LitAPI):

def setup(self, device):

self.model = pipeline("sentiment-analysis", model="distilbert-base-uncased-finetuned-sst-2-english", device=0 if device == "cuda" and torch.cuda.is_available() else -1)

def decode_request(self, request):

return request["text"]

def batch(self, inputs: List[str]) -> List[str]:

return inputs

def predict(self, batch: List[str]):

results = self.model(batch)

return results

def unbatch(self, output):

return output

def encode_response(self, output):

return {"label": output["label"], "score": float(output["score"]), "batched": True}

```

Тестирование API локально

Мы тестируем все наши API локально, чтобы проверить их правильность и производительность без запуска внешнего сервера. Мы последовательно оцениваем генерацию те...

Читать далее