DeepSeek-R1私有化部署——使用Python实现DeepSeek-R1-Distill-Qwen模型部署调用与流式输出

一、概述

DeepSeek-R1-Distill-Qwen 是 DeepSeek 团队基于 DeepSeek-R1 模型通过蒸馏技术生成的一系列轻量化模型。这些模型在保持高性能推理能力的同时,显著降低了计算资源和内存需求,适合在资源受限的环境中部署。DeepSeek-R1-Distill-Qwen 系列模型是通过从 DeepSeek-R1 模型中提取推理模式并迁移到更小的模型架构中生成的。这些模型基于 Qwen 系列架构,包括 1.5B、7B、14B 和 32B 等不同参数规模的版本,适用于多种任务场景,如数学推理、代码生成和逻辑推理等。
想试用满血版的DeepSeek与各种开源的大语言模型可以转到,带联网搜索+图片+文档+语音+群聊,实测比DeepSeek官网还牛逼:https://askmany.cn/login?i=d788ca33
在这里插入图片描述

二、性能与部署要求

2.1 性能

DeepSeek-R1-Distill-Qwen 系列模型在多个基准测试中表现出色:

  • 数学推理:在 AIME 2024 和 MATH-500 测试中,DeepSeek-R1-Distill-Qwen-32B 的准确率分别达到 72.6% 和 94.3%,接近 OpenAI-o1-mini 的表现。
  • 代码生成:在 LiveCodeBench 和 Codeforces 测试中,DeepSeek-R1-Distill-Qwen-32B 的评分分别为 57.2 和 1691,展现了强大的代码生成能力。
  • 逻辑推理:在 GPQA Diamond 测试中,DeepSeek-R1-Distill-Qwen-32B 的准确率为 62.1%,显著优于许多同类模型。

2.2 部署与硬件要求

DeepSeek-R1-Distill-Qwen 系列模型支持多种部署方式,包括本地部署和云服务部署:

  • 本地部署:可以通过 LM Studio 或 Ollama 等工具进行部署。例如,DeepSeek-R1-Distill-Qwen-7B 的最低硬件要求为 NVIDIA Tesla 16GB GPU,而 32B 版本则需要更高配置的 GPU(如 NVIDIA A100)。
  • 云服务部署:阿里云函数计算 FC 和摩尔线程的 KUAE GPU 集群均支持 DeepSeek-R1-Distill-Qwen 系列模型的推理服务部署,显著降低了部署成本。

2.3 代码部署

为了方便嵌入自己的项目,这里演示如何基于python部署DeepSeek-R1模型,当前开发环境Win11,IDE是PyCharm,GPU是RTX 4080 8G,CUDA 是11.8。这里默认已安装好GPU驱动与CUDA与CUDNN环境,如未安装则转到博主另一个博客:Windows下从零开始基于Ollama与Open-WebUI本地部署deepseek R1详细指南(包含软件包和模型网盘下载)

二、环境安装

这里使用conda进行环境搭建,首先创建一个conda环境:

conda create -n deepseek python==3.10

激活环境:

conda activate deepseek

安装与cuda对应的pytorch库,可以从torch官网得到安装指令,我的装的是cuda 11.8,找到对应的torch版本:

pip install torch==2.3.0 torchvision==0.18.0 torchaudio==2.3.0 --index-url https://download.pytorch.org/whl/cu118

之后安装对应的依赖库:

requests==2.32.3
fastapi==0.115.8
uvicorn==0.34.0
transformers==4.48.2
huggingface-hub==0.28.1
accelerate==1.3.0
modelscope==1.22.3
numpy==1.22.4

安装完成环境之后,配置已安装好的Conda虚拟环境到PyCharm,可参考博主这个博客:详细记录Pycharm配置已安装好的Conda虚拟环境

三、模型下载

使用 modelscope 中的 snapshot_download 函数下载模型,第一个参数为模型名称,参数 cache_dir 为模型的下载路径。
使用PyCharm中新建download_ model.py 文件,文件代码如下:

import os
from modelscope import snapshot_download
from modelscope.utils.constant import DownloadMode

def download_model(model_name,cache_path):
    """
    此函数用于从 modelscope 下载指定模型到指定路径。

    函数会尝试从 modelscope 下载 'deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B' 模型,
    并将其保存到 './models' 目录下。如果下载过程中出现任何异常,
    将会捕获并打印错误信息。

    返回值:
    - 如果下载成功,返回模型保存的目录路径。
    - 如果下载失败,返回 None。
    """

    try:
        # 确保下载路径存在,如果不存在则创建
        if not os.path.exists(cache_path):
            os.makedirs(cache_path)

        # 使用 snapshot_download 函数下载模型,设置下载模式为强制重新下载以获取最新版本
        model_dir = snapshot_download(
            model_name,
            cache_dir=cache_path,
            revision='master',
            download_mode=DownloadMode.FORCE_REDOWNLOAD
        )
        print(f"模型已成功下载到: {
     model_dir}")
        return model_dir
    except Exception as e:
        print(f"下载模型时出现错误: {
     e}")
        return None


if __name__ == "__main__":
    model_name = 'deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B'
    cache_path = './models'
    download_model(model_name,cache_path)

四、 终端输出

在PyChram添加代码:

4.1 导入必要的模块

### 部署 DeepSeek-R1-Distill-Qwen-32B 模型 为了成功部署 DeepSeek-R1-Distill-Qwen-32B 模型,需遵循一系列特定的操作流程。首先,确保安装必要的依赖库和工具。 #### 安装依赖项 在开始之前,确认已安装 Python 和 pip。接着,通过以下命令安装 Hugging Face 的 `transformers` 库和其他必需包: ```bash pip install transformers torch sentencepiece ``` #### 下载模型文件 使用指定的命令来下载 DeepSeek-R1-Distill-Qwen-32B 模型。这一步骤至关重要,因为只有获取到正确的模型权重才能顺利加载并运行该模型[^1]。 ```bash HF_HUB_ENABLE_HF_TRANSFER=1 \ huggingface-cli download deepseek-ai/DeepSeek-R1-Distill-Qwen-32B ``` #### 加载初始化模型 一旦完成模型文件的下载,在应用程序中引入相应的模块,并实例化所需的类以准备推理服务。下面是一个简单的例子展示如何实现这一点: ```python from transformers import AutoModelForCausalLM, AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("deepseek-ai/DeepSeek-R1-Distill-Qwen-32B") model = AutoModelForCausalLM.from_pretrained("deepseek-ai/DeepSeek-R1-Distill-Qwen-32B") def generate_text(prompt): inputs = tokenizer(prompt, return_tensors="pt") outputs = model.generate(**inputs) result = tokenizer.decode(outputs[0], skip_special_tokens=True) return result ``` 这段代码展示了怎样创建一个函数用于基于给定提示生成文本输出。注意这里假设已经正确设置了环境变量以及完成了上述提到的所有前置条件设置工作。 #### 启动模型服务 最后,利用合适的框架(如 Flask 或 FastAPI)构建 RESTful API 接口,使得外部程序可以通过 HTTP 请求访问此大型语言模型的服务功能。对于生产环境中更复杂的配置选项,则可能还需要考虑诸如 GPU 支持、分布式计算等因素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知来者逆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值