Практическое использование сервисов LLM: Ollama, vLLM и TGI
Слой обслуживания, преобразующий файлы моделей в API LLM: Ollama для локальной работы, vLLM и Hugging Face TGI для GPU, а также то, чего не хватает обычным трансформерам.
Источники: Serving LLMs, Hands-On — Ollama, vLLM & TGI
Сервисы обработки: слой, находящийся под концепцией «просто вызовите модель»
Вы уже вызывали модели — часто через Ollama. В этом руководстве речь идет о сервере инференса: он загружает веса модели, управляет памятью GPU, группирует задачи и передает токены так, чтобы несколько клиентов могли использовать один API. Три названия, которые вы будете часто слышать: Ollama, vLLM и TGI (Text Generation Inference).
Эксперименты с Ollama могут выполняться на процессоре ноутбука. Для vLLM и TGI требуется GPU — в качестве альтернативы подойдут Colab или Kaggle, если у вас его нет. Рассматривайте это как практическое задание: запускайте приведенные блоки кода и выполняйте упражнения.
Почему простой модуль transformers не является сервером
Загрузка модели и вызов метода .generate() работают при одном медленном запросе. Однако при высокой нагрузке система теряет эффективность: отсутствует непрерывная группировка запросов, слабое планирование использования памяти и неудобная поддержка многопользовательского стриминга. Сервисные движки созданы для преобразования «файла модели» в «API».
Ollama — сначала локальная обработка
Установите, загрузите, запустите и воспользуйтесь HTTP API:
ollama pull llama3.2
ollama serve # usually already running; serves on http://localhost:11434
from openai import OpenAI # pip install openai
client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama") # key is ignored locally
resp = client.chat.completions.create(
model="llama3.2",
messages=[{"role": "user", "content": "Explain KV cache in one sentence."}],
)
print(resp.choices[0].message.content)
Используйте его для изучения шаблонов запросов и создания приложений без необходимости в облачных ключах. Учитывайте его ограничения, если вам требуется планирование на уровне целого флота устройств.
vLLM — обслуживание на GPU с поддержкой группировки запросов
В режиме работы с GPU:
pip install vllm
vllm serve meta-llama/Llama-3.1-8B-Instruct # OpenAI-compatible server on :8000
Ключевыми особенностями являются конечные точки, совместимые с OpenAI, и непрерывная группировка запросов. Следите за использованием памяти GPU и настройками максимального объёма контекста.
TGI — стек обслуживания от Hugging Face
docker run --runtime nvidia --gpus all \
-v ~/.cache/huggingface:/root/.cache/huggingface \
-p 8000:8000 --ipc=host \
vllm/vllm-openai:latest \
--model meta-llama/Llama-3.1-8B-Instruct
TGI сосредоточен на производственном обслуживании моделей Hugging Face с использованием механизмов стриминга и отслеживания. Сравните время задержки и сложность операций с vLLM для ваших моделей.
Модель мышления плечом к плечу
client = OpenAI(base_url="http://localhost:8000/v1", api_key="dummy") # ← base_url changed
resp = client.chat.completions.create(
model="meta-llama/Llama-3.1-8B-Instruct", # ← model changed
messages=[{"role": "user", "content": "Explain KV cache in one sentence."}],
)
print(resp.choices[0].message.content)
- Ollama: распределенная обработка и локальные итерации
- vLLM: количество токенов в секунду на NVIDIA при одновременной работе
- TGI: обслуживание проектов, ориентированных на HF
Ваша очередь
docker run --gpus all --shm-size 1g -p 8080:80 \
-v ~/.cache/huggingface:/data \
ghcr.io/huggingface/text-generation-inference:latest \
--model-id meta-llama/Llama-3.1-8B-Instruct
Подайте один и тот же запрос каждому серверу, запишите время отклика и количество токенов в секунду, затем определите, какой движок подойдет для вашего следующего проекта — демо-версия на ноутбуке, внутренняя система с GPU или API для нескольких пользователей.
Сделайте процесс развертывания простым: используйте compose для настройки, проверки работоспособности и единый способ замены моделей. Именно простота позволяет внутренним инструментам выдерживать реальные рабочие графики.
Сделайте процесс развертывания простым: используйте compose для настройки, проверки работоспособности и единый способ замены моделей. Именно простота позволяет внутренним инструментам выдерживать реальные рабочие графики.
Сделайте процесс развертывания простым: использование Compose, проверки работоспособности и единое место для замены моделей. Именно простота позволяет внутренним инструментам выдерживать работу с реальными графиками дежурств.
Сделайте процесс развертывания простым: использование Compose, проверки работоспособности и единое место для замены моделей. Именно простота позволяет внутренним инструментам выдерживать работу с реальными графиками дежурств.
Сделайте процесс развертывания простым: использование Compose, проверки работоспособности и единое место для замены моделей. Именно простота позволяет внутренним инструментам выдерживать работу с реальными графиками дежурств.
Сделайте процесс развертывания простым: использование Compose, проверки работоспособности и единое место для замены моделей. Именно простота позволяет внутренним инструментам выдерживать работу с реальными графиками дежурств.
Сделайте процесс развертывания простым: использование Compose, проверки работоспособности и единое место для замены моделей. Именно простота позволяет внутренним инструментам выдерживать работу с реальными графиками дежурств.
Сделайте процесс развертывания простым: использование Compose, проверки работоспособности и единое место для замены моделей. Именно простота позволяет внутренним инструментам выдерживать работу с реальными графиками дежурств.
Сделайте процесс развертывания простым: использование Compose, проверки работоспособности и единое место для замены моделей. Именно простота позволяет внутренним инструментам выдерживать работу с реальными графиками дежурств.
Сделайте процесс развертывания простым: использование Compose, проверки работоспособности и единое место для замены моделей. Именно простота позволяет внутренним инструментам выдерживать работу с реальными графиками дежурств.
Сделайте процесс развертывания простым: использование Compose, проверки работоспособности и единое место для замены моделей. Именно простота позволяет внутренним инструментам выдерживать работу с реальными графиками дежурств.
Сделайте процесс развертывания простым: использование Compose, проверки работоспособности и единое место для замены моделей. Именно простота позволяет внутренним инструментам выдерживать работу с реальными графиками дежурств.
Сделайте процесс развертывания простым: использование Compose, проверки работоспособности и единое место для замены моделей. Именно простота позволяет внутренним инструментам выдерживать работу с реальными графиками дежурств.
Сделайте процесс развертывания простым: использование Compose, проверки работоспособности и единое место для замены моделей. Именно простота позволяет внутренним инструментам выдерживать работу с реальными графиками дежурств.
Сделайте процесс развертывания простым: использование Compose, проверки работоспособности и единое место для замены моделей. Именно простота позволяет внутренним инструментам выдерживать работу с реальными графиками дежурств.
Сделайте процесс развертывания простым: использование Compose, проверки работоспособности и единое место для замены моделей. Именно простота позволяет внутренним инструментам выдерживать работу с реальными графиками дежурств.
Сделайте процесс развертывания простым: использование Compose, проверки работоспособности и единое место для замены моделей. Именно простота позволяет внутренним инструментам выдерживать работу с реальными графиками дежурств.
Сделайте процесс развертывания простым: использование Compose, проверки работоспособности и единое место для замены моделей. Именно простота позволяет внутренним инструментам выдерживать работу с реальными графиками дежурств.
Сделайте процесс развертывания простым: использование Compose, проверки работоспособности и единое место для замены моделей. Именно простота позволяет внутренним инструментам выдерживать работу с реальными графиками дежурств.
Сделайте процесс развертывания простым: использование Compose, проверки работоспособности и единое место для замены моделей. Именно простота позволяет внутренним инструментам выдерживать работу с реальными графиками дежурств.
Сделайте процесс развертывания простым: использование Compose, проверки работоспособности и единое место для замены моделей. Именно простота позволяет внутренним инструментам выдерживать работу с реальными графиками дежурств.
Сделайте процесс развертывания простым: использование Compose, проверки работоспособности и единое место для замены моделей. Именно простота позволяет внутренним инструментам выдерживать работу с реальными графиками дежурств.
Сделайте процесс развертывания простым: использование Compose, проверки работоспособности и единое место для замены моделей. Именно простота позволяет внутренним инструментам выдерживать нагрузку реальных графиков дежурств.
Сделайте процесс развертывания простым: использование Compose, проверки работоспособности и единое место для замены моделей. Именно простота позволяет внутренним инструментам выдерживать нагрузку реальных графиков дежурств.
Сделайте процесс развертывания простым: использование Compose, проверки работоспособности и единое место для замены моделей. Именно простота позволяет внутренним инструментам выдерживать нагрузку реальных графиков дежурств.