Главная / Статьи

Практическое использование сервисов LLM: Ollama, vLLM и TGI

Слой обслуживания, преобразующий файлы моделей в API LLM: Ollama для локальной работы, vLLM и Hugging Face TGI для GPU, а также то, чего не хватает обычным трансформерам.

Издатель: REACTAPP.TOP5 мин чтения1118 слов

Источники: 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, проверки работоспособности и единое место для замены моделей. Именно простота позволяет внутренним инструментам выдерживать нагрузку реальных графиков дежурств.