deepseek R1 671B满血/量化 本地部署记录(ollama\sglang)

ollama 运行 量化671B deepseek R1

ollama准备

  1. 下载并解压软件
curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgz 
sudo tar -C /usr -xzf ollama-linux-amd64.tgz
  1. 配置环境变量
export OLLAMA_HOST=0.0.0.0:11434 
export OLLAMA_ORIGINS=*
export OLLAMA_MODELS=/u01/ollama/models # 设置ollama的模型缓存位置

source ~/.bashrc 刷新下配置

模型准备

  1. 首先下载模型
pip install modelscope 
modelscope download --model unsloth/DeepSeek-R1-GGUF DeepSeek-R1-Q2_K_XL/DeepSeek-R1-UD-Q2_K_XL-00001-of-00005.gguf --local_dir /u01/models
modelscope download --model unsloth/DeepSeek-R1-GGUF DeepSeek-R1-Q2_K_XL/DeepSeek-R1-UD-Q2_K_XL-00002-of-00005.gguf --local_dir /u01/models
modelscope download --model unsloth/DeepSeek-R1-GGUF DeepSeek-R1-Q2_K_XL/DeepSeek-R1-UD-Q2_K_XL-00003-of-00005.gguf --local_dir /u01/models
modelscope download --model unsloth/DeepSeek-R1-GGUF DeepSeek-R1-Q2_K_XL/DeepSeek-R1-UD-Q2_K_XL-00004-of-00005.gguf --local_dir ~/u01/models 
modelscope download --model unsloth/DeepSeek-R1-GGUF DeepSeek-R1-Q2_K_XL/DeepSeek-R1-UD-Q2_K_XL-00005-of-00005.gguf --local_dir /u01/models
  1. llama.cpp下载
    需要使用llama-gguf-split工具将刚刚得到5个字文件进行合并操作。
    首先安装llama.cpp
    直接git clone仓库文件并且build下
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
cmake -B build
cmake --build build --config Release -j 8
  1. 模型合并
cd build/bin 
./llama-gguf-split --merge /u01/models/DeepSeek-R1-UD-Q2_K_XL/DeepSeek-R1-UD-Q2_K_XL-00001-of-00005.gguf /u01/models/DeepSeek-R1-UD-Q2_K_XL/DeepSeek-R1-2.51bit.gguf

ollama加载模型

  1. 构建ModelFile
Vim /u01/ollama/r1/Modelfile
# 将下面的配置内容粘贴进去
cd /u01/ollama/r1

ollama serve # 先在一个端口启动下服务
ollama create deepseek-reasoner -f ./Modelfile
ollama list # 查看是配置好了

Modelfile配置文件:

FROM /u01/models/DeepSeek-R1-UD-Q2_K_XL/DeepSeek-R1-2.51bit.gguf

# 以下为模型模板配置
TEMPLATE """{{- if .System }}{{ .System }}{{ end }}
{{- range $i, $_ := .Messages }}
{{- $last := eq (len (slice $.Messages $i)) 1}}
{{- if eq .Role "user" }}<|User|>{{ .Content }}
{{- else if eq .Role "assistant" }}<|Assistant|>{{ .Content }}{{- if not $last }}<|end▁of▁sentence|>{{- end }}
{{- end }}
{{- if and $last (ne .Role "assistant") }}<|Assistant|>{{- end }}
{{- end }}"""


PARAMETER stop "<|begin▁of▁sentence|>"
PARAMETER stop "<|end▁of▁sentence|>"
PARAMETER stop "<|User|>"
PARAMETER stop "<|Assistant|>"

PARAMETER num_ctx 12800
  1. 启动模型
ollama run deepseek-reasoner
  1. 接下来到对应的应用配置下就行
http://x.x.x.x:11434

性能测试

八开L20的机器(每张卡48G显存) 单人单次对话资源使用情况如下

输入token:37 输出token:1895 总耗时:76S

目前看来速度还是很堪忧,但是vllm和sglang对2bit的支持还不太好,等支持好了再来更新下启动方式
deepseek R1 671B满血/量化 本地部署记录(ollama\sglang)_第1张图片

deepseek R1 671B满血/量化 本地部署记录(ollama\sglang)_第2张图片

sglang 运行满血 671B deepseek R1(推荐)

为什么用sglang 不用vllm呢? 其实vllm也测试过,结果输出速度只有8 token/s 不知道怎么优化,这里就不推荐了

部署

  1. 模型下載
    下载模型不再赘述
  2. 环境准备
pip install "sglang[all]>=0.4.3" --find-links https://flashinfer.ai/whl/cu124/torch2.5/flashinfer-python
  1. 模型启动
python3 -m sglang.launch_server \
 --model /u01/model/deepseek-ai/DeepSeek-R1 \
 --served-model-name deepseek-reasoner \
 --trust-remote-code \
 --mem-fraction-static 0.9 \
 --tp 8 \
 --host 0.0.0.0 \
 --port 8000 \

结果评估

机器 : 8卡 H20服务器 96G * 8 - 671 基本只有很少的kv cache空间了
deepseek R1 671B满血/量化 本地部署记录(ollama\sglang)_第3张图片
单人的 输出token速度大概在23tokens/s,token的最大长度大概在60k左右
估计只够5个人用,还是得2台H20服务器

KTransformer

这个还没时间,晚点去尝试下
先把链接挂上来
KTransformer guide book
看到的一个KTransformer guide库

参考

跟进DeepSeek-R1:动手部署671B模型推理(2.51-bit量化) - 知乎
SGlang官方部署指南

你可能感兴趣的:(AIGC,python)