# Обслуживание LLM: Ollama vs vLLM vs TGI

Выберите подходящее решение для обслуживания LLM в соответствии с вашими потребностями на CLORE.AI.

{% hint style="success" %}
Все варианты доступны на [CLORE.AI Marketplace](https://clore.ai/marketplace).
{% endhint %}

{% hint style="info" %}
**Обновление 2025:** SGLang зарекомендовал себя как фреймворк высшего уровня, часто **превосходящий vLLM** по показателям пропускной способности и TTFT. Рекомендуются vLLM v0.7 и SGLang v0.4 для рабочей нагрузки в продакшене.
{% endhint %}

## Краткое руководство для принятия решения

| Случай использования                         | Лучший выбор            | Почему                                        |
| -------------------------------------------- | ----------------------- | --------------------------------------------- |
| Быстрое тестирование и чат                   | **Ollama**              | Самая простая настройка, самый быстрый запуск |
| Продакшен API (макс. пропускная способность) | **SGLang** или **vLLM** | Наивысшая пропускная способность в 2025 году  |
| Модели для рассуждений (DeepSeek-R1)         | **SGLang**              | Лучшая поддержка цепочек рассуждений          |
| Интеграция HuggingFace                       | **TGI**                 | Нативная поддержка HF                         |
| Локальная разработка                         | **Ollama**              | Работает везде                                |
| Высокая конкуренция (конкурентность)         | **SGLang** или **vLLM** | Непрерывная пакетная обработка                |
| Мультимодальность (TTS, STT, встраивания)    | **LocalAI**             | Универсальное решение «всё в одном»           |
| Потоковые приложения                         | **vLLM** или **SGLang** | Оба отличные                                  |

## Сравнение времени запуска

| Решение | Типичный запуск | Примечания                      |
| ------- | --------------- | ------------------------------- |
| Ollama  | 30–60 секунд    | Самый быстрый, лёгкий           |
| SGLang  | 3–8 минут       | Скачивает модель с HF           |
| vLLM    | 5–15 минут      | Скачивает модель с HF           |
| TGI     | 3–10 минут      | Скачивает модель с HF           |
| LocalAI | 5–10 минут      | Предзагружает несколько моделей |

{% hint style="info" %}
HTTP 502 ошибки во время запуска нормальны — сервис всё ещё инициализируется.
{% endhint %}

***

## Обзорное сравнение

| Функция                  | Ollama                    | vLLM          | SGLang                  | TGI                       | LocalAI               |
| ------------------------ | ------------------------- | ------------- | ----------------------- | ------------------------- | --------------------- |
| **Простота настройки**   | ⭐⭐⭐⭐⭐                     | ⭐⭐⭐           | ⭐⭐⭐                     | ⭐⭐⭐                       | ⭐⭐⭐⭐                  |
| **Производительность**   | ⭐⭐⭐                       | ⭐⭐⭐⭐⭐         | ⭐⭐⭐⭐⭐                   | ⭐⭐⭐⭐                      | ⭐⭐⭐                   |
| **Поддержка моделей**    | ⭐⭐⭐⭐                      | ⭐⭐⭐⭐⭐         | ⭐⭐⭐⭐⭐                   | ⭐⭐⭐⭐                      | ⭐⭐⭐⭐                  |
| **Совместимость API**    | Пользовательские + OpenAI | OpenAI        | OpenAI                  | Пользовательские + OpenAI | OpenAI                |
| **Мульти-GPU**           | Ограничено                | Отлично       | Отлично                 | Хорошо                    | Ограничено            |
| **Эффективность памяти** | Хорошо                    | Отлично       | Отлично                 | Очень хорошо              | Хорошо                |
| **Мультимодальность**    | Только зрение             | Только зрение | Только зрение           | Нет                       | TTS, STT, встраивания |
| **Время запуска**        | 30 сек                    | 5–15 мин      | 3–8 мин                 | 3–10 мин                  | 5–10 мин              |
| **Модели рассуждений**   | Ограничено                | Хорошо        | Отлично                 | Хорошо                    | Ограничено            |
| **Лучше всего для**      | Разработка                | Продакшен     | Продакшен + рассуждения | Экосистема HF             | Мультимодальность     |

***

## Бенчмарки 2025: DeepSeek-R1-32B

### TTFT, TPOT и пропускная способность (A100 80GB, batch=32, input=512, output=512)

| Фреймворк       | TTFT (мс) | TPOT (мс/ток) | Пропускная способность (ток/с) | Примечания                       |
| --------------- | --------- | ------------- | ------------------------------ | -------------------------------- |
| **SGLang v0.4** | **180**   | **14**        | **2,850**                      | Лучший в целом в 2025            |
| **vLLM v0.7**   | 240       | 17            | 2,400                          | Отличный, близок к SGLang        |
| llama.cpp       | 420       | 28            | 1,100                          | CPU+GPU, квантизированный        |
| Ollama          | 510       | 35            | 820                            | Приоритет простоты использования |

> **TTFT** = Время до первого токена (латентность). **TPOT** = Время на выходной токен. Меньше — лучше для обоих показателей.

### Сравнение пропускной способности (RTX 4090, Llama 3.1 8B, 10 одновременных пользователей)

| Фреймворк   | Токенов/с | Одновременные пользователи | Примечания                    |
| ----------- | --------- | -------------------------- | ----------------------------- |
| SGLang v0.4 | 920       | 20-30                      | Кэширование внимания Radix    |
| vLLM v0.7   | 870       | 20-30                      | PagedAttention                |
| TGI         | 550       | 10-20                      |                               |
| Ollama      | 160\*     | —                          | По умолчанию последовательная |

\*Ollama обслуживает запросы по умолчанию последовательно

***

## SGLang

### Обзор

SGLang (Structured Generation Language) — это фреймворк для обслуживания LLM с высокой пропускной способностью, разработанный исследователями из UC Berkeley и LMSYS. В бенчмарках 2025 года он часто сравнивается с vLLM или превосходит его — особенно для моделей рассуждений, таких как DeepSeek-R1.

### Плюсы

* ✅ Часто самое быстрое TTFT и пропускная способность в бенчмарках 2025
* ✅ Radix attention для эффективного повторного использования KV-кэша
* ✅ Отличная поддержка моделей рассуждений (DeepSeek-R1, QwQ)
* ✅ Совместимый с API OpenAI
* ✅ Непрерывная пакетная обработка и кэширование префиксов
* ✅ Поддержка спекулятивной декодировки
* ✅ Тензорный параллелизм на нескольких GPU

### Минусы

* ❌ Новая экосистема, меньше ресурсов сообщества, чем у vLLM
* ❌ Более сложная настройка, чем у Ollama
* ❌ Только для Linux

### Быстрый старт

```bash
pip install sglang[all]

# Запустить модель как сервис
python -m sglang.launch_server \
    --model-path meta-llama/Llama-3.1-8B-Instruct \
    --host 0.0.0.0 \
    --port 8000
```

### DeepSeek-R1 с SGLang

```bash
python -m sglang.launch_server \
    --model-path deepseek-ai/DeepSeek-R1-Distill-Qwen-32B \
    --host 0.0.0.0 \
    --port 8000 \
    --tp 2 \
    --reasoning-parser deepseek-r1
```

### Использование API

```python
from openai import OpenAI

client = OpenAI(base_url='http://localhost:8000/v1', api_key='dummy')

response = client.chat.completions.create(
    model='meta-llama/Llama-3.1-8B-Instruct',
    messages=[
        {'role': 'user', 'content': 'Объясните квантовую запутанность'}
    ],
    temperature=0.7,
    max_tokens=512
)
print(response.choices[0].message.content)
```

### Мульти-GPU

```bash
# 2 GPU (тензорный параллелизм)
python -m sglang.launch_server \
    --model-path meta-llama/Llama-3.1-70B-Instruct \
    --host 0.0.0.0 \
    --port 8000 \
    --tp 2
```

### Лучше всего для

* 🎯 Максимальная пропускная способность для продакшен API
* 🎯 Модели рассуждений (DeepSeek-R1, QwQ, o1-стиль)
* 🎯 Приложения с низкой задержкой (TTFT)
* 🎯 Нагрузки с большим числом префиксов (высокое повторное использование KV-кэша)

***

## Ollama

### Обзор

Ollama — самый простой способ запускать LLM локально. Идеально подходит для разработки, тестирования и личного использования.

### Плюсы

* ✅ Установка и запуск одной командой
* ✅ Встроенная библиотека моделей
* ✅ Отличный опыт работы с CLI
* ✅ Работает на Mac, Linux, Windows
* ✅ Автоматическая квантизация
* ✅ Низкая нагрузка на ресурсы

### Минусы

* ❌ Меньшая пропускная способность по сравнению с альтернативами
* ❌ Ограниченная поддержка мульти-GPU
* ❌ Менее готов к продакшену
* ❌ Меньше вариантов оптимизации

### Быстрый старт

```bash
# Установить
curl -fsSL https://ollama.com/install.sh | sh

# Запустить любую модель
ollama run llama3.2
ollama run mistral
ollama run codellama

# Запустить API сервиса
ollama serve
```

### Использование API

```python
import requests

# Генерация
response = requests.post('http://localhost:11434/api/generate', json={
    'model': 'llama3.2',
    'prompt': 'Объясните квантовые вычисления',
    'stream': False
})
print(response.json()['response'])

# Chat
response = requests.post('http://localhost:11434/api/chat', json={
    'model': 'llama3.2',
    'messages': [
        {'role': 'user', 'content': 'Hello!'}
    ]
})
```

### Совместимость с OpenAI

```python
from openai import OpenAI

client = OpenAI(base_url='http://localhost:11434/v1', api_key='ollama')

response = client.chat.completions.create(
    model='llama3.2',
    messages=[{'role': 'user', 'content': 'Привет!'}]
)
```

### Производительность

| Модель        | GPU       | Токенов/с |
| ------------- | --------- | --------- |
| Llama 3.2 3B  | RTX 3060  | 45-55     |
| Llama 3.1 8B  | RTX 3090  | 35-45     |
| Llama 3.1 70B | A100 40GB | 15-20     |

### Лучше всего для

* 🎯 Быстрое прототипирование
* 🎯 Личный AI-ассистент
* 🎯 Обучение и эксперименты
* 🎯 Простые развёртывания

***

## vLLM

### Обзор

vLLM — проверенный движок вывода LLM с высокой пропускной способностью для продакшена. v0.7 (2025) приносит улучшённую производительность, лучшую поддержку квантизации и новые опции спекулятивной декодировки.

### Плюсы

* ✅ Самая высокая пропускная способность (непрерывная пакетная обработка + PagedAttention)
* ✅ PagedAttention для эффективного использования памяти
* ✅ Отличная поддержка мульти-GPU
* ✅ Совместимый с API OpenAI
* ✅ Готов к продакшену, большое сообщество
* ✅ Поддерживает многие форматы квантизации (AWQ, GPTQ, FP8)
* ✅ Спекулятивная декодировка в v0.7

### Минусы

* ❌ Более сложная настройка
* ❌ Большие накладные расходы по памяти при запуске
* ❌ Только для Linux (нет нативной поддержки Windows/Mac)
* ❌ Требует больше конфигурации

### Быстрый старт

```bash
pip install vllm

# Развернуть модель (vLLM v0.7)
python -m vllm.entrypoints.openai.api_server \
    --model meta-llama/Llama-3.1-8B-Instruct \
    --host 0.0.0.0 \
    --port 8000
```

### Docker-развёртывание

```bash
docker run --gpus all -p 8000:8000 \
    vllm/vllm-openai:v0.7.0 \
    --model meta-llama/Llama-3.1-8B-Instruct
```

### Использование API

```python
from openai import OpenAI

client = OpenAI(base_url='http://localhost:8000/v1', api_key='dummy')

# Chat completion
response = client.chat.completions.create(
    model='meta-llama/Llama-3.1-8B-Instruct',
    messages=[
        {'role': 'system', 'content': 'Вы полезны.'},
        {'role': 'user', 'content': 'Напишите хокку о программировании'}
    ],
    temperature=0.7,
    max_tokens=100
)

# Streaming
stream = client.chat.completions.create(
    model='meta-llama/Llama-3.1-8B-Instruct',
    messages=[{'role': 'user', 'content': 'Расскажи мне историю'}],
    stream=True
)
for chunk in stream:
    print(chunk.choices[0].delta.content, end='')
```

### Мульти-GPU

```bash
# 2 GPUs
python -m vllm.entrypoints.openai.api_server \
    --model meta-llama/Llama-3.1-70B-Instruct \
    --tensor-parallel-size 2

# 4 GPUs
python -m vllm.entrypoints.openai.api_server \
    --model meta-llama/Llama-3.1-70B-Instruct \
    --tensor-parallel-size 4
```

### Производительность

| Модель        | GPU       | Токенов/с | Одновременные пользователи |
| ------------- | --------- | --------- | -------------------------- |
| Llama 3.1 8B  | RTX 3090  | 80-100    | 10-20                      |
| Llama 3.1 8B  | RTX 4090  | 120-150   | 20-30                      |
| Llama 3.1 70B | A100 40GB | 25-35     | 5-10                       |
| Llama 3.1 70B | 2x A100   | 50-70     | 15-25                      |

### Лучше всего для

* 🎯 Продакшен API с большим сообществом
* 🎯 Приложения с большим трафиком
* 🎯 Сервисы чата для множества пользователей
* 🎯 Потребность в максимальной пропускной способности

***

## Text Generation Inference (TGI)

### Обзор

Продакшен-сервер HuggingFace, тесно интегрированный с экосистемой HF.

### Плюсы

* ✅ Нативная интеграция с HuggingFace
* ✅ Отлично подходит для HF-моделей
* ✅ Хорошая поддержка мульти-GPU
* ✅ Встроенные функции безопасности
* ✅ Метрики Prometheus
* ✅ Хорошая документация

### Минусы

* ❌ Немного ниже пропускная способность, чем у vLLM/SGLang
* ❌ Более ресурсоёмкий
* ❌ Сложная конфигурация
* ❌ Более долгие времена запуска

### Быстрый старт

```bash
# Docker (рекомендуется)
docker run --gpus all -p 8080:80 \
    ghcr.io/huggingface/text-generation-inference:latest \
    --model-id meta-llama/Llama-3.1-8B-Instruct

# С токеном HF для моделей с доступом по ограничению
docker run --gpus all -p 8080:80 \
    -e HUGGING_FACE_HUB_TOKEN=$HF_TOKEN \
    ghcr.io/huggingface/text-generation-inference:latest \
    --model-id meta-llama/Llama-3.1-8B-Instruct
```

### Производительность

| Модель        | GPU       | Токенов/с | Одновременные пользователи |
| ------------- | --------- | --------- | -------------------------- |
| Llama 3.1 8B  | RTX 3090  | 60-80     | 8-15                       |
| Llama 3.1 8B  | RTX 4090  | 90-120    | 15-25                      |
| Llama 3.1 70B | A100 40GB | 20-30     | 3-8                        |

### Лучше всего для

* 🎯 Пользователи моделей HuggingFace
* 🎯 Исследовательские окружения
* 🎯 Нужны встроенные функции безопасности
* 🎯 Нужен мониторинг Prometheus

***

## LocalAI

### Обзор

LocalAI — совместимый с OpenAI API сервис, поддерживающий несколько модальностей: LLM, TTS, STT, встраивания и генерацию изображений.

### Плюсы

* ✅ Поддержка мультимодальности (LLM, TTS, STT, встраивания)
* ✅ Прямой заменитель OpenAI
* ✅ Доступны предсобранные модели
* ✅ Поддержка GGUF-моделей
* ✅ Поддержка повторного ранжирования
* ✅ Документация Swagger UI

### Минусы

* ❌ Более долгий запуск (5–10 минут)
* ❌ Низшая пропускная способность LLM по сравнению с vLLM/SGLang
* ❌ При генерации изображений возможны проблемы с CUDA
* ❌ Более сложен для чистого использования LLM

### Быстрый старт

```bash
docker run --gpus all -p 8080:8080 localai/localai:master-aio-gpu-nvidia-cuda-12
```

### Использование API

```python
from openai import OpenAI

client = OpenAI(base_url='http://localhost:8080/v1', api_key='dummy')

# Chat
response = client.chat.completions.create(
    model='gpt-4',
    messages=[{'role': 'user', 'content': 'Привет!'}]
)

# TTS
audio = client.audio.speech.create(model='tts-1', input='Hello world', voice='alloy')

# STT
transcript = client.audio.transcriptions.create(model='whisper-1', file=open('audio.mp3', 'rb'))

# Встраивания
embeddings = client.embeddings.create(model='text-embedding-ada-002', input='Hello world')
```

### Лучше всего для

* 🎯 Нужны несколько модальностей (TTS, STT, LLM)
* 🎯 Хотите совместимость с OpenAI API
* 🎯 Запуск GGUF-моделей
* 🎯 Рабочие процессы повторного ранжирования документов

***

## Сравнение производительности (2025)

### Пропускная способность (токенов/сек) — Один пользователь

| Модель                    | Ollama | vLLM v0.7 | SGLang v0.4 | TGI |
| ------------------------- | ------ | --------- | ----------- | --- |
| Llama 3.1 8B (RTX 3090)   | 40     | 90        | 100         | 70  |
| Llama 3.1 8B (RTX 4090)   | 65     | 140       | 160         | 110 |
| Llama 3.1 70B (A100 40GB) | 18     | 30        | 35          | 25  |

### Пропускная способность — Несколько пользователей (10 одновременных)

| Модель                    | Ollama | vLLM v0.7 | SGLang v0.4 | TGI |
| ------------------------- | ------ | --------- | ----------- | --- |
| Llama 3.1 8B (RTX 4090)   | 150\*  | 800       | 920         | 500 |
| Llama 3.1 70B (A100 40GB) | 50\*   | 200       | 240         | 150 |

\*Ollama обслуживает последовательно по умолчанию

### Использование памяти

| Модель             | Ollama | vLLM v0.7 | SGLang v0.4 | TGI  |
| ------------------ | ------ | --------- | ----------- | ---- |
| Llama 3.1 8B       | 5 ГБ   | 6 ГБ      | 6 ГБ        | 7GB  |
| Llama 3.1 70B (Q4) | 38GB   | 40GB      | 39GB        | 42GB |

### Время до первого токена (TTFT) — DeepSeek-R1-32B

| Фреймворк   | TTFT (A100 80GB) | TPOT (мс/ток) |
| ----------- | ---------------- | ------------- |
| SGLang v0.4 | **180ms**        | **14мс**      |
| vLLM v0.7   | 240мс            | 17мс          |
| llama.cpp   | 420мс            | 28мс          |
| Ollama      | 510мс            | 35мс          |

***

## Сравнение функций

| Функция                        | Ollama     | vLLM v0.7      | SGLang v0.4    | TGI               | LocalAI    |
| ------------------------------ | ---------- | -------------- | -------------- | ----------------- | ---------- |
| OpenAI API                     | ✅          | ✅              | ✅              | ✅                 | ✅          |
| Потоковая передача (Streaming) | ✅          | ✅              | ✅              | ✅                 | ✅          |
| Пакетная обработка             | Базовый    | Непрерывная    | Непрерывная    | Динамическая      | Базовый    |
| Мульти-GPU                     | Ограничено | Отлично        | Отлично        | Хорошо            | Ограничено |
| Квантование                    | GGUF       | AWQ, GPTQ, FP8 | AWQ, GPTQ, FP8 | bitsandbytes, AWQ | GGUF       |
| LoRA                           | ✅          | ✅              | ✅              | ✅                 | ✅          |
| Спекулятивная декодировка      | ❌          | ✅              | ✅              | ✅                 | ❌          |
| Кэширование префиксов          | ❌          | ✅              | ✅ (Radix)      | ✅                 | ❌          |
| Модели рассуждений             | Ограничено | Хорошо         | Отлично        | Хорошо            | Ограничено |
| Метрики                        | Базовый    | Prometheus     | Prometheus     | Prometheus        | Prometheus |
| Вызов функций                  | ✅          | ✅              | ✅              | ✅                 | ✅          |
| Модели зрения                  | ✅          | ✅              | ✅              | ✅                 | Ограничено |
| TTS                            | ❌          | ❌              | ❌              | ❌                 | ✅          |
| STT                            | ❌          | ❌              | ❌              | ❌                 | ✅          |
| Эмбеддинги                     | ✅          | Ограничено     | Ограничено     | Ограничено        | ✅          |

***

## Когда что использовать

### Используйте Ollama, когда:

* Вы хотите начать за 5 минут
* Вы прототипируете или учитесь
* Вам нужен личный AI-ассистент
* Вы на Mac или Windows
* Простота важнее скорости

### Используйте SGLang, когда:

* Вам нужна **абсолютно минимальная задержка** (TTFT)
* Вы обслуживаете **модели рассуждений** (DeepSeek-R1, QwQ, o1-стиль)
* У вас нагрузки с большим **обменом префиксами** (RAG, системные подсказки)
* Вам нужна топовая пропускная способность в бенчмарках 2025
* Вы хотите передовые оптимизации (Radix attention)

### Используйте vLLM, когда:

* Вам нужна максимальная пропускная способность с **зрелым, хорошо поддерживаемым** фреймворком
* Вы обслуживаете много пользователей в масштабе
* Вам нужна надёжность продакшена с большим сообществом
* Вы хотите прямую замену OpenAI
* У вас мульти-GPU конфигурации
* Вам нужна широкая поддержка форматов моделей (AWQ, GPTQ, FP8)

### Используйте TGI, когда:

* Вы в экосистеме HuggingFace
* Вам нужны встроенные функции безопасности
* Вы хотите подробные метрики Prometheus
* Вам нужно обслуживать модели HF напрямую
* Вы в исследовательской среде

### Используйте LocalAI, когда:

* Вам нужны TTS и STT вместе с LLM
* Вам нужны встраивания для RAG
* Вам нужно повторное ранжирование документов
* Вы хотите единое решение «всё в одном»
* Вы создаёте приложения с поддержкой голоса

***

## Руководство по миграции

### От Ollama к SGLang

```python
# Ollama
client = OpenAI(base_url='http://localhost:11434/v1', api_key='ollama')
response = client.chat.completions.create(model='llama3.2', ...)

# SGLang — просто поменяйте URL и имя модели
client = OpenAI(base_url='http://localhost:8000/v1', api_key='dummy')
response = client.chat.completions.create(model='meta-llama/Llama-3.2-3B-Instruct', ...)
```

### От vLLM к SGLang

Обе поддерживают OpenAI API — просто поменяйте URL эндпоинта. API полностью совместимы.

```bash
# vLLM
python -m vllm.entrypoints.openai.api_server --model ... --port 8000

# SGLang (эквивалент)
python -m sglang.launch_server --model-path ... --port 8000
```

***

## Рекомендации по GPU

| GPU           | Один пользователь | Много пользователей | Модели рассуждений |
| ------------- | ----------------- | ------------------- | ------------------ |
| RTX 3060 12GB | Ollama            | Ollama              | Ollama             |
| RTX 3090 24GB | Ollama            | vLLM                | SGLang             |
| RTX 4090 24GB | SGLang/vLLM       | SGLang/vLLM         | SGLang             |
| A100 40GB+    | SGLang            | SGLang              | SGLang             |

***

## Дальнейшие шаги

* [Руководство по Ollama](/guides/guides_v2-ru/yazykovye-modeli/ollama.md) - Самая простая настройка
* [Руководство по vLLM](/guides/guides_v2-ru/yazykovye-modeli/vllm.md) - Наивысшая пропускная способность
* [Руководство по LocalAI](/guides/guides_v2-ru/yazykovye-modeli/localai-openai-compatible.md) - Поддержка мультимодальности
* [Руководство по DeepSeek-R1](/guides/guides_v2-ru/yazykovye-modeli/deepseek-r1.md) - Модели рассуждений
* [Настройка Multi-GPU](/guides/guides_v2-ru/prodvinutye/multi-gpu-setup.md) - Масштабирование до больших моделей
* [Интеграция API](/guides/guides_v2-ru/prodvinutye/api-integration.md) - Создавайте приложения


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.clore.ai/guides/guides_v2-ru/sravneniya/llm-serving-comparison.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
