Infrastructure
REST API
Архитектурный стиль HTTP-API для взаимодействия клиента с inference-сервером.
Что такое REST API в контексте ML
REST API (Representational State Transfer) — стандартный HTTP-интерфейс для взаимодействия клиентских приложений с ML-сервисами. Все production-фреймворки инференса (vLLM, TGI, Ollama) предоставляют REST API.
Стандарт де-факто — OpenAI API: клиентский код, написанный для ChatGPT, работает с любым OpenAI-совместимым сервером без изменений.
OpenAI-совместимый API
# Chat Completions
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer any-token" \
-d '{
"model": "mistral-7b",
"messages": [{"role": "user", "content": "Привет!"}],
"max_tokens": 200,
"temperature": 0.7
}'
# Streaming
curl http://localhost:8000/v1/chat/completions \
-d '{"model": "mistral-7b", "messages": [...], "stream": true}'
# Список моделей
curl http://localhost:8000/v1/models
# Embeddings
curl http://localhost:8000/v1/embeddings \
-d '{"model": "bge-m3", "input": "Текст для эмбеддинга"}'
Python: OpenAI SDK
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8000/v1",
api_key="any-token", # vLLM не проверяет ключ по умолчанию
)
# Синхронный запрос
response = client.chat.completions.create(
model="mistral-7b",
messages=[{"role": "user", "content": "Объясни Docker."}]
)
print(response.choices[0].message.content)
# Асинхронный стриминг
async for chunk in await client.chat.completions.create(..., stream=True):
print(chunk.choices[0].delta.content, end="")
Связанные термины
- streaming — потоковый режим REST API
- serving — общий контекст предоставления API
- load balancer — распределение REST-запросов
- WebSocket — альтернативный протокол для real-time
Готовы запустить GPU-задачу?
Запустить GPU-сервер