【从零开始系列】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.mzph.cn/web/68217.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DeepSeek 开源模型全解析(2024.1.1–2025.2.6)

目录 一、通用大语言模型:DeepSeek-V3 系列 137 二、推理优化模型:DeepSeek-R1 系列 811 三、多模态模型:Janus 系列 10 四、生态整合与部署建议 五、总结与展望 以下为 DeepSeek 在 2024 年 1 月至 2025 年 2 月期间发布的开源模型及其…

Mac: docker安装以后报错Command not found: docker

文章目录 前言解决办法(新的)解决步骤(原来的)不推荐总结 前言 ​本操作参考 http://blog.csdn.net/enhenglhm/article/details/137955756 原作者,更详细请,查看详细内容请关注原作者。 一般,…

《手札·开源篇》数字化转型助力永磁电机企业降本增效:快速设计软件如何让研发效率提升40%?

数字化转型助力永磁电机企业降本增效:快速设计软件如何让研发效率提升40%? 一、痛点:传统研发模式正在吃掉企业的利润 永磁电机行业面临两大挑战: 研发周期长:一款新电机从设计到量产需6-12个月,电磁计算…

0207作业

思维导图 服务器 enum Type{TYPE_REGIST,TYPE_LOGIN };typedef struct Pack{int size;enum Type type;char buf[2048];}pack_t;typedef struct list{union Data{struct List* tail;char str[64];}data;struct List* next;struct List* prev; }List;List* create_node(){List* …

深入浅出 DeepSeek V2 高效的MoE语言模型

今天,我们来聊聊 DeepSeek V2 高效的 MoE 语言模型,带大家一起深入理解这篇论文的精髓,同时,告诉大家如何将这些概念应用到实际中。 🌟 什么是 MoE?——Mixture of Experts(专家混合模型&#x…

RabbitMQ 从入门到精通:从工作模式到集群部署实战(五)

#作者:闫乾苓 系列前几篇: 《RabbitMQ 从入门到精通:从工作模式到集群部署实战(一)》:link 《RabbitMQ 从入门到精通:从工作模式到集群部署实战(二)》: lin…

nodejs:express + js-mdict 网页查询英汉词典,能播放.spx 声音

向 DeepSeek R1 提问: 我想写一个Web 前端网页,后台用 nodejs js-mdict , 实现在线查询英语单词,并能播放.spx 声音文件 1. 项目结构 首先,创建一个项目目录,结构如下: mydict-app/ ├── public/ │ …

Linux ftrace 内核跟踪入门

文章目录 ftrace介绍开启ftraceftrace使用ftrace跟踪指定内核函数ftrace跟踪指定pid ftrace原理ftrace与stracetrace-cmd 工具KernelShark参考 ftrace介绍 Ftrace is an internal tracer designed to help out developers and designers of systems to find what is going on i…

【抽象代数】1.1. 运算及关系

集合与映射 定义1. 设 为 的子集,定义 到 的映射 : 使得 ,称 为 到 的嵌入映射。 定义2. 设 为 的子集, 为 到 的映射, 为 到 的映射,如果 ,称为的开拓, 为 的限制&…

pytest+request+yaml+allure 接口自动化测试全解析[手动写的跟AI的对比]

我手动写的:Python3:pytest+request+yaml+allure接口自动化测试_request+pytest+yaml-CSDN博客 AI写的:pytest+request+yaml+allure 接口自动化测试全解析 在当今的软件开发流程中,接口自动化测试扮演着至关重要的角色。它不仅能够提高测试效率,确保接口的稳定性和正确性…

数据库高安全—审计追踪:传统审计统一审计

书接上文数据库高安全—角色权限:权限管理&权限检查,从权限管理和权限检查方面解读了高斯数据库的角色权限,本篇将从传统审计和统一审计两方面对高斯数据库的审计追踪技术进行解读。 4 审计追踪 4.1 传统审计 审计内容的记录方式通…

第三个Qt开发实例:利用之前已经开发好的LED驱动在Qt生成的界面中控制LED2的亮和灭

前言 上一篇博文 https://blog.csdn.net/wenhao_ir/article/details/145459006 中,我们是直接利用GPIO子系统控制了LED2的亮和灭,这篇博文中我们利用之前写好的LED驱动程序在Qt的生成的界面中控制LED2的亮和灭。 之前已经在下面两篇博文中实现了LED驱动…

deepseek来讲lua

Lua 是一种轻量级、高效、可嵌入的脚本语言,广泛应用于游戏开发、嵌入式系统、Web 服务器等领域。以下是 Lua 的主要特点和一些基本概念: 1. 特点 轻量级:Lua 的核心非常小,适合嵌入到其他应用程序中。高效:Lua 的执…

(动态规划 leetcode377)组合求和IV

确立状态转移方程需要深入理解问题,合理定义子问题,找到边界条件(比如dp[0]),分析状态之间的转移关系(dp和dp之间的关系),并进行验证。 递归是自顶向下,而dp是自下而上 这里是i作为目标值&…

解决aspose将Excel转成PDF中文变成方框的乱码问题

原文网址:解决aspose将Excel转成PDF中文变成方框的乱码问题_IT利刃出鞘的博客-CSDN博客 简介 本文介绍如何解决aspose将Excel转成PDF中文变成方框的乱码问题。 问题描述 用aspose将word、excel等转成PDF后,英文展示正常,但中文全部变成了…

Netty 核心原理与高并发场景实践

在当今的网络编程领域,随着互联网应用的不断发展,对高并发、高性能网络通信的需求日益增长。Netty 作为一款基于 Java 的异步事件驱动的网络应用框架,凭借其卓越的性能和丰富的功能,成为了实现高并发网络应用的首选工具。无论是在…

问题大集04-浏览器阻止从 本地 发起的跨域请求,因为服务器的响应头 Access-Control-Allow-Origin 设置为通配符 *

1、问题 localhost/:1 Access to XMLHttpRequest at xxx(请求) from origin http://localhost:xxx(本地) has been blocked by CORS policy: The value of the Access-Control-Allow-Origin header in the response must not be t…

判断192.168.1.0/24网络中,当前在线的ip有哪些

需求:判断192.168.1.0/24网络中,当前在线的ip有哪些,并编写脚本打印出来。 [rootopenEuler ~]# cat 1.sh #!/bin/bash for ip in $(seq 1 254); do ping -c 1 -W 1 "192.168.1.$ip" > /dev/null 2>&1 if [ $? …

vue-vite axios bug

axios-bug http proxy error Error: write ECONNABORTED 代码写法 一般baseURL不是单写前缀就可以了吗,为何要写死就不会出现以上错误,求解。

【Spring】_SpringBoot配置文件

目录 1.Spring Boot配置文件 1.1 Spring Boot 的配置文件类型及命名 1.2 properties和yml的优先级 2. properties配置文件 1.1 properties语法格式 1.2 自定义配置及配置文件的读取 1.3 properties的缺点 3. yml配置文件 3.1 yml语法格式 3.2 自定义配置及配置文件的…