- BrainTools - https://www.braintools.ru -
Все уже слышали про новую модель DeepSeek r1, которая обогнала по бенчмаркам openai. Компания DeepSeek выложила веса и дистилляты в открытый доступ, поэтому мы можем их запустить.
В статье поднимем дистилляты модели r1 используя llama.cpp – потребуются лишь базовые умения работы с bash, docker и python. Самостоятельный запуск проще простого.
Основная модель, о которой говорят, DeepSeek r1 – 671b Mixture of Experts (37B активаций на forward). Целиком пытаться инференсить такую модель очень затратно.
Если очень хочется r1, но не полную – есть квантизации от unsloth [1].
На самом деле, такие размеры тоже достаточно велики. На практике скорее будут использоваться дистилляты, благо их на вкус [2] и цвет. И, кстати, почему-то особо никто не говорит, что DeepSeek и их тоже выложила.
DeepSeek-R1-Distill-Qwen-32B – чуть круче О1-mini, согласно бенчмаркам, так что где-то тут кроется хорошее value-to-quality для многих задач.
7b qwen/8b llama – превосходят по качеству gpt4-o. Для ембеддингов и семантического поиска должно быть достаточно.
Для каждой из этих моделей так же есть квантизации от unsloth.
Чтобы запустить модель, можно использовать фреймворк vllm. Но мы пойдем немного по-другому, развернув полноценный сервер инференса для удобного и интерактивного теста.
Кроме того, что unsloth сделали квантизации моделей, они еще конвертировали формат хранения – huggingface safetensors [3] в ggml gguf [4].
ggml [5] – базовая библиотека для llama.cpp [6] – одного из самых эффективных и легких в использовании фреймворка инференса для llm.
На нем дальше и запустим сервер инференса.
Выбираем нужную модель. Например:
DeepSeek-R1-GGUF [huggingface [1]]
DeepSeek-R1-Distill-Llama-8B-GGUF [huggingface [7]]
DeepSeek-R1-Distill-Qwen-7B-GGUF [huggingface [8]]
DeepSeek-R1-Distill-Qwen-1.5B-GGUF [huggingface [9]]
DeepSeek-R1-Distill-Qwen-32B-GGUF [huggingface [10]]
Устанавливаем 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*"], # качаем веса только нужной модели
)
Обратите внимание [11] на allow_patterns. В одном репозитории может находиться несколько разных моделей (в данном случае – квантизаций одной модели). Потому стоит указывать только те веса, которые вам нужны и не забивать диск остальными.
Нужный паттерн можно определить, зайдя в секцию “Files and Versions”. Там же можно сориентироваться по названию и весу чекпоинта.
Дальше туториал будет с 8B моделью для простоты, но вы можете подставить model_name “unsloth/DeepSeek-R1-GGUF”, если вы тут за оригинальной моделью. Учтите, что веса занимают много места, потому лучше использовать allow_patterns.
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 (для примера, 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 .
Можно запускать руками скрипт llama.cpp с промптом. Для замеров памяти [12] и времени исполнения это будет даже удобнее. Но, во-первых, руками склеивать историю общения в общий промт не очень удобно, а, во-вторых, дать попробовать модель обычным людям так сложнее.
У llama-cpp есть базовый UI-интерфес. Он как раз находиться на localhost:8080
. Для тестирования моделей супер подходит. Все данные: контекст, диалоги, настройки – сохраняются в локальное хранилище браузера. Так что настройки не потеряются от постоянных тестовых перезапусков.
А как разные модели смогли помочь с различными бытовыми жизненными ситуациями – смотри в посте в моем телеграмме [13].
DeepSeek R1 крутая модель, превосходящая аналоги openai и доступная в opensource. Благодаря крутому мировому комьюнити уже сейчас имеем кучу квантизаций и дистилляций для разного применения. А с помощью llama.cpp мы можем достаточно быстро и удобно запускать модели для теста.
Автор: svtDanny
Источник [14]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/11808
URLs in this post:
[1] unsloth: https://huggingface.co/unsloth/DeepSeek-R1-GGUF
[2] вкус: http://www.braintools.ru/article/6291
[3] safetensors: https://huggingface.co/docs/safetensors/index
[4] gguf: https://huggingface.co/docs/hub/gguf
[5] ggml: https://github.com/ggerganov/ggml
[6] llama.cpp: https://github.com/ggerganov/llama.cpp
[7] huggingface: https://huggingface.co/unsloth/DeepSeek-R1-Distill-Llama-8B-GGUF
[8] huggingface: https://huggingface.co/unsloth/DeepSeek-R1-Distill-Qwen-7B-GGUF
[9] huggingface: https://huggingface.co/unsloth/DeepSeek-R1-Distill-Qwen-1.5B-GGUF
[10] huggingface: https://huggingface.co/unsloth/DeepSeek-R1-Distill-Qwen-32B-GGUF
[11] внимание: http://www.braintools.ru/article/7595
[12] памяти: http://www.braintools.ru/article/4140
[13] в посте в моем телеграмме: https://t.me/deploy_ml/85
[14] Источник: https://habr.com/ru/articles/878836/?utm_source=habrahabr&utm_medium=rss&utm_campaign=878836
Нажмите здесь для печати.