DeepSeek-R1本地化部署 java调用 图文教程(Ollama+Docker+OpenWebUI)
文章目录一DeepSeek-R1简介发展历程主要功能训练方式思维链任务表现相关测评国际关注相关评价二DeepSeek-R1 部署1 Ollama 安装2 Ollama 相关命令3ollama deepseek-r1 模型下载4ollama 测试 deepseek-r1 模型5springboot 调用 deepseek-r1 模型6docker安装6Open WebUI 安装一DeepSeek-R1简介DeepSeek-R1 是幻方量化旗下大模型公司 DeepSeek 研发的系列推理模型以下是关于它的简介发展历程2024 年 11 月 20 日DeepSeek-R1-Lite 预览版正式上线网页端仅支持网页使用暂不支持 API 调用。2025 年 1 月 20 日DeepSeek 正式发布 DeepSeek-R1 模型并同步开源模型权重。2025 年 1 月 24 日在 Arena 上DeepSeek-R1 基准测试升至全类别大模型第三在风格控制类模型分类中与 OpenAI o1 并列第一。2025 年 1 月 31 日英伟达、微软与亚马逊三家美国头部企业接入 DeepSeek-R1 模型。2025 年 2 月 1 日DeepSeek 和华为云联合首发并上线基于华为云昇腾云服务的 DeepSeek R1 推理服务。2025 年 2 月 2 日腾讯云宣布 DeepSeek-R1 大模型一键部署至腾讯云 HAI 上开发者仅需 3 分钟就能接入调用。主要功能训练方式使用强化学习训练在后训练阶段大规模使用了强化学习技术在仅有极少标注数据的情况下极大提升了模型推理能力。思维链推理过程包含大量反思和验证思维链长度可达数万字。任务表现在数学、代码以及各种复杂逻辑推理任务上应用出色取得了媲美 OpenAI o1-preview 的推理效果并为用户展现了 o1 没有公开的完整思考过程。在自然语言推理等任务上性能比肩 OpenAI o1 正式版。DeepSeek 还通过 DeepSeek-R1 的输出蒸馏了 6 个小模型开源给社区其中 32B 和 70B 模型在多项能力上实现了对标 OpenAI o1-mini 的效果。相关测评DeepSeek-R1-Lite 预览版模型在美国数学竞赛AMC中难度等级最高的 AIME 以及全球顶级编程竞赛codeforces等评测中超越了 GPT-4 等模型。国际关注美国媒体 Business Insider 报道称DeepSeek-R1 模型秉承开放精神完全开源为美国 AI 玩家带来了麻烦。著名投资公司 A16z 的创始人马克・安德森发文称Deepseek-R1 是他见过的最令人惊叹、最令人印象深刻的突破之一而且还是开源的它是给世界的一份礼物。A16z 合伙人 Anjney Midha 表示从斯坦福到麻省理工DeepSeek-R1 几乎一夜之间成为美国顶尖大学研究人员的首选模型。英国《金融时报》发表评论文章表示DeepSeek-R1 对全球用户产生极大吸引力有利于推动人工智能技术的开发和应用可能会吸引美国科技巨头的一部分客户。相关评价俄罗斯外交部长拉夫罗夫评价称中国科学家在人工智能领域取得的成就以及包括 DeepSeek 的出现超越了美国相关研发人员在该领域的成果。二DeepSeek-R1 部署DeepSeek-R1 github地址 https://github.com/deepseek-ai/DeepSeek-R1根据上图看出DeepSeek-r1各方面优于OpenAI在某些方面评估甚至强于OpenAI。下面我开始搭建1 Ollama 安装本节针对于不需要 OpenUI 的 Ubuntu 用户以及开发者同时也是为了帮助大家深入理解 ollama这里介绍一种独立安装 ollama 的方式。值得注意的是这种安装方式无需借助 docker 即可运行 ollama。而需要安装 OpenWebUI的用户可直接跳转至第六节继续操作ollama 是一个强大的工具它为模型的管理和运行提供了便利。它可以简化模型的下载、配置和启动过程让用户能够快速地将不同的模型集成到自己的工作流程中。例如在处理多个不同类型的大语言模型时ollama 可以轻松管理这些模型之间的切换和调用提高开发效率。ollama 下载地址 https://ollama.com/downloadollama github地址 https://github.com/ollama/ollama#复制官网Linux自动安装命令执行即可curl-fsSL https://ollama.com/install.sh|sh安装成功如下图2 Ollama 相关命令Ollama 提供了多种命令行工具CLI供用户与本地运行的模型进行交互。我们可以用 ollama --help 查看包含有哪些命令Large language model runner Usage: ollama[flags]ollama[command]Available Commands: serveStartollama create Create a modelfroma Modelfile show Show informationfora model run Run a model stop Stop a running model pull Pull a modelfroma registry push Push a model to a registry list List modelspsList running modelscpCopya modelrmRemove a model help Help about any command Flags:-h,--help helpforollama-v,--version Show version information3ollama deepseek-r1 模型下载根据 ollama 说明文档 可以看出deepSeek-r1 支持的模型。也可以到Ollama 支持 ollama.com/library 上查看可用的模型列表点击进入 deepseek-r1 模型可以选择不同版本的模型1.5b/7b/14b/32b/70b/671b。deepseek-r1 提供多个版本参数量越大模型的性能越强大但也需要更多的存储和计算资源。1.5b 模型参数为15亿/1.1GB7b 模型参数约为 70亿/4.7GB14b 模型参数约为 140亿/9GB。# 使用 ollama 获取 deepseek-r1 模型7b# 在ubuntu命令行执行ollama pull deepseek-r1:7b# 查看已下载模型列表ollama list4ollama 测试 deepseek-r1 模型# 1在ubuntu命令行执行ollama run deepseek-r1:7b# 2命令行输入对话内容回车如请介绍deepseek-r1 如下图所示成功响应即可5springboot 调用 deepseek-r1 模型创建springboot工程 引入springweb ollama工程结构如下图pom文件application.properties 配置文件写个单元测试尝试调用Ollama中的deepseek-r1模型这里尝试实现一个翻译的功能packageorg.hdsoft.ollamademo;importorg.junit.jupiter.api.Test;importorg.springframework.ai.ollama.OllamaChatModel;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.boot.test.context.SpringBootTest;SpringBootTestclassOllamaDemoApplicationTests{// Test// void contextLoads() {// }AutowiredprivateOllamaChatModelollamaChatModel;TestpublicvoidtestChatModel(){Stringprompt 你是一个精通中文和英文的翻译大师。如果我给你英文就翻译成中文给你中文就翻译成英文。 ;Stringmessage Ollama now supports tool calling with popular models such as Llama 3.1. This enables a model to answer a given prompt using tool(s) it knows about, making it possible for models to perform more complex tasks or interact with the outside world. ;StringresultollamaChatModel.call(prompt:message);System.out.println(result);}}运行结构图下图目前我们的 DeepSeek-R1 部署对于开发者已经完成。为了更便捷地对 DeepSeek-R1 进行测试与使用接下来我们需要安装 Open WebUI。 Open WebUI我们借助docker容器化安装部署。6docker安装Docker 作为一款开源引擎具备强大的功能能够便捷地为任意应用创建轻量级、可移植且自给自足的容器。开发者在笔记本上完成编译与测试的容器可批量部署至生产环境涵盖 VMs虚拟机、裸机、OpenStack 集群以及其他基础应用平台。其核心优势在于能将应用程序及其依赖项打包成独立容器。以 DeepSeek 部署为例借助 Docker可确保 DeepSeek-R1 在不同环境下拥有一致的运行状态。无论是开发、测试还是生产环境只要安装了 Docker就能够运行相同的 DeepSeek-R1 容器有效规避因环境差异引发的兼容性难题极大提升了部署效率与稳定性。docker的安装请参考 Windows安装 WSL2、Ubuntu 、docker上文中基于 WSL2 搭建了 Ubuntu 虚拟环境并在其中完成了 docker 的安装。实际上在 Linux 系统下安装 docker 的流程与之相似大家只需依据自己的 Linux 发行版按照相应的官方文档或指南进行操作即可。安装成功如下图6Open WebUI 安装Open WebUI 作为一款开源的、功能强大的大模型 WebUI 工具能为我们提供专业级的对话平台不仅可以让我们轻松对接 DeepSeek-R1还支持图形化界面操作极大地提升使用的便捷性和灵活性。Open WebUI官网GPU 版本 如果您想使用 GPU 加速请运行docker run-d-p 3000:8080--gpusall-v ollama:/root/.ollama-vopen-webui:/app/backend/data--nameopen-webui--restart always ghcr.io/open-webui/open-webui:ollamaCPU 版本 如果您的设备没有 GPU请运行docker run-d-p 3000:8080-v ollama:/root/.ollama-vopen-webui:/app/backend/data--nameopen-webui--restart always ghcr.io/open-webui/open-webui:ollama在这里我们选择GPU版。选择GPU版前提配置NVIDIA的GPU驱动可在windows powerShell中输入nvidia-smi查看详细情况没有合适显卡的选择cpu版本注意wsl2和windows共享一个nvidia驱动但是不包含容器工具包。所以windows安装nvidia驱动ubuntu安装 NVIDIA Container Toolkit 否则会出现错误Error responsefromdaemon: could notselectdevice driver “” with capabilities:[[gpu]].ubuntu安装 NVIDIA Container Toolkit 根据英伟达官方文档直接执行以下内容#在ubuntu中依次执行curl-fsSL https://nvidia.github.io/libnvidia-container/gpgkey|sudo gpg--dearmor-o/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ curl-s-L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list|\ seds#deb https://#deb [signed-by/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g|\ sudotee/etc/apt/sources.list.d/nvidia-container-toolkit.list#更新内核sudo apt-get update#安装nvidia-container-toolkitsudo apt-get install-y nvidia-container-toolkit##配置 runtime 生成 CDI# 配置docker runtimesudo nvidia-ctk runtime configure--runtimedocker# 生成CDI文件sudo mkdir-p/etc/cdi sudo nvidia-ctk cdi generate--output/etc/cdi/nvidia.yaml# 重启dockersudo systemctl restart docker安装成功如下图最后ubuntu系统强制指定为独显# 在~/.bashrc文件最下方中添加一下内容 重启生效export MESA_D3D12_DEFAULT_ADAPTER_NAMENVIDIA#获取权限sudo-i#停止之前测试时的 ollama 服务 否则11434端口冲突systemctl stop ollama# 检查11434端口是否占用lsof-i:11434#启动容器 open-webuidocker run-d-p 3000:8080--gpusall-v ollama:/root/.ollama-vopen-webui:/app/backend/data--nameopen-webui--restart always ghcr.io/open-webui/open-webui:ollama#启动 docker 容器中运行 ollamadocker run-d--gpusall-v ollama:/root/.ollama-p 11434:11434--name ollama ollama/ollama#查看容器列表dockerps看到容器已经成功启动如下图访问 http://127.0.0.1:3000/首次访问需要注册一个账号设置ollama api地址最终效果如下图查看任务管理器gpu已经参与工作反复测试发现磁盘读写很高成了响应瓶颈 建议大家使用SSD