Все уже слышали про новую модель DeepSeek r1, которая обогнала по бенчмаркам openai. Компания DeepSeek выложила веса и дистилляты в открытый доступ, поэтому мы можем их запустить.
В статье поднимем дистилляты модели r1 используя llama.cpp – потребуются лишь базовые умения работы с bash, docker и python. Самостоятельный запуск проще простого.
Что имеем?
Основная модель, о которой говорят, DeepSeek r1 – 671b Mixture of Experts (37B активаций на forward). Целиком пытаться инференсить такую модель очень затратно.
Если очень хочется r1, но не полную – есть квантизации от unsloth.

А можно для простых смертных?
На самом деле, такие размеры тоже достаточно велики. На практике скорее будут использоваться дистилляты, благо их на вкус и цвет. И, кстати, почему-то особо никто не говорит, что DeepSeek и их тоже выложила.

DeepSeek-R1-Distill-Qwen-32B – чуть круче О1-mini, согласно бенчмаркам, так что где-то тут кроется хорошее value-to-quality для многих задач.
7b qwen/8b llama – превосходят по качеству gpt4-o. Для ембеддингов и семантического поиска должно быть достаточно.
Для каждой из этих моделей так же есть квантизации от unsloth.
Чтобы запустить модель, можно использовать фреймворк vllm. Но мы пойдем немного по-другому, развернув полноценный сервер инференса для удобного и интерактивного теста.
Кроме того, что unsloth сделали квантизации моделей, они еще конвертировали формат хранения – huggingface safetensors в ggml gguf.
ggml – базовая библиотека для llama.cpp – одного из самых эффективных и легких в использовании фреймворка инференса для llm.
На нем дальше и запустим сервер инференса.
Качаем веса модели
Выбираем нужную модель. Например:
-
DeepSeek-R1-GGUF [huggingface]
-
DeepSeek-R1-Distill-Llama-8B-GGUF [huggingface]
-
DeepSeek-R1-Distill-Qwen-7B-GGUF [huggingface]
-
DeepSeek-R1-Distill-Qwen-1.5B-GGUF [huggingface]
-
DeepSeek-R1-Distill-Qwen-32B-GGUF [huggingface]
Устанавливаем hf_transfer для быстрой загрузки
pip install huggingface_hub hf_transfer
Запускаем скрипт на python для скачивания весов.
import os
os.environ["HF_HUB_ENABLE_HF_TRANSFER"] = "1"
from huggingface_hub import snapshot_download
hf_repo = “unsloth“
model_name = “DeepSeek-R1-Distill-Llama-8B-GGUF”
snapshot_download(
repo_id = f"{hf_repo}/{model_name}",
local_dir = f"/home/jovyan/sivtsov/inference/{hf_repo}-{model_name}",
allow_patterns = ["*8B-F16*"], # качаем веса только нужной модели
)
Обратите внимание на allow_patterns. В одном репозитории может находиться несколько разных моделей (в данном случае – квантизаций одной модели). Потому стоит указывать только те веса, которые вам нужны и не забивать диск остальными.
Нужный паттерн можно определить, зайдя в секцию “Files and Versions”. Там же можно сориентироваться по названию и весу чекпоинта.

Дальше туториал будет с 8B моделью для простоты, но вы можете подставить model_name “unsloth/DeepSeek-R1-GGUF”, если вы тут за оригинальной моделью. Учтите, что веса занимают много места, потому лучше использовать allow_patterns.
Запускаем готовый docker
Что нужно, для запуска:
-
Linux, видеокарта nvidia
-
Docker и python на системе
-
Базовые навыки владения bash и python
Можно запустить готовый докер с серверомdocker run -p 8080:8080 -v /path/to/models:/models --gpus all ghcr.io/ggerganov/llama.cpp:server-cuda -m /models/model_name.gguf --host 0.0.0.0 --port 8080
-v /path/to/models:/models
– данные в контейнере, скачанные после запуска будут удалены при любом перезапуске (ручном или в случае перезагрузки сервера). Потому веса модели должны находиться непосредственно на машине (а в кластерах лучше кешировать их отдельно)
Готовый докер собран на cuda=12.6. Если у вас версия меньше, придется обновить cuda-toolkit или собрать образ самостоятельно.
Сборка докера под нужную CUDA
Для самостоятельной сборки образа под определенную cuda (для примера, 12.4.0):git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
docker build -t local/llama.cpp:server-cuda --build-arg CUDA_VERSION=12.4.0 --target server -f .devops/cuda.Dockerfile .
UI Интерфейс
Можно запускать руками скрипт llama.cpp с промптом. Для замеров памяти и времени исполнения это будет даже удобнее. Но, во-первых, руками склеивать историю общения в общий промт не очень удобно, а, во-вторых, дать попробовать модель обычным людям так сложнее.
У llama-cpp есть базовый UI-интерфес. Он как раз находиться на localhost:8080
. Для тестирования моделей супер подходит. Все данные: контекст, диалоги, настройки – сохраняются в локальное хранилище браузера. Так что настройки не потеряются от постоянных тестовых перезапусков.
А как разные модели смогли помочь с различными бытовыми жизненными ситуациями – смотри в посте в моем телеграмме.

Итого
DeepSeek R1 крутая модель, превосходящая аналоги openai и доступная в opensource. Благодаря крутому мировому комьюнити уже сейчас имеем кучу квантизаций и дистилляций для разного применения. А с помощью llama.cpp мы можем достаточно быстро и удобно запускать модели для теста.
Автор: svtDanny