首页 前端知识 手把手教你在Windows docker本地部署DeepSeek-R1

手把手教你在Windows docker本地部署DeepSeek-R1

2025-03-19 11:03:50 前端知识 前端哥 298 815 我要收藏

摘要:本文详细介绍了在 Windows 系统上通过 Docker 部署 DeepSeek-R1 模型的完整过程。DeepSeek-R1 是一款由 DeepSeek 公司于 2025 年 1 月 20 日发布的开源推理大模型,具有出色的性能和广泛的应用场景。文章从部署前的准备工作开始,包括硬件和软件要求,详细阐述了 Docker 环境的搭建、基于 Ollama 和 Docker 的部署方式,以及部署后的测试与验证。此外,文章还提供了常见问题的解决方法和相关代码示例,帮助读者更好地理解和应用 DeepSeek-R1 模型。

一、DeepSeek-R1 简介

DeepSeek-R1 是一款由量化巨头幻方量化旗下大模型公司 DeepSeek 在 2025 年 1 月 20 日发布的推理大模型,它凭借着独特的技术和出色的性能,在人工智能领域中脱颖而出。该模型采用 MIT 许可协议,意味着它完全开源,支持免费商用、任意修改和衍生开发,这极大地降低了开发者的使用门槛,促进了 AI 技术的共享与创新,也让更多人能够基于它进行个性化的开发和应用。

在技术创新上,DeepSeek-R1 的最大亮点在于其训练方法。DeepSeek-R1-Zero 是首个完全通过强化学习(RL)训练的大型语言模型,无需依赖监督微调(SFT)或人工标注数据 。这一突破验证了仅通过奖励信号,模型也能发展出强大的推理能力。在 AIME 2024 数学测试中,其准确率从 15.6% 提升至 71.0%,使用多数投票机制后达到了 86.7%,接近 OpenAI o1-0912 的水平。为了进一步提升模型性能,DeepSeek-R1 引入了冷启动数据,结合强化学习进行训练,解决了 R1-Zero 在可读性和语言混合方面的局限性,显著提升了模型的推理能力。

在性能表现上,DeepSeek-R1 在多个基准测试中展现出了卓越的实力。在 AIME 2024 测试中,DeepSeek-R1 取得了 79.8% 的成绩,略高于 OpenAI o1 的 79.2%;在 MATH-500 测试中,DeepSeek-R1 的成绩为 97.3%,OpenAI o1 为 96.4%;在 Codeforces 评分中,DeepSeek-R1 达到 2029 分,OpenAI o1 为 2061 分;在 MMLU 测试中,DeepSeek-R1 获得了 90.8% 的成绩,OpenAI o1 则是 91.8% 。这些数据表明,DeepSeek-R1 在数学、编程和推理等多个任务上达到了与 OpenAI o1 相当的表现水平。

DeepSeek-R1 的应用场景也十分广泛,在数学与逻辑推理领域,它能够高效解决复杂数学问题,可应用于教育、科研等场景,帮助学生更好地理解数学知识,辅助科研人员进行复杂的计算和推理;在代码生成与优化方面,它表现出色,能够生成高质量代码,优化现有代码库,提高软件开发的效率和质量,为程序员提供强大的编程辅助工具;在科学研究与问答场景中,模型在科学问题解答和假设生成方面展现了强大的能力,为研究人员提供了有力支持,加速科研进展。

而将 DeepSeek-R1 进行本地部署具有重要意义。本地部署可以带来更低的延迟,当我们在使用模型进行交互时,能够更快地得到响应,无需等待网络传输和云端处理的时间,大大提高了使用效率;同时,本地部署能提供更高的隐私性,对于一些涉及敏感信息的应用场景,数据无需上传到云端,避免了数据泄露的风险;此外,本地部署还能让我们对 AI 应用拥有更大的控制权,可以根据自身需求对模型进行定制化配置和优化,满足不同的业务需求 。

二、部署前的准备工作

2.1 硬件要求

在硬件方面,运行 DeepSeek-R1 对设备有一定要求。不同版本的模型对硬件的需求有所差异,以常见的 7B 版本为例,推荐使用至少 8 核心的 CPU,如 Intel Core i7 或 AMD Ryzen 7 系列处理器,主频越高越好,这样在处理复杂任务时能更加高效。内存方面,建议配备 16GB 及以上的内存,以确保模型在运行过程中能够流畅地加载和处理数据。如果同时运行多个任务或者处理大规模数据,更大的内存会显著提升运行效率 。

