一文读懂DeepSeek-R1私有化部署与本地部署

505 阅读4分钟

最近李飞飞团队也复刻了一个叫S1的模型,他们到底做了什么呢?

▲ 不同思考时长下的准确率变化(横轴:Token数量,纵轴:准确率)

从上图可以看出,S1-32B模型在数学问题解决(MATH500)、竞赛数学(AIME24)和博士级科学问题(GPQA Diamond)三个任务上的表现。随着思考时间的增加,模型的准确率也有所提升。

OneThingAI免费API接入

以下是一个简单的Python示例,展示如何接入OneThingAI免费的API:

from openai import OpenAI`
client = OpenAI(
  base_url='http://llms.onethingai.com/v1',
  api_key='OnethingAI'
  )
completion_res = client.completions.create(
  model='deepseek-ai/deepseek-reasoner',
  prompt='onethingai是做什么的?',
  stream=True,  ``max_tokens=4096,
  )

OneThingAI提供Ollama镜像

下面会以部署一个32B的蒸馏版本为例,更多Ollama官方量化的DeepSeek-R1 模型参考 Ollama 官方的模型中心。

进入OneThingAI平台。

登录OneThingAI:c.aiiz.cn/AvPfJH

创建一个新的Ollama实例,选择1卡4090配置。

启动完成后进入webshell,运行如下命令:

ollama run deepseek-r1:32b

执行结果

对外提供服务

推荐使用TCP转发和HTTPS连接。需要独立公网IP的用户联系OneThingAI。

API访问方式

HTTP可直接访问API

 (此处标红,着重:使用自己生成的地址替换命令里的url)

curl -v http://mars.onethingrobot.com:37793/api/chat
-H "Content-Type: application/json" 
-d '{
"model": "deepseek-ai/deepseek-reasoner", 
"messages": [
   {"role": "user", "content": "这是一个测试"} 
 ],
 "stream": true
 }'

怎么访问https

申请自己的域名,实例里安装nginx并配置自己域名和证书。dns管理平台上CNAME到mars.onethingrobot.com(如有问题可联系OneThingAI或留言)

Tips:怎么选择显卡:根据模型所需显存大小来选择。单块4090 24GB显存,假设模型大小是 D GB, 所需卡数 n = D/ (24 * 0.8)  流出一定空间给kv cache。

创建一个2卡的实例,启动完成后执行:

ollama run deepseek-r1:70b

vLLM的使用

为了更好的服务企业OneThingAI支持使用vLLM 部署DeepSeek,vLLM版本为DeepSeek官方推荐的vLLM 版本0.6.6

根据模型大小选择卡数创建实例

Qwen 14B 为例,创建2卡实例

打开webshell:

运行以下命令:

ls  /app/deepseek/

结果如下,目前已经预装4款以Qwen为底模的 DeepSeek-R1蒸馏模型

启动模型服务:

# 预装模型已经有模型文件,没有模型元数据,可用如下命令补全
modelscope download --model deepseek-ai/DeepSeek-R1-Distill-Qwen-14B  --exclude *.safetensors  --local_dir /app/deepseek/DeepSeek-R1-Distill-Qwen-14B
# 启动fp8 量化的推理, 根据效果要求可以去掉参数 --quantization="fp8"
vllm serve /app/deepseek/DeepSeek-R1-Distill-Qwen-14B 
--host 0.0.0.0 --port 6006 --quantization="fp8" --tensor-parallel-size 2 --max_model_len 32384 --served-model-name deepseek-ai/deepseek-r1:14b

启动完成结果如下

配置公网服务和使用API

操作Ollama节所述,参考(可以添加指向跳转),vLLM提供的API 兼容openai sdk(有问题联系OneThingAI)

from openai import OpenAI
client = OpenAI(    base_url='http://{your_url_here}/v1',
api_key='your_key_here'
)
completion_res = client.completions.create(
    model='deepseek-ai/deepseek-r1:14b',
    prompt='onethingai是做什么的?',
    stream=True,
    max_tokens=4096,)

vLLM 的更多使用方式和参数参考:vLLM官方文档

如何本地化部署

如果公司有4090,H100等算力,怎么在公司内部算力上本地部署一套DeepSeek-R1模型给公司的使用。

在linux 服务器上使用docker方式比较容易(如运行过程遇到问题联系OneThingAI或留言)

# 拉取vllm 0.6.6 版本的镜像, 最新的0.7.1 可能会遇到问题
# 如:https://github.com/vllm-project/vllm/issues/12769
docker pull vllm/vllm-openai:v0.6.6
# 启动vllm, 假设模型等文件已经放在 /data/deepseek 下
# 假设4 块4090 跑32B的蒸馏模型
docker run --network host \
     --name deepseek \
     --shm-size 32g \
     --gpus all \
     -v "/data/deepseek:/root/deepseek" \
     -it \
     --ipc=host \
     -e GLOO_SOCKET_IFNAME=eth1 -e NCCL_SOCKET_IFNAME=eth1 \
     vllm/vllm-openai:v0.6.6 \
     /root/deepseek/DeepSeek-R1-Distill-Qwen-32B \
     --host 0.0.0.0 --port 6006 --quantization="fp8" --tensor-parallel-size 4 \
     --max_model_len 32384 \
     --served-model-name deepseek-ai/deepseek-r1:32b

后续OneThingAI会推出vLLM、SGLang等推理引擎的Docker镜像和本地部署模型的方案。

END