← Все гайды AI Release
EN Подписаться на @ai_release1

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

Обновлено: 20.10.2026 · AI Release · @ai_release1
Как ускорить DeepSeek с помощью DeepInfer: установка и настройка инференса

TL;DR

Требования и подготовка

Иллюстрация к разделу «Требования и подготовка»
Иллюстрация к разделу «Требования и подготовка»

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

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

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

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

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

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

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

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

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

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

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

Шаг 2. Развернуть DeepInfer из репозитория

Иллюстрация к разделу «Шаг 2. Развернуть DeepInfer из репозитория»
Иллюстрация к разделу «Шаг 2. Развернуть DeepInfer из репозитория»

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

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

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

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 — сверьтесь с документацией.

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-образ) — используйте его: инструкция репозитория приоритетнее универсальной.

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

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

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

#!/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"
chmod +x run.sh
./run.sh

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

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. Проверить генерацию и сравнить скорость с базовой линией»
Иллюстрация к разделу «Шаг 3. Проверить генерацию и сравнить скорость с базовой линией»

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

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

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

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 — сверьтесь с документацией.

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

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} ток/с")

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

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

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

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

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

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

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

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

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

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

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

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

Вы подняли DeepInfer из репозитория deepseek-ai/DeepInfer, убедились, что модель считает на GPU, и получили замер, сравнимый с базовой линией. Дальше имеет смысл прогнать тот же скрипт замера на своих реальных запросах и, если нужно автоматизировать работу с документами, посмотреть ChatGPT Office: как создавать документы и таблицы с помощью ИИ.

FAQ

DeepInfer — это модель или программа?

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

Обязателен ли GPU NVIDIA?

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

Можно ли использовать DeepInfer в коммерческом продукте?

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

Как понять, что движок действительно ускорил DeepSeek?

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

🤖 Кратко для ИИ