以下是DeepSeek-R1不同模型版本的电脑配置要求整理成的表格:

模型版本参数量CPU内存硬盘显卡适用场景
DeepSeek-R1-1.5B1.5B4核及以上8GB+3GB+非必需(若有4GB+显存更佳)轻量级任务,如短文本生成、基础问答等
DeepSeek-R1-7B7B8核及以上16GB+8GB+推荐8GB+显存(如RTX 3070/4060)中等复杂度任务,如文案撰写、表格处理等
DeepSeek-R1-8B8B8核及以上16GB+8GB+推荐8GB+显存(如RTX 3070/4060)需更高精度的轻量级任务,如代码生成等
DeepSeek-R1-14B14B12核及以上32GB+15GB+16GB+显存(如RTX 4090或A5000)企业级复杂任务,如合同分析、报告生成等
DeepSeek-R1-32B32B16核及以上64GB+30GB+24GB+显存(如A100 40GB或双卡RTX 3090)高精度专业领域任务,如医疗/法律咨询等
DeepSeek-R1-70B70B16核及以上64GB+60GB+48GB+显存(如A100 80GB*4)顶级规模模型,适用于前沿研究和超高性能需求

请注意,以上配置是根据模型的参数量和一般硬件需求推测的,实际部署时可能需要根据具体情况进行调整。

对于显卡,若想利用 GPU 加速提升模型的运行速度,推荐使用 NVIDIA 的 RTX 系列显卡,显存不低于 8GB,例如 RTX 3060 及以上型号。NVIDIA 显卡在深度学习任务中表现出色,能够大幅缩短模型的推理时间,提供更流畅的使用体验。而对于硬盘,至少需要预留 50GB 的可用空间,用于存储模型文件、数据以及相关的依赖库。随着数据量的增加和模型的更新,建议预留更大的硬盘空间,以便未来扩展使用 。

如果是更高参数规模的模型,如 14B、32B 版本,对硬件的要求会相应提高。14B 版本模型可能需要 12 核心以上的 CPU、32GB 及以上的内存和 16GB 显存的显卡;32B 版本模型则可能需要 16 核心以上的 CPU、64GB 及以上的内存以及 24GB 显存的高端显卡 。因此,在选择部署的模型版本时,需要根据自身硬件配置进行合理评估,以确保模型能够在设备上稳定运行。

2.2 软件要求

