当前位置: 首页 > news >正文

【从零开始系列】DeepSeek-R1:(本地部署使用)思维链推理大模型,开源的神!——Windows/Linux本地环境测试 + vLLM远程部署服务


目录

一、环境配置

        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-685B900G+
Deepseek-R1-70B137G+
Deepseek-R1-32B64G+
Deepseek-R1-14B30G+
Deepseek-R1-8B18G+
Deepseek-R1-7B
Deepseek-R1-1.5B4G+

         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的部署方式更推荐,其内部有优化,推理过程更加迅速。


http://www.mrgr.cn/news/89830.html

相关文章:

  • k8s部署rabbitmq
  • 《Kettle实操案例一(全量/增量更新与邮件发送)》
  • 音频进阶学习十二——Z变换
  • 保姆级教程Docker部署KRaft模式的Kafka官方镜像
  • 【服务器知识】如何在linux系统上搭建一个nfs
  • 【Langchain学习笔记(二)】Langchain安装及使用示例
  • HIVE如何注册UDF函数
  • nodejs:express + js-mdict 网页查询英汉词典,能播放.spx 声音
  • Mac上搭建k8s环境——Minikube
  • 【非 root 用户下全局使用静态编译的 FFmpeg】
  • kafka服务端之延时操作实现原理
  • (一)C++的类与对象
  • Jmeter快速实操入门
  • docker安装es及分词器ik
  • 122,【6】buuctf web [护网杯2018] easy_tornado
  • 交叉编译工具链下载和使用
  • TaskBuilder项目实战:创建项目
  • 深入理解 DeepSeek MOE(Mixture of Experts)
  • 【戒抖音系列】短视频戒除-1-对推荐算法进行干扰
  • jvm 篇