# Как ускорить DeepSeek с помощью DeepInfer: установка и настройка инференса

> AI Release · @ai_release1 · https://ai-release.org/guides/kak-uskorit-deepseek-s-pomoschyu-deepinfer-ustanovka-i.html

## TL;DR

- Время выполнения: 40–60 минут (без учёта скачивания весов модели)
- Уровень сложности: Intermediate
- Понадобится: Linux x86_64, NVIDIA GPU с установленным драйвером (проверяется командой `nvidia-smi`), `git`, Python 3 с модулем `venv`, свободное место на диске под веса модели, доступ к github.com. Точный список поддерживаемых конфигураций и лицензия в анонсе DeepInfer не раскрывались — их нужно сверить с README и файлом `LICENSE` в репозитории `deepseek-ai/DeepInfer`.

## Требования и подготовка
![Иллюстрация к разделу «Требования и подготовка»](https://ai-release.org/guides/img/kak-uskorit-deepseek-s-pomoschyu-deepinfer-ustanovka-i-ru-1.jpg)


- ОС: Linux (команды ниже — для bash). Для Windows используйте WSL2, пути и запуск скриптов будут те же.
- GPU: NVIDIA с драйвером, который виден системе. Без рабочего `nvidia-smi` движок запустится только на CPU либо не запустится вовсе.
- Python 3 и `venv` — изолированное окружение, чтобы зависимости DeepInfer не сломали системные пакеты. Минимальная версия — сверьтесь с README репозитория.
- `git` — для клонирования `deepseek-ai/DeepInfer`.
- Свободное место: под веса модели и кэш сборки. Конкретный объём зависит от выбранной модели — сверьтесь с документацией.
- Права: достаточно прав обычного пользователя в своём домашнем каталоге; `sudo` нужен только для установки драйвера, если его ещё нет.
- Лицензия: в анонсе она не раскрыта. Перед коммерческим использованием откройте `LICENSE` в репозитории — сверьтесь с документацией.
- Если ещё не выбрали, какую модель DeepSeek гонять через DeepInfer, сначала посмотрите [сравнение ИИ-ассистентов](https://ai-release.org/guides/sravnenie-ii-assistentov.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide) — там разобрано, чем DeepSeek отличается от ChatGPT, Claude и Gemini.

Почему это важно: DeepInfer — это инференс-движок, то есть программная обвязка, которая непосредственно запускает модель и генерирует ответы. Он не заменяет драйвер и не скачивает веса за вас: окружение готовите вы.

**Пример:** на машине с одним GPU проверка занимает три команды и даёт три конкретных ответа — версию ядра, таблицу GPU и версию Python.

## Шаг 1. Проверить железо и зафиксировать базовую скорость

**Что сделать:** убедиться, что GPU и драйвер видны системе, и записать, сколько сейчас занимает один ответ модели — до установки DeepInfer.

**Зачем:** без рабочего драйвера все дальнейшие шаги бессмысленны, а без числа «до» вы не сможете доказать, что движок что-то ускорил. Замер «до» — единственная честная база для сравнения.

**Как проверить:** выполните блок команд и сравните вывод с ожидаемым.

```bash
uname -srm
nvidia-smi
python3 --version
git --version
df -h ~
nproc && free -g
```

Ожидаемый результат:

- `uname -srm` → строка вида `Linux 6.8.0-40-generic x86_64`;
- `nvidia-smi` → таблица с именем GPU, объёмом памяти и строкой `CUDA Version: <номер>` в правом верхнем углу;
- `python3 --version` → `Python 3.<x>.<y>`;
- `df -h ~` → в колонке `Avail` должно остаться место под веса;
- `nproc` и `free -g` → число ядер CPU и объём RAM в гигабайтах.

Затем замерьте базовую линию: задайте один и тот же вопрос тем способом, которым пользуетесь сейчас (веб-интерфейс, другой движок), и запишите время до последнего токена. Записывайте в одну строку: `дата, способ, модель, вопрос, секунды`.

**Пример:** вопрос «Напиши 3 факта о Луне», базовый способ — веб-интерфейс, результат — 12,4 с. Это ваше число «до».

Почему это работает: `nvidia-smi` обращается к драйверу напрямую, поэтому его успешный вывод — самый надёжный признак, что GPU доступен будущему движку.

## Шаг 2. Развернуть DeepInfer из репозитория
![Иллюстрация к разделу «Шаг 2. Развернуть DeepInfer из репозитория»](https://ai-release.org/guides/img/kak-uskorit-deepseek-s-pomoschyu-deepinfer-ustanovka-i-ru-2.jpg)


**Что сделать:** склонировать репозиторий `deepseek-ai/DeepInfer`, создать виртуальное окружение, установить зависимости так, как предписывает README, скачать веса и запустить движок.

**Зачем:** это ключевой этап — именно здесь вы получаете работающий процесс, который держит модель в памяти GPU и отдаёт ответы.

**Как проверить:** после запуска процесс должен слушать порт, а в логах — не быть ошибок.

```bash
mkdir -p ~/work && cd ~/work
git clone https://github.com/deepseek-ai/DeepInfer.git
cd DeepInfer
ls
cat README.md
```

Что смотреть в `ls` и `README.md`: файл зависимостей (`requirements.txt` или `pyproject.toml`), точку входа (скрипт или модуль), флаги запуска и способ указания пути к весам. Всё, что не совпадает с примером ниже, берите из README — сверьтесь с документацией.

```bash
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install -r requirements.txt
```

Если в README указан другой способ установки (`pip install -e .`, `make`, Docker-образ) — используйте его: инструкция репозитория приоритетнее универсальной.

Веса модели скачиваются отдельно. Имя репозитория весов и путь сохранения сверьте с документацией; ниже — шаблон с плейсхолдерами.

```bash
# <репозиторий-весов> и <локальный-каталог> подставьте из README
huggingface-cli download <репозиторий-весов> --local-dir ~/models/<локальный-каталог>
du -sh ~/models/<локальный-каталог>
```

Для запуска положите рядом файл-обёртку, чтобы не набирать длинную команду каждый раз. Значения в угловых скобках замените на реальные из README.

```bash
#!/usr/bin/env bash
# run.sh — обёртка запуска DeepInfer
set -euo pipefail
export MODEL_PATH="${MODEL_PATH:-$HOME/models/<локальный-каталог>}"
export PORT="${PORT:-8000}"
exec python <точка-входа-из-README> --model "$MODEL_PATH" --port "$PORT"
```

```bash
chmod +x run.sh
./run.sh
```

Проверка в соседнем терминале:

```bash
ss -ltnp | grep 8000
nvidia-smi --query-compute-apps=pid,used_memory --format=csv
```

Ожидаемый результат: `ss` показывает `LISTEN` на порту 8000, а `nvidia-smi` — процесс Python с ненулевым `used_memory`. Это значит, что модель загружена в видеопамять, а не считается на CPU.

**Пример:** если `nvidia-smi --query-compute-apps` пуст, а порт слушается — модель ушла на CPU; вернитесь к README и проверьте флаг выбора устройства.

Почему это работает: виртуальное окружение изолирует зависимости, а переменные окружения `MODEL_PATH` и `PORT` позволяют менять модель и порт без правки скрипта.

## Шаг 3. Проверить генерацию и сравнить скорость с базовой линией
![Иллюстрация к разделу «Шаг 3. Проверить генерацию и сравнить скорость с базовой линией»](https://ai-release.org/guides/img/kak-uskorit-deepseek-s-pomoschyu-deepinfer-ustanovka-i-ru-3.jpg)


**Что сделать:** отправить реальный запрос к движку, прогнать пять замеров подряд и сравнить среднее с числом из Шага 1.

**Зачем:** «процесс запустился» не равно «движок отвечает». Нужен ответ модели и стабильная latency (задержка на один запрос).

**Как проверить:** сначала одиночный запрос, затем серия замеров.

```bash
curl -s http://127.0.0.1:8000/v1/chat/completions \
  -H 'Content-Type: application/json' \
  -d '{"model":"<имя-модели>","messages":[{"role":"user","content":"Напиши 3 факта о Луне"}],"max_tokens":128}'
```

Если движок отдаёт OpenAI-совместимый эндпоинт, вы увидите JSON с полем `choices`. Точный путь эндпоинта и формат тела запроса сверьте с README — сверьтесь с документацией.

Замер серией запросов (только стандартная библиотека, ставить ничего не нужно):

```python
import json, time, urllib.request

URL = "http://127.0.0.1:8000/v1/chat/completions"
PAYLOAD = {
    "model": "<имя-модели>",
    "messages": [{"role": "user", "content": "Напиши 3 факта о Луне"}],
    "max_tokens": 128,
}

def once():
    req = urllib.request.Request(
        URL, data=json.dumps(PAYLOAD).encode(),
        headers={"Content-Type": "application/json"},
    )
    t0 = time.perf_counter()
    with urllib.request.urlopen(req, timeout=120) as r:
        body = json.load(r)
    dt = time.perf_counter() - t0
    tok = body.get("usage", {}).get("completion_tokens", 0)
    return dt, tok

for i in range(5):
    dt, tok = once()
    print(f"запрос {i+1}: {dt:.2f} c, {tok} токенов, {tok/dt if dt else 0:.1f} ток/с")
```

Ожидаемый результат — пять строк, где время от запроса к запросу отличается не в разы. Первый запрос обычно медленнее: движок прогревает кэш и память.

Чек-лист приёмки:

- [ ] `curl` вернул JSON с непустым `choices`
- [ ] `nvidia-smi --query-compute-apps` показывает процесс движка
- [ ] пять замеров прошли без падений
- [ ] среднее время записано в ту же таблицу, что и базовая линия
- [ ] ответ на «Напиши 3 факта о Луне» по смыслу совпадает с ответом базового способа

**Пример:** базовый способ — 12,4 с; DeepInfer — 5 замеров по 2,6; 2,4; 2,5; 2,5; 2,6 с, среднее ≈ 2,52 с. Это и есть ваш измеренный выигрыш.

Почему это работает: `time.perf_counter()` даёт монотонное время с высокой точностью, а деление числа токенов на секунды приводит разные модели и разную длину ответа к одной метрике — токенов в секунду.

## Возможные проблемы и решения

**Проблема. GPU не виден системе**

- Ошибка: `nvidia-smi: command not found`
- Причина: не установлен драйвер NVIDIA либо каталог с утилитой отсутствует в `PATH`.
- Решение: установите драйвер через пакетный менеджер вашего дистрибутива (для Ubuntu — `sudo ubuntu-drivers install`), перезагрузитесь и повторите `nvidia-smi`. Если утилита есть, но не находится, проверьте `ls /usr/bin/nvidia-smi` и добавьте каталог в `PATH`.

**Проблема. Не хватает зависимости при запуске**

- Ошибка: `ModuleNotFoundError: No module named 'torch'`
- Причина: зависимости ставились в системный Python, а не в активированное окружение, либо установка прервалась.
- Решение: активируйте окружение и переустановите зависимости.

```bash
source .venv/bin/activate
pip install -r requirements.txt
python -c "import torch; print(torch.__version__)"
```

**Проблема. Не хватает видеопамяти при загрузке модели**

- Ошибка: `torch.OutOfMemoryError: CUDA out of memory. Tried to allocate ...`
- Причина: модель или её часть не помещается в VRAM, либо на GPU уже висят чужие процессы.
- Решение: освободите память и уменьшите аппетит движка.

```bash
nvidia-smi --query-compute-apps=pid,used_memory --format=csv
kill <pid>
```

Затем перезапустите `./run.sh`. Если ошибка повторяется — возьмите модель меньшего размера или включите в настройках движка выгрузку части слоёв на CPU; конкретный флаг сверьте с README — сверьтесь с документацией.

## Резюме и следующие шаги

Вы подняли DeepInfer из репозитория `deepseek-ai/DeepInfer`, убедились, что модель считает на GPU, и получили замер, сравнимый с базовой линией. Дальше имеет смысл прогнать тот же скрипт замера на своих реальных запросах и, если нужно автоматизировать работу с документами, посмотреть [ChatGPT Office: как создавать документы и таблицы с помощью ИИ](https://ai-release.org/guides/chatgpt-office-kak-sozdavat-dokumenty-i-tablitsy-s-pomo.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide).

## FAQ

**DeepInfer — это модель или программа?**
Программа: инференс-движок, который запускает модель и генерирует ответы. Саму модель DeepSeek вы скачиваете отдельно.

**Обязателен ли GPU NVIDIA?**
Для ускорения — да, все проверки в гайде опираются на `nvidia-smi`. Поддерживаемые конфигурации в анонсе не раскрывались — сверьтесь с README репозитория.

**Можно ли использовать DeepInfer в коммерческом продукте?**
Лицензия в анонсе не раскрыта. Откройте файл `LICENSE` в репозитории `deepseek-ai/DeepInfer` и сверьтесь с документацией перед использованием.

**Как понять, что движок действительно ускорил DeepSeek?**
Только сравнением: замерьте время ответа до установки и после, на одном и том же вопросе и с одинаковым лимитом токенов. Разница в секундах и в токенах в секунду — ваш результат.