软件方面,首先需要安装 Windows 系统,建议使用 Windows 10 及以上版本,以确保系统的兼容性和稳定性。Windows 系统作为广泛使用的操作系统,拥有丰富的软件资源和良好的用户界面,为 DeepSeek-R1 的部署和使用提供了便利的环境 。其次,Docker 是必不可少的软件。Docker 是一个开源的应用容器引擎,它可以将应用程序及其依赖项打包成一个可移植的容器,使得应用在不同的环境中能够稳定运行。在 Windows 上安装 Docker,可以通过官方网站(https://docs.docker.com/desktop/windows/install/)下载 Docker Desktop 安装包。下载完成后,双击安装包,按照安装向导的提示进行安装。在安装过程中,可能需要启用 Hyper-V 功能,对于 Windows 10 专业版,可以通过 “控制面板 - 程序和功能 - 启用或关闭 Windows 功能”,勾选 Hyper-V 来启用;对于 Windows 10 家庭版,需要通过特殊操作来添加,可在 cmd 命令行中输入 “systeminfo” 查看系统是否支持 Hyper-V 功能,若支持,可通过新建文本文档,复制相关代码并将后缀改为.cmd,以管理员身份运行该文件,重启后即可启用 Hyper-V。安装完成后,启动 Docker,在 cmd 命令行中输入 “docker version”,若能显示出版本信息,则说明安装成功 。另外,Ollama 也是部署 DeepSeek-R1 的重要工具。Ollama 是一个运行大模型的工具,类似于 Docker,它可以方便地下载和运行大模型。可以在 Ollama 官网(Ollama)下载适合 Windows 系统的安装包。下载完成后,正常安装即可。安装完成后,可以在命令行中输入 “ollama -v” 验证是否安装成功。为了方便管理模型文件,还可以配置环境变量,打开 windows 设置,依次点击 “系统 - 系统信息 - 高级系统设置 - 环境变量”,在系统变量中新建一个名为 “OLLAMA_MODELS” 的变量,变量值设置为希望存储模型文件的目录 。

三、Docker 环境搭建

3.1 安装 Docker Desktop

 推荐查看我之前写的Windows10安装Docker Desktop精选文章,里面安装写得很详细,如下:Windows10安装Docker Desktop(大妈看了都会)https://xiaoxiang113.blog.csdn.net/article/details/137970794https://xiaoxiang113.blog.csdn.net/article/details/137970794

在 Windows 系统上安装 Docker Desktop,首先需要访问 Docker 官方网站(https://www.docker.com/products/docker-desktop),在页面中找到适合 Windows 系统的下载链接,点击下载 Docker Desktop 安装程序。下载完成后,双击运行安装程序,安装向导会引导你完成后续安装步骤。

在安装过程中,会出现欢迎界面,点击 “OK” 继续。接着,需要接受许可协议,然后点击 “Install” 开始安装。安装过程可能需要一些时间,请耐心等待。安装完成后,系统会提示重新启动计算机,点击 “Close and restart” 完成重启。这一步非常重要,重启计算机可以启用必要的功能,确保 Docker Desktop 能够正常运行 。

重启计算机后,Docker Desktop 应该会自动启动。如果没有自动启动,可以在 “开始” 菜单中找到 Docker Desktop 并手动启动它。启动后,会看到 Docker 的欢迎界面,此时 Docker Desktop 正在自动配置环境,完成后会在系统托盘中显示 Docker 图标 。

3.2 配置 Docker

安装完成 Docker Desktop 后,为了加快镜像的下载速度,我们需要配置镜像源。国内有许多优质的镜像源可供选择,如阿里云、腾讯云等。以阿里云为例,首先使用淘宝或支付宝账号登录阿里云官网,在控制台中找到 “容器镜像服务”,点击进入后找到 “镜像加速器” 选项,即可获取专属的镜像加速器地址 。

接下来,打开 Docker Desktop 的设置。在系统右下角的托盘图标中,右键单击 Docker 图标,选择 “Settings”。在弹出的设置窗口中,左侧导航栏选择 “Docker Engine”,在右侧的编辑窗口中,找到 “registry-mirrors” 字段,将获取到的阿里云镜像加速器地址添加进去,例如:

{

"registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]

}

修改完成后,点击 “Apply & Restart” 按钮,Docker 会自动重启并应用新的配置。这样,在后续拉取镜像时,就会从配置的镜像源下载,大大提高下载速度 。

配置完成后,可以通过命令行来验证镜像源是否配置成功。打开命令提示符或 PowerShell,输入 “docker info” 命令,在输出信息中查找 “Registry Mirrors” 字段,如果显示的是刚刚配置的镜像源地址,就说明配置成功了 。

四、方式1-基于 Ollama 部署

4.1 下载与安装 Ollama

在部署 DeepSeek-R1 模型时,Ollama 是一个非常实用的工具,它可以帮助我们轻松地在本地运行和管理大语言模型。首先,我们需要在 Windows 系统上下载和安装 Ollama。

访问 Ollama 官方下载网站(https://ollama.com/download),在网站上找到适用于 Windows 系统的下载链接,点击下载安装包。下载完成后,找到下载的安装包文件,通常是一个.exe 后缀的文件,双击运行安装程序。

在安装向导中,按照提示逐步进行操作。一般会出现欢迎界面,点击 “Next” 继续;然后阅读许可协议,勾选 “I accept the agreement” 接受协议,再点击 “Next”;接着选择安装路径,默认情况下会安装到系统盘(通常是 C 盘),如果想要更改安装路径,可以点击 “Browse” 选择其他磁盘和目录,设置好路径后点击 “Install” 开始安装。安装过程可能需要一些时间,请耐心等待,安装完成后点击 “Finish” 完成安装 。

安装完成后,需要验证 Ollama 是否安装成功。打开命令提示符(CMD)或 PowerShell,在命令行中输入 “ollama -v”,如果安装成功,会显示 Ollama 的版本信息,例如 “ollama version 0.5.7” 。这表明 Ollama 已经成功安装在你的系统中,可以开始使用它来下载和管理大模型了。

4.2 使用 Ollama 下载 DeepSeek-R1 模型

安装好 Ollama 后,就可以使用它来下载 DeepSeek-R1 模型了。Ollama 提供了简洁的命令行接口,让模型下载变得非常方便。

DeepSeek-R1 模型有多个版本可供选择,不同版本的模型参数规模和性能有所差异,你可以根据自己的硬件配置来选择合适的版本。例如,如果你使用的是配置较低的设备,如只有普通 CPU 且内存较小,可以选择下载参数规模较小的版本,像 1.5B 版本,它对硬件要求较低,在 CPU 上也能相对流畅地运行;如果你拥有高性能的 GPU 和较大的内存,那么可以选择下载参数规模更大的版本,如 7B、14B、32B 甚至 70B 版本,以获得更好的模型性能 。

在命令行中,使用以下命令来下载 DeepSeek-R1 模型:

# 下载1.5B版本

ollama run deepseek-r1:1.5b

# 下载7B版本(默认指令,若不指定版本,会下载此版本)

ollama run deepseek-r1

# 下载8B版本

ollama run deepseek-r1:8b

# 下载14B版本

ollama run deepseek-r1:14b

# 下载32B版本

ollama run deepseek-r1:32b

# 下载70B版本

ollama run deepseek-r1:70b

当你执行上述命令时,Ollama 会首先检查本地是否已经存在该版本的模型,如果不存在,它会自动从远程仓库下载模型文件。模型的下载速度取决于你的网络状况,可能需要几分钟到几十分钟不等,请耐心等待下载完成 。

模型下载完成后,默认会存储在 Ollama 的模型存储目录中。如果你在安装 Ollama 后配置了环境变量 “OLLAMA_MODELS”,那么模型会存储在你指定的目录中;如果没有配置环境变量,模型会存储在默认的安装目录下,例如 “C:\Users\ 你的用户名.ollama\models” 。你可以通过 “ollama list” 命令来查看本地已经下载的模型列表,包括模型名称、ID、大小和修改时间等信息,确认 DeepSeek-R1 模型是否已经成功下载到本地 。本人电脑路径,仅供参考:C:\Users\Administrator\.ollama\models

4.3 与DeepSeek-R1对话

第一次对话可能有缓存,关掉对话框,重新打开PowerShell对话就正常了,如下所示:

对话测试1:

我失业了,没有存款,有老人要赡养和孩子养育,每月有5000的房贷和3000的房租,还有日常花销,我该怎么力?

 对话测试2:

介绍一下广州

五、方式2-基于 Docker 的部署

5.1 拉取相关镜像(可选)

在基于 Docker 部署 DeepSeek-R1 时,若有官方或其他可靠来源提供的 Docker 镜像【目前作者试了还docker官方还没有,预计一段时间后会上映,docker pull deepseek-r1:latest】,拉取镜像这一步就十分关键。拉取镜像能快速获取预配置好的运行环境,大大简化部署流程。

打开命令提示符或 PowerShell,输入以下命令拉取 DeepSeek-R1 的 Docker 镜像。假设镜像名称为deepseek-r1:latest,其中latest表示最新版本标签,也可指定具体版本号,如deepseek-r1:v1.0:

docker pull deepseek-r1:latest

执行该命令后,Docker 会从镜像仓库中查找并下载指定的 DeepSeek-R1 镜像。下载过程中,能看到下载进度条,显示已下载的镜像层和剩余下载量。下载速度取决于网络状况,若网络稳定且带宽充足,下载会较快完成;若网络不稳定,可能需要耐心等待。

拉取镜像前,可先使用docker images命令查看本地已有的镜像列表,确认是否已存在 DeepSeek-R1 镜像,避免重复下载 。

 

5.2 创建并运行容器

拉取镜像后,需创建并运行 Docker 容器,让 DeepSeek-R1 模型在容器中运行。创建容器时,要设置多个重要参数,以确保模型正常运行且便于与外部交互。

使用以下命令创建并运行 DeepSeek-R1 容器:

docker run -d -p 8080:8080 -v /path/to/local/data:/app/data --name deepseek-r1-container deepseek-r1:latest
  • -d:表示以后台模式运行容器,即容器在后台运行,不会占用当前命令行终端,可继续执行其他命令 。
  • -p 8080:8080:将容器内的 8080 端口映射到宿主机的 8080 端口。这样,通过访问宿主机的 8080 端口,就能访问容器内运行的 DeepSeek-R1 服务。若宿主机 8080 端口已被占用,可修改为其他未被占用的端口,如-p 8081:8080,将容器内 8080 端口映射到宿主机 8081 端口 。
  • -v /path/to/local/data:/app/data:将宿主机的/path/to/local/data目录挂载到容器内的/app/data目录。这允许容器访问宿主机上的指定目录,方便数据共享和持久化存储。例如,若要将本地的模型文件存储在/home/user/deepseek-r1-data目录,可设置为-v /home/user/deepseek-r1-data:/app/data。确保宿主机上的/path/to/local/data目录存在且有正确的读写权限,否则容器可能无法正常访问 。
  • --name deepseek-r1-container:为容器指定名称deepseek-r1-container,方便后续管理和操作容器,如使用docker stop deepseek-r1-container停止容器,docker start deepseek-r1-container启动容器 。
  • deepseek-r1:latest:指定要运行的 Docker 镜像,这里使用拉取的deepseek-r1:latest镜像 。

容器创建并运行后,可通过docker ps命令查看正在运行的容器列表,确认 DeepSeek-R1 容器是否成功启动。若容器启动失败,可使用docker logs deepseek-r1-container命令查看容器日志,了解错误原因并进行排查 。

5.3 官方推荐Sglang部署

因为上面官方Docker里面还没有镜像,本人推荐使用DeepSeek官方推荐的sglang部署,有5种方式,下面我我使用docker compose方式:

Install SGLang — SGLang

services:
  sglang:
    image: lmsysorg/sglang:latest
    container_name: sglang
    volumes:
      - ${HOME}/.cache/huggingface:/root/.cache/huggingface
      # If you use modelscope, you need mount this directory
      # - ${HOME}/.cache/modelscope:/root/.cache/modelscope
    restart: always
    network_mode: host # required by RDMA
    privileged: true # required by RDMA
    # Or you can only publish port 30000
    # ports:
    #   - 30000:30000
    environment:
      HF_TOKEN: <secret>
      # if you use modelscope to download model, you need set this environment
      # - SGLANG_USE_MODELSCOPE: true
    entrypoint: python3 -m sglang.launch_server
    command: --model-path meta-llama/Llama-3.1-8B-Instruct
      --host 0.0.0.0
      --port 30000
    ulimits:
      memlock: -1
      stack: 67108864
    ipc: host
    healthcheck:
      test: ["CMD-SHELL", "curl -f http://localhost:30000/health || exit 1"]
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              device_ids: ["0"]
              capabilities: [gpu]

将 compose.yml 复制到本地计算机
在终端中执行命令。docker compose up -d

六、部署后的测试与验证

6.1 启动服务

完成上述部署步骤后,即可启动 DeepSeek-R1 服务。若通过 Docker 部署,且容器已成功创建并运行,可通过以下命令确保容器正在运行:

docker ps

在输出结果中,应能看到名为deepseek-r1-container(若在创建容器时指定了该名称)的容器,其状态为 “Up”,表明容器正在运行,DeepSeek-R1 服务也在正常运行中 。

若使用 Ollama 部署,可在命令行中输入以下命令启动 Ollama 服务(若服务未自动启动):

ollama serve

该命令会启动 Ollama 服务,使其监听默认端口(通常为 11434),以便与 DeepSeek-R1 模型进行交互 。

6.2 测试模型

测试 DeepSeek-R1 模型的方法有多种,这里介绍通过命令行和 Web 界面两种方式进行测试。

命令行测试

若使用 Ollama 部署,可在命令行中直接与模型进行交互。在命令行中输入以下命令,即可进入与 DeepSeek-R1 模型的交互界面:

ollama run deepseek-r1

若下载的是特定版本的模型,如deepseek-r1:7b,则使用对应的命令:

ollama run deepseek-r1:7b

进入交互界面后,会看到命令行提示符发生变化,此时可输入问题或任务让模型处理。例如,输入 “请介绍一下 Python 语言的特点”,模型会进行分析和处理,并返回相应的回答 。模型处理过程中,可能会显示一些中间信息,如思考过程等,最终会输出完整的回答内容。回答完成后,可继续输入新的问题,持续与模型进行交互 。

Web 界面测试

为了通过 Web 界面与 DeepSeek-R1 模型进行交互,可使用一些支持 Ollama 模型的 WebUI 工具,如 Open WebUI。首先,需要按照相应的部署指南部署 Open WebUI。以 Docker 部署为例,使用以下命令启动 Open WebUI 容器:

docker run -d -p 3006:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

上述命令中,-p 3006:8080将容器内的 8080 端口映射到宿主机的 3006 端口,通过浏览器访问http://localhost:3006即可打开 Open WebUI 界面 。首次访问时,可能需要创建管理员账号,按照提示完成注册。

登录 Open WebUI 后,在界面中找到模型配置相关的选项,选择 “Ollama 兼容” 模型类型,并配置模型名称为deepseek-r1(若为特定版本,如deepseek-r1:7b,则填写对应的名称),API 地址为http://host.docker.internal:11434(若 Ollama 与 Open WebUI 在同一宿主机上部署) 。配置完成后,点击 “验证连接”,确保模型连接正常。

 

连接成功后,即可在 Web 界面的输入框中输入问题或任务,如 “介绍一下广州塔”,点击发送按钮,模型会在后台处理请求,并在界面中返回回答结果 。Web 界面通常还提供了更多的交互功能,如查看历史对话记录、调整模型参数(如温度、最大生成长度等),方便用户更好地使用模型 。

七、常见问题及解决方法

在部署 DeepSeek-R1 的过程中,可能会遇到各种问题,以下是一些常见问题及解决方法。

7.1 网络问题

  • 问题描述:在使用 Ollama 下载模型或通过 Docker 拉取镜像时,可能会因为网络不稳定或速度过慢导致下载失败,出现超时错误或下载中断的情况 。
  • 解决方法:检查网络连接是否正常,可以尝试访问其他网站或下载其他文件来确认。如果网络连接正常,但下载速度较慢,可以更换网络环境,如从移动网络切换到 Wi-Fi 网络;或者使用代理服务器,在命令行中设置代理环境变量,例如在 Windows 系统的命令提示符中,使用命令set HTTP_PROXY=http://your_proxy:port和set HTTPS_PROXY=https://your_proxy:port(将your_proxy:port替换为实际的代理地址和端口) 。此外,还可以在 Docker 的配置中添加代理设置,在 Docker Desktop 的设置中,找到 “Proxies” 选项,填写代理服务器信息,然后重启 Docker 使设置生效 。

7.2 依赖冲突

  • 问题描述:如果系统中已经安装了与 DeepSeek-R1 部署相关的依赖库,且版本不兼容,可能会导致部署失败。例如,已经安装的 Python 库版本与 Ollama 或 Docker 依赖的库版本冲突,可能会出现模块导入错误或运行时错误 。
  • 解决方法:使用虚拟环境来隔离不同项目的依赖。对于 Python 项目,可以使用venv或conda创建虚拟环境。以venv为例,在命令行中输入python -m venv deepseek-env创建名为deepseek-env的虚拟环境,然后使用deepseek-env\Scripts\activate(Windows 系统)或source deepseek-env/bin/activate(Linux 和 macOS 系统)激活虚拟环境,在虚拟环境中安装所需的依赖,这样可以避免与系统全局环境中的依赖冲突 。如果已经出现依赖冲突问题,可以通过pip list命令查看已安装的库及其版本,使用pip uninstall卸载冲突的库,然后重新安装指定版本的库,或者参考项目的官方文档,查看推荐的依赖版本并进行相应调整 。

7.3 硬件资源不足

  • 问题描述:运行 DeepSeek-R1 模型对硬件资源有一定要求,如果硬件配置较低,可能会出现运行缓慢、内存不足甚至无法启动的问题。例如,在使用较低配置的 CPU 和内存时,模型推理速度会明显变慢;当模型所需的显存超过显卡的实际显存时,会出现显存不足的错误 。
  • 解决方法:对于内存不足的问题,可以关闭其他不必要的程序,释放系统内存。如果是运行较大参数规模的模型,如 32B、70B 版本,而硬件配置无法满足要求,可以考虑更换更高配置的硬件,如增加内存容量、升级显卡等 。另外,也可以选择下载和运行参数规模较小的模型版本,如 1.5B、7B 版本,这些版本对硬件要求相对较低,在配置较低的设备上也能较好地运行 。在运行模型时,可以使用系统监控工具,如 Windows 系统的任务管理器或 Linux 系统的top命令,实时监控硬件资源的使用情况,以便及时发现和解决资源不足的问题 。

7.4 Docker 容器启动失败

  • 问题描述:在创建和运行 Docker 容器时,可能会因为各种原因导致容器启动失败,如端口冲突、挂载目录错误等。例如,指定的端口已经被其他程序占用,会导致端口映射失败,容器无法正常启动;挂载目录不存在或权限不足,会导致容器内无法访问宿主机的指定目录 。
  • 解决方法:如果是端口冲突问题,可以使用netstat -ano命令(Windows 系统)或lsof -i :端口号命令(Linux 和 macOS 系统)查看指定端口的占用情况,找到占用端口的程序并关闭它,或者修改 Docker 容器的端口映射,将容器内的端口映射到其他未被占用的端口 。对于挂载目录错误,首先确保宿主机上的挂载目录存在,可以使用mkdir命令创建目录;然后检查目录的权限,确保运行 Docker 的用户对该目录有读写权限,必要时可以使用chmod命令修改目录权限 。此外,还可以通过docker logs 容器名称命令查看容器的日志,获取详细的错误信息,以便更准确地定位和解决问题 。

 八、DeepSeek相关的代码示例

8.1Python SDK调用示例

配置API,进行基础对话和推理模型示例调用。

import openai

# 配置API
openai.api_key = "YOUR_API_KEY"
openai.api_base = "https://api.deepseek.com/v1"

# 基础对话示例
def basic_chat():
    try:
        response = openai.ChatCompletion.create(
            model="deepseek-chat",
            messages=[
                {"role": "user", "content": "你好,请介绍一下你自己"}
            ]
        )
        print(response.choices[0].message.content)
    except Exception as e:
        print(f"Error: {e}")

# 推理模型示例
def reasoning_chat():
    try:
        response = openai.ChatCompletion.create(
            model="deepseek-reasoner",
            messages=[
                {"role": "user", "content": "请解决这个问题:一个小球从10米高度自由落下,每次弹起高度为原高度的一半,问第三次落地时共经过多少米?"}
            ]
        )
        print(response.choices[0].message.content)
    except Exception as e:
        print(f"Error: {e}")

if __name__ == "__main__":
    basic_chat()
    reasoning_chat()

8.2使用DeepSeek R1和Ollama开发RAG系统

利用PDFPlumberLoader提取PDF文本,SemanticChunker进行文档语义分块,HuggingFaceEmbeddings生成文本嵌入,FAISS构建向量数据库,Ollama配置DeepSeek R1模型,以及PromptTemplate定义提示模板,组装RAG处理链。

import streamlit as st
from langchain_community.document_loaders import PDFPlumberLoader
from langchain_experimental.text_splitter import SemanticChunker
from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain_community.vectorstores import FAISS
from langchain_community.llms import Ollama

# 创建Streamlit文件上传组件
uploaded_file = st.file_uploader("上传PDF文件", type="pdf")
if uploaded_file:
    # 临时存储PDF文件
    with open("temp.pdf", "wb") as f:
        f.write(uploaded_file.getvalue())
    # 加载PDF内容
    loader = PDFPlumberLoader("temp.pdf")
    docs = loader.load()

# 初始化语义分块器
text_splitter = SemanticChunker(
    HuggingFaceEmbeddings(model_name="all-MiniLM-L6-v2")
)
# 执行分块操作
documents = text_splitter.split_documents(docs)

# 生成文本嵌入
embeddings = HuggingFaceEmbeddings()
vector_store = FAISS.from_documents(documents, embeddings)
# 配置检索器
retriever = vector_store.as_retriever(search_kwargs={"k": 3})

# 初始化本地模型
llm = Ollama(model="deepseek-r1:1.5b")
# 定义提示模板
prompt_template = """
根据以下上下文:
{context}
问题:{question}
回答要求:
1. 仅使用给定上下文
2. 不确定时回答"暂不了解"
3. 答案控制在四句话内
最终答案:
"""
QA_PROMPT = PromptTemplate.from_template(prompt_template)

# 创建LLM处理链
llm_chain = LLMChain(llm=llm, prompt=QA_PROMPT)
# 配置文档组合模板
document_prompt = PromptTemplate(
    template="上下文内容:\n{page_content}\n来源:{source}",
    input_variables=["page_content", "source"]
)
# 构建完整RAG管道
qa = RetrievalQA(
    combine_documents_chain=StuffDocumentsChain(
        llm_chain=llm_chain,
        document_prompt=document_prompt
    ),
    retriever=retriever
)

# 创建问题输入框
user_question = st.text_input("输入您的问题:")
if user_question:
    with st.spinner("正在生成答案..."):
        # 执行查询并显示结果
        response = qa(user_question)["result"]
        st.success(response)

这些代码示例可以帮助您更好地理解和使用DeepSeek,实现各种应用场景。

8.3 DeepSeek-R1 API来生成文章的大纲

如果您需要使用DeepSeek-R1来撰写文章,可以参考以下代码示例,它展示了如何调用DeepSeek-R1 API来生成文章的大纲,包括引言、主体部分和结论。您可以根据这个大纲来撰写文章的结尾部分,确保它与文章的主要内容和观点相呼应。

import requests

# 填写你的 API Key
API_KEY = "sk-你的密钥"
url = "https://api.deepseek.com/chat/completions"
headers = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {API_KEY}"
}
data = {
    "model": "deepseek-reasoner",  # 指定使用 R1 模型(deepseek-reasoner)
    "messages": [
        {"role": "system", "content": "你是一个专业的助手"},
        {"role": "user", "content": "请帮我生成“中国农业情况”这篇文章的大纲"}
    ],
    "stream": False  # 关闭流式传输
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
    result = response.json()
    print(result['choices'][0]['message']['content'])  # 输出大纲内容
else:
    print("请求失败,错误码:", response.status_code)

请注意,上述代码需要您替换API_KEY为您自己的DeepSeek API密钥。此外,您可能需要根据实际需求调整API的URL、请求头和数据内容。

九、总结与展望

在本次部署指南中,我们全面且深入地探讨了在 Windows 系统上借助 Docker 进行 DeepSeek-R1 本地部署的详细过程。从前期的准备工作,包括对硬件和软件的严格要求,到 Docker 环境的精心搭建、Ollama 的巧妙运用,再到基于 Docker 的具体部署步骤以及最后的测试与验证,每一个环节都至关重要,共同构成了成功部署 DeepSeek-R1 的关键路径。

DeepSeek-R1 的本地部署具有不可忽视的价值。它为我们带来了低延迟的交互体验,让我们在与模型对话时能够迅速得到回应,极大地提高了工作效率;同时,高度的隐私性确保了敏感数据的安全,无需担忧数据在云端传输和存储过程中的泄露风险;强大的控制权则允许我们根据自身的特定需求,对模型进行灵活的定制化配置和优化,使其更好地服务于各种业务场景 。

展望未来,随着技术的不断进步,DeepSeek-R1 有望在更多领域得到广泛应用。在教育领域,它可以作为智能辅导工具,为学生提供个性化的学习指导,帮助学生更好地理解和掌握知识;在医疗领域,能够辅助医生进行疾病诊断和药物研发,为医疗决策提供有力支持;在工业制造领域,可用于生产流程的优化和故障预测,提高生产效率和产品质量 。

在优化方向上,模型的性能提升将是持续的追求目标。研发团队可以进一步优化算法,提高模型的推理速度和准确性,使其能够处理更复杂的任务;在资源利用方面,通过技术创新,实现对硬件资源的更高效利用,降低部署成本,让更多用户能够轻松使用 DeepSeek-R1;而在功能拓展上,增加对多模态数据的支持,如语音、图像等,将极大地丰富模型的应用场景,为用户带来更加多样化的服务 。相信在未来,DeepSeek-R1 将在人工智能领域发挥更大的作用,为我们的生活和工作带来更多的便利和创新。

感谢您耐心阅读本文。希望本文能为您提供有价值的见解和启发。如果您对[Windows+docker本地部署DeepSeek-R1]有更深入的兴趣或疑问,欢迎继续关注相关领域的最新动态,或与我们进一步交流和讨论。让我们共同期待[Windows+docker本地部署DeepSeek-R1]在未来的发展历程中,能够带来更多的惊喜和突破。

再次感谢,祝您拥有美好的一天!

博主还写了本文相关文章,欢迎大家批评指正: 

1、DeepSeek:打工人的高效工作神器

2、DeepSeek开启程序员副业增收新通道,财富密码大公开!

3、手把手教你在Windows+docker本地部署DeepSeek-R1

转载请注明出处或者链接地址:https://www.qianduange.cn//article/24125.html
标签
评论
发布的文章

dify安装

2025-03-19 11:03:51

Docker

2025-03-19 11:03:46

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!