目录
一、环境配置
1.硬件设备评估
2.基础环境安装
3.模型参数下载
(1) huggingface镜像源下载
(2) modelscope魔搭社区下载 (推荐)
二、基础使用(Linux、Window兼容)
1.Transformers库自编代码
三、进阶使用(仅Linux)
1.vLLM库远程部署
(1) 服务端配置
(2) 客户端配置
一、环境配置
1.硬件设备评估
Deepseek-R1系列至少开源了 7 种参数大小的模型,如下图所示。
下面将不同参数量模型在实验中粗略估算的所需GPU显存大小记录在表格(注:1.下表显存仅代表加载模型所需,多次对话推理后显存开销将变更大;2.部分模型未下载实验,以及一些其他的推理硬件指标如每秒生成tokens数量没有记录,欢迎各位大佬在评论区留言补充)
模型类别(根据参数量划分) | GPU显存 |
Deepseek-R1-685B | 900G+ |
Deepseek-R1-70B | 137G+ |
Deepseek-R1-32B | 64G+ |
Deepseek-R1-14B | 30G+ |
Deepseek-R1-8B | 18G+ |
Deepseek-R1-7B | ? |
Deepseek-R1-1.5B | 4G+ |
2.基础环境安装
# 3.10版本Python
conda create -n deepseek python=3.10 -y# 2.4.1版本torch
pip install torch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1 --index-url https://download.pytorch.org/whl/cu118pip install torch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1 --index-url https://download.pytorch.org/whl/cu124# 其他依赖库正常安装
pip install transformers==4.46.3 safetensors==0.4.5 triton==3.0.0
triton库windows系统安装教程:
hf-mirror镜像triton库地址:madbuda/triton-windows-builds · HF Mirror
下载 triton-3.0.0的python3.10版本
导航到下载目录cmd进入命令窗口,pip指令安装即可。
# 使用whl安装triton-window版本
conda activate deepseekpip install triton-3.0.0-cp310-cp310-win_amd64.whl
3.模型参数下载
(1) huggingface镜像源下载
hf-mirror镜像地址:deepseek-ai (DeepSeek)
可以选择访问上述网址,在浏览器中下载。
成功浏览器下载则可忽略下面内容,跳转到下一个章节测试使用模型进行推理。
浏览器下载可能存在中断风险,尤其对于动辄好几G一个文件的大模型参数。可以考虑使用huggingface_hub 库的命令行工具——huggingface-cli 不中断下载。下面记录安装使用过程。
① pip安装库
# 安装huggingface_hub库在创建虚拟环境中
conda activate deepseek# 使用huggingface-cli下载模型参数
pip install -U huggingface_hub
② 环境变量配置
配置系统变量中huggingface下载地址为镜像地址(hf-mirror)。
在 Linux 环境中,可以直接指令配置。
export HF_ENDPOINT=https://hf-mirror.com
在 Windows 环境中,需要在此电脑的属性,高级系统设置的环境变量中配置。
输入以下内容。
HF_ENDPOINT
https://hf-mirror.com
点击确定完成后,可以在命令行测试。有下图的输出结果即代表镜像地址配置成功。
# Windows测试环境变量配置成功
echo %HF_ENDPOINT%# Linux测试环境变量配置成功
echo $HF_ENDPOINT
③ 使用命令下载模型参数
命令可以不中断下载,其中 --resume-download 后填入模型名称,这个可以直接在网站内复制,如下图。
--local-dir 参数后填入要保存的本地目录地址即可。
# 激活环境后,命令下载
conda activate deepseek
huggingface-cli download --resume-download deepseek-ai/DeepSeek-R1-Distill-Llama-8B --local-dir path/to/save
(2) modelscope魔搭社区下载 (推荐)
modelscope模型库地址:魔搭社区
跟 hf-mirror 一样,可以直接使用浏览器下载。
也支持命令行下载方式,但是也要安装相应库(较 hf 配置流程更简单,如下图)。
下载指令如下,在命令行cmd中操作。其中下载的指令可以在每个模型网页界面中直接复制。并且通过 modelscope download -h 可以查询指令参数,得知和之前一样可以使用 --local_dir 加本地地址来设置保存路径。
# 激活环境安装包
conda activate deepseekpip install modelscope# 指令下载模型(以deepseek-r1-32B为例)
modelscope download --model deepseek-ai/DeepSeek-R1-Distill-Qwen-32B# 保存本地指定目录
modelscope download --model deepseek-ai/DeepSeek-R1-Distill-Qwen-32B --local_dir path/to/save
二、基础使用(Linux、Window兼容)
1.Transformers库自编代码
在官方的本地部署使用方法介绍中,表明 qwen 和 llama 蒸馏的小参数量 R1 模型可以和Qwen 或 LLaMA 一致的部署方式。
因此可以和之前记录的 Qwen 模型一样,使用 Transformer 库进行部署,只需修改部分代码内容,将其变为可持续对话并记忆上下文的形式即可。
首先,如果使用和之前Qwen相同方式部署,还有一些依赖包需要安装。
特别的,Linux 系统下还要安装 flash-attn 库,具体安装报错解决办法见Qwen文章:Qwen从零开始
Windows 系统不支持该库,实际部署运行会有红字报错,但不影响输出结果,可忽略。
# 其他依赖包环境
pip install accelerate==1.3.0
pip install protobuf# Linux下安装
pip install flash-attn
安装好包后,下面直接给出一个简单的运行代码,可将其保存为一个 py 文件,在命令行激活环境直接运行即可和模型进行对话。 (记得修改其中的模型地址modelpath)
from transformers import AutoModelForCausalLM, AutoTokenizer# 加载模型
def model_load(path):model_name_or_path = pathmodel = AutoModelForCausalLM.from_pretrained(model_name_or_path,torch_dtype="auto",device_map="auto")tokenizer = AutoTokenizer.from_pretrained(model_name_or_path)return model, tokenizerif __name__ == '__main__':modelpath = '' # 模型参数地址model, tokenizer = model_load(modelpath)chat_history = [{"role":"system", "content":'你是Deepseek,一个友好的ai聊天助手'}]while True:user_input = input("user:")if user_input.lower() in ['exit']:breakchat_history.append({"role":"user", "content":user_input})text = tokenizer.apply_chat_template(chat_history, tokenize=False,add_generation_prompt=True)chat_prompt = tokenizer([text], return_tensors="pt").to(model.device)output = model.generate(**chat_prompt, max_new_tokens=1024, pad_token_id=tokenizer.eos_token_id)generated_ids = [output_ids[len(input_ids):] for input_ids, output_ids in zip(chat_prompt.input_ids, output)]response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]print(f'\n模型回答:{response}')chat_history.append({"role":"assistant", "content":response})
下面多图展示具体使用流程。
激活环境,并运行该 py 文件。就可以在命令行中与下载好的 deepseek 模型进行对话了。
# 激活环境并运行文件
conda activate deepseekpython test.py
对于选择特定GPU进行推理部署,Linux系统可以直接命令改变环境变量。
# Linux系统指定GPU(如选择0、2、4号三块推理)
CUDA_VISIBLE_DEVICES=0,2,4 python test.py
Window系统则需要在 test.py 文件中添加内容。
# Window系统指定单卡训练
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "1"
三、进阶使用(仅Linux)
官方推荐使用 vLLM 和 SGLang 进行部署使用,这些使用架构平台将更好的优化显存管理和推理速度。
1.vLLM库远程部署
(1) 服务端配置
首先在服务器上安装 vLLM 库环境,直接创建虚拟环境pip安装即可。
# 安装vLLM环境
conda create -n vLLM python=3.12 -y
conda activate vLLM
pip install vllm
在激活的环境下,输入下面指令即可激活 api 服务。其中 model_path 代表本地的模型的下载地址;--port 代表提供服务的端口号为8000。
# 启动vllm远程服务(指定0,1号GPU)
CUDA_VISIBLE_DEVICES=0,1 vllm serve model_path --port 8000
得到下面信息代表成功激活服务端了。
(2) 客户端配置
在任一联网主机上,创建一个包含 openai 库的环境,将下面代码内容和之前Transformer部分一样创建成一个文件运行,即可得到一个对话窗口。
# 客户端环境
conda create -n user python=3.10
conda activate user
pip install openai
记得要修改下面代码中的 openai_api_base 的地址为实际部署服务器的IP。
from openai import OpenAIopenai_api_key = "EMPTY"
openai_api_base = "http://host:8000/v1" # host修改为服务器的ip地址client = OpenAI(# defaults to os.environ.get("OPENAI_API_KEY")api_key=openai_api_key,base_url=openai_api_base,
)models = client.models.list()
model = models.data[0].idif __name__ == '__main__':chat_history = [{"role": "system", "content": '你是Deepseek,一个智能的ai聊天助手'}]while True:user_input = input("user:")if user_input.lower() in ['exit']:breakchat_history.append({"role": "user", "content": user_input})response = client.chat.completions.create(messages=chat_history,model=model,).choices[0].message.contentprint(f'\n模型回答:\n{response}')chat_history.append({"role": "assistant", "content": response})
运行上述代码,即可在窗口中进行与服务器上部署模型的对话任务了。
这种基于vllm的部署方式更推荐,其内部有优化,推理过程更加迅速。