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

DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地

对于个人开发者或尝鲜者而言,本地想要部署 DeepSeek 有很多种方案,但是一旦涉及到企业级部署,则步骤将会繁琐很多。

比如我们的第一步就需要先根据实际业务场景评估出我们到底需要部署什么规格的模型,以及我们所要部署的模型,到底需要多少服务器资源来进行承接,也就是资源预估先行。

预估完我们的服务器资源以后,还需要评估我们的业务场景是否需要二次开发模型。

如果只是简单的微调模型就可以符合我们的业务需求,那么使用Ollama、LM Studio、GTP4All 或许就可以满足我们的诉求。

但是如果需要对模型进行定制化开发,则需要考虑进行模型的原生部署。

所以本篇文章主要解决四个问题:

  1. 如何合理评估我们的服务器资源

  2. Ollama 部署指定版本的 DeepSeek

  3. 原生部署 DeepSeek

  4. 搭建 Dify 构建企业内的私有知识库、工作流

评估服务器资源

评估服务资源前我们需要先考虑将要部署的模型参数量、模型的序列长度、批次大小和量化类型。

模型参数量

模型参数量:就是该模型神经网络的输入权重和输出阈值的总和,模型参数量的大小,直接影响到模型智能化程度的高低,模型参数量越高耗费的服务器资源越多,反之亦然。

模型序列长度

那么在我们可以确认了模型的参数规模后,就需要根据业务场景评估该模型的序列长度。

序列长度是该模型一次能处理的最大 Token 数,针对 QA 问答的模型,你可以理解为你每次问模型问题时可以输入的最大Token限制,如果用户的问题超出了这个长度,则用户的问题可能会被截断或者被分为多个部分进行分别处理。

模型量化类型

而模型的量化类型,则是该模型的参数精度,我们在之前的模型原理中提到过,训练好的模型实际存储的就是一堆参数值,而这些参数值本身就是浮点数,所以量化类型的值越大则模型的精度越准确,智能化程度越高。

服务器资源计算

了解了上述的基本概念后,你可能会觉得我依然无法评估模型到底应该占用多少服务器资源呀?怎么办?

呐,不要急。

关于具体的参数映射到底应该配置什么样的服务器资源,有网友已经做了一个配置计算器工具。

你只需要根据上面的概念选择自己的模型规模,便会自动计算出所需要的服务器资源。

Ollama 部署 DeepSeek


Ollama 是本地运行大模型的一款工具,支持在 Mac、Linux、Windows 上下载并运行对应的模型。

Ollama 安装

# MacOS、Windows 用户直接访问Ollama官网https://ollama.com/download 下载对应的安装包直接安装即可# Linux安装
curl -fsSL https://ollama.com/install.sh | sudo bash
sudo usermod -aG ollama $USER  # 添加用户权限
sudo systemctl start ollama    # 启动服务

Ollama安装完成后,在对应的命令行输入:

ollama -v

此时输出Ollama version is 0.5.7,则表示安装成功。

DeepSeek模型安装

Ollama 安装成功后则访问 Ollama 的官网查找我们要安装的模型

1、访问 Ollama 官网

2、选择适合当前机器配置的模型参数,然后拷贝对应的执行命令即可

3、命令行终端直接执行对应的命令

ollama run deepseek-r1:7b
# 执行后
pulling manifest
pulling 96c415656d37... 100% ▕██████████████▏ 4.7 GB
pulling 369ca498f347... 100% ▕██████████████▏ 387 B
pulling 6e4c38e1172f... 100% ▕██████████████▏ 1.1 KB
pulling f4d24e9138dd... 100% ▕██████████████▏ 148 B
pulling 40fb844194b2... 100% ▕██████████████▏ 487 B
verifying sha256 digest
writing manifest
success
> > > Send a message (/? for help)
> > > `
#当看到上述提示,即可开始模型对话,此时我发送一个问题:你是谁
>>> 你是谁
<think>
</think>
您好!我是由中国的深度求索(DeepSeek)公司开发的智能助手DeepSeek-R1。如您有任何任何问题,我会尽我所能为您提供帮助。
>>>

恭喜!出现上述的对话内容,表示当前 DeepSeek 已经在你本地可以正常运行了。

nomic-embed-text模型安装

此时我们需要另外再部署一个新的模型,nomic-embed-text,这是一个文本向量化的模型,主要是后续基于 Dify 做向量化检索时使用。

ollama pull nomic-embed-text
#执行后
pulling manifest 
pulling 970aa74c0a90... 100% ▕█████████ 274 MB                         
pulling c71d239df917... 100%  █████████ 11 KB                         
pulling ce4a164fc046... 100%  █████████ 17 B                         
pulling 31df23ea7daa... 100%  █████████ 420 B                         
verifying sha256 digest 
writing manifest 
#看到该提示表示安装成功
success 

部署图形化客户端

有些同学在部署完 DeepSeek 后就想直接找个 UI 工具和 DeepSeek 聊天了,而不是一直在对应的命令行工具中聊天。

此时我们直接部署一套 UI 工具,连接我们的 DeepSeek 模型即可。

可以连接 DeepSeep 模型的 UI 工具有很多:

  1. ChatBox 客户端(图形化界面)支持 Web 网页,也支持本地客户端。

  2. AnythingLLM 客户端(图形化界面)

  3. Open WebUI 客户端(图形化界面) 支持 Web 网页,类似 ChatGPT。

  4. Cherry Studio 客户端(图形化界面)

  5. Page Assist 客户端(浏览器扩展)支持「联网搜索」

此时我们以 ChatBox 为例,直接访问对应的官网下载对应的客户端即可

下载完成后我们在 ChatBox 的设置中填写 Ollama API 的地址和对应的模型名称,然后保存即可。

然后我们直接打开一个新的对话框,选择要运行的模型即可开始对话。

原生部署 DeepSeek

原生部署 DeepSeek 则需要参考官方所提供的部署方式进行部署

上述提到DeepSeek可以支持SGLang、LMDeploy、TensorRT-LLM、vLLM框架进行部署。

此处我们使用 LMDeploy 来部署 DeepSeek

ppqq LMDeploy 是一个用于大型语言模型(LLMs)和视觉-语言模型(VLMs)压缩、部署和服务的 Python 库。 其核心推理引擎包括 TurboMind 引擎和 PyTorch 引擎。前者由 C++ 和 CUDA 开发,致力于推理性能的优化,而后者纯 Python 开发,旨在降低开发者的门槛。

想要使用 LMDeploy 的前提是需要先使用 conda 或者 pip 安装对应的python 库依赖才行。

conda create -n lmdeploy python=3.8 -y
conda activate lmdeploy
pip install lmdeploy

关于LMDeploy具体的安装方式也可以直接参考安装文档

编写运行代码

from lmdeploy import pipeline, TurbomindEngineConfig# 模型路径,可以是以下几种选项之一:
# 1. 本地目录路径,指向一个turbomind模型
# 2. lmdeploy-quantized模型的model_id
# 3. 存放在模型仓库中的模型的model_id
model = 'deepseek-ai/DeepSeek-R1-Distill-Qwen-7B'# Turbomind引擎配置,用于设置模型的后端参数
backend_config = TurbomindEngineConfig(cache_max_entry_count=0.2,  # 缓存最大条目数max_context_token_num=20544,  # 最大上下文token数量session_len=20544  # 会话长度
)# 生成配置,用于设置生成文本的参数
gen_config = GenerationConfig(top_p=0.95,  # 采样阈值temperature=0.6,  # 温度参数,影响生成的多样性max_new_tokens=8192,  # 最大新生成token数量stop_token_ids=[151329, 151336, 151338],  # 停止token的ID列表do_sample=True  # 启用采样
)# DeepSeekAI服务类
class DeepSeekAiServicer:def __init__(self, model: str, backend_config: TurbomindEngineConfig, gen_config: GenerationConfig):# 初始化服务,加载模型和配置self.llm = pipeline(model, backend_config=backend_config)self.gen_config = gen_configdef chat(self, content):# 根据DeepSeek官方推荐,每个提示需要以<think>\n结尾# 如果是数学推理内容,建议包含以下(中英文):# 请逐步推理,并将最终答案放在\boxed{}中。prompts = [{"role": "user","content": "生活的意义是什么?<think>\n"}]# 响应示例:# "<think> 生活的意义是快乐。 </think> 我认为生活的意义是快乐。"response = self.llm(prompts, gen_config=self.gen_config)return response

将上述代码直接在 python 环境中运行便可以直接启动我们的 DeepSeek 模型。

由于我们采用 LMDeploy 代码来部署模型,因此我们获得了更大的调整灵活性。我们能够针对内存管理、并发处理和负载均衡等多个方面进行细致的优化。此外,LMDeploy 允许我们集成其他 Python 库,以便对模型进行微调并添加自定义层,这些功能进一步提升了我们的定制化能力,确保了模型部署的灵活性和效率。

部署 Dify

Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。

由于 Dify 内置了构建 LLM 应用所需的关键技术栈,包括对数百个模型的支持、直观的 Prompt 编排界面、高质量的 RAG 引擎、稳健的 Agent 框架、灵活的流程编排,并同时提供了一套易用的界面和 API。这为开发者节省了许多重复造轮子的时间,使其可以专注在创新和业务需求上。

简单来说如果你想使用模型构建自己的 RAG 知识引擎或者流程编排,那你少不写一堆LangChain的代码,但是 Dify 将这块业务进行了封装,你只需要在可视化的页面上操作,便可以实现相同的效果,快速的构建出自己的 AI 应用。

运行 Dify

Dify 的部署需要我们本地先支持 Docker 和 Git 的依赖环境,然后我们在对应的终端直接执行下面的代码,便可以直接运行 Dify

#克隆 Dify 源代码至本地环境。
git clone https://github.com/langgenius/dify.git#进入 Dify 源代码的 Docker 目录
cd dify/docker#复制环境配置文件
cp .env.example .env#启动 Docker 容器
docker-compose up -d

添加模型

Dify 启动成功后,我们直接浏览器访问:http://localhost

此时进入到 Dify 的主页面会提示新建账号密码,账号密码新建完成后,在右上角admin 处点击设置,然后新增我们的本地模型配置。

此处添加 LLM 模型为deepseek-r1:7b,基础 URL 为:http://host.docker.internal:11434

添加完 LLM 模型后,我们再新增一个Text Embedding 模型,还记得最开始我们使用 ollama 还安装了一套nomic-embed-text模型吗?对的,就是在这里使用的。

两个模型都添加完以后,就可以在模型列表中看到我们已经添加的模型信息了

构建知识库

在对应的知识库模块新建知识库,并上传我们的私有数据

文本分段与清洗中选择使用我们的nomic-embed-text模型进行清洗

然后我么直接保存为知识库即可

新建聊天助手

在机器人的上下文中选择我们刚刚新建的知识库:“数字生命贾克斯”

当我们问他一些知识库中独有的内容时,他便会根据知识库中独有的内容,来给与对应的回复。

我们可以点击发布将该机器人单独给发布出去,此时其他人也可以使用你这个机器人来获取知识库中的信息了。

工作流

Dify 中还有一个非常杀手锏的应用,那就是工作流!

我一直认为 Dify 中最有价值的一个模块就是工作流模块,合理构建自己的工作流,就好比让一个只有大脑能力的模型,瞬间具备了手的能力。

原本只能通过问答来交互的模型,瞬间具备了和外界交互的能力。

通过工作流,Dify 可以自动执行一系列复杂任务,比如数据分析、报告生成、资源调度甚至是跨平台操作。

这些任务不再是孤立的指令,而是形成了一个有机的整体,每个步骤都紧密相连,协同工作,从而极大地提升了工作效率。

文章转载自:陈咬金

原文链接:InfoQ 写作社区-专业技术博客社区

体验地址:引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构

相关文章:

DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地

对于个人开发者或尝鲜者而言&#xff0c;本地想要部署 DeepSeek 有很多种方案&#xff0c;但是一旦涉及到企业级部署&#xff0c;则步骤将会繁琐很多。 比如我们的第一步就需要先根据实际业务场景评估出我们到底需要部署什么规格的模型&#xff0c;以及我们所要部署的模型&…...

自制简单的图片查看器(python)

图片格式&#xff1a;支持常见的图片格式&#xff08;JPG、PNG、BMP、GIF&#xff09;。 import os import tkinter as tk from tkinter import filedialog, messagebox from PIL import Image, ImageTkclass ImageViewer:def __init__(self, root):self.root rootself.root.…...

RD-搭建测试环境

测试团队职责 环境验证&#xff1a;确保开发部署的测试环境可访问&#xff0c;页面/接口无阻塞问题&#xff1b; 配置检查**&#xff1a;核对数据库连接、接口域名、HT证书等关键配置&#xff1b; 数据准备**&#xff1a;导入基线数据&#xff0c;隔离测试与生产数据&#xff1…...

从零搭建微服务项目Base(第5章——SpringBoot项目LogBack日志配置+Feign使用)

前言&#xff1a; 本章主要在原有项目上添加了日志配置&#xff0c;对SpringBoot默认的logback的配置进行了自定义修改&#xff0c;并详细阐述了xml文件配置要点&#xff08;只对日志配置感兴趣的小伙伴可选择直接跳到第三节&#xff09;&#xff0c;并使用Feign代替原有RestT…...

【深度学习】使用飞桨paddle实现波士顿房价预测任务

使用飞桨实现波士顿房价预测任务 由于开始学习深度学习&#xff0c;因此每次开始都熟悉一下深度学习模型的基本步骤&#xff1a; 在之前的学习中&#xff0c;我们学习了使用Python和NumPy实现波士顿房价预测任务的方法&#xff0c;本章我们将尝试使用飞桨paddle重写房价预测任…...

钉钉多维表:数据管理与协作的新篇章

在当今数字化时代,数据的高效管理和团队协作已成为企业竞争力的关键因素之一。钉钉多维表,作为一款基于钉钉平台的数据协作管理工具,正以其独特的功能和优势,引领着数据管理与协作的新潮流。本文将为您全面解析钉钉多维表的定义、特点、功能亮点、应用场景以及如何使用,让您轻松…...

高级推理的多样化推理与验证

25年2月来自波士顿大学、NotBadMath.AI、谷歌、哥伦比亚大学、MIT、Intuit公司和斯坦福大学的论文“Diverse Inference and Verification for Advanced Reasoning”。 OpenAI o1、o3 和 DeepSeek R1 等推理 LLM 在数学和编码方面取得重大进展&#xff0c;但仍发现 IMO 组合问题…...

深入理解 MySQL 8 C++ 源码:SELECT MOD(MONTH(NOW()), 2) 的函数执行过程

MySQL 作为最流行的关系型数据库之一&#xff0c;其内部实现机制一直是开发者探索的热点。本文将以一条简单的 SQL 查询 SELECT MOD(MONTH(NOW()), 2) 为例&#xff0c;深入分析 MySQL 8 源码中内置函数 MOD、MONTH 和 NOW 的执行过程&#xff0c;揭示其底层实现逻辑。 一、SQL…...

【算法系列】leetcode1419 数青蛙 --模拟

一、题目 二、思路 模拟⻘蛙的叫声。 当遇到 r o a k 这四个字符的时候&#xff0c;我们要去看看每⼀个字符对应的前驱字符&#xff0c;有没有⻘蛙叫出来。如果有⻘蛙叫出来&#xff0c;那就让这个⻘蛙接下来喊出来这个字符&#xff1b;如果没有则为异常字符串&#xff0c;直接…...

蓝桥杯 Java B 组之背包问题、最长递增子序列(LIS)

Day 4&#xff1a;背包问题、最长递增子序列&#xff08;LIS&#xff09; &#x1f4d6; 一、动态规划&#xff08;Dynamic Programming&#xff09;简介 动态规划是一种通过将复杂问题分解成更小的子问题来解决问题的算法设计思想。它主要用于解决具有最优子结构和重叠子问题…...

Git如何将一个分支的内容同步到另一个分支

在 Git 中&#xff0c;可以通过多种方法将一个分支的内容同步到另一个分支。以下是几种常用的方法&#xff1a; 1. 使用 merge 命令 这是最常见的方法&#xff0c;将一个分支的更改合并到另一个分支。 # 切换到目标分支 git checkout target-branch# 合并源分支的内容 git m…...

[C#]C# winform部署yolov12目标检测的onnx模型

yolov12官方框架&#xff1a;github.com/sunsmarterjie/yolov12 【测试环境】 vs2019 netframework4.7.2 opencvsharp4.8.0 onnxruntime1.16.3 【效果展示】 【调用代码】 using System; using System.Collections.Generic; using System.ComponentModel; using System.…...

51c大模型~合集69

我自己的原文哦~ https://blog.51cto.com/whaosoft/12221979 #7项基于SAM万物分割模型研究工作 1、CC-SAM: SAM with Cross-feature Attention and Context for Ultrasound Image Segmentation #ECCV2024 #SAM #图像分割 #医学图像 Segment Anything Model (SAM) 在自…...

2025寒假周报4

2025寒假天梯训练7-CSDN博客 眨眼间寒假训练就告一段落了&#xff0c;准备回校继续战斗了。这周练了3场OI赛制的篮球杯&#xff0c;感觉非常糟糕&#xff0c;不像天梯赛&#xff0c;天梯赛打起来非常舒适顺畅&#xff0c;一直都不喜欢OI赛制&#xff0c;打着非常不稳定..还需要…...

自学Java-AI结合GUI开发一个石头迷阵的游戏

自学Java-AI结合GUI开发一个石头迷阵的游戏 准备环节1、创建石头迷阵的界面2、打乱顺序3、控制上下左右移动4、判断是否通关5、统计移动步骤&#xff0c;重启游戏6、拓展问题 准备环节 技术&#xff1a; 1、GUI界面编程 2、二维数组 3、程序流程控制 4、面向对象编程 ∙ \bulle…...

buuctf-[极客大挑战 2019]Knife题解

一个很简单的web题&#xff0c;进入界面 网页名还加白给的shell&#xff0c;并且给的提示也很明显&#xff0c;给了一个一句话木马再加上菜刀&#xff0c;很怀疑是一个webshell题&#xff0c;那么直接打开蚁剑测试连接拿shell 用提示的一句话木马的密码&#xff0c;测试链接发现…...

Spring MVC 对象转换器:初级开发者入门指南

Spring MVC 对象转换器&#xff1a;初级开发者入门指南 为什么需要对象转换器&#xff1f; 在 Web 应用中&#xff0c;我们经常需要处理不同类型的对象。例如&#xff1a;前端数据到后端对象 &#xff1a;用户通过表单提交的数据通常是HttpServletRequest 对象&#xff0c;我们…...

语音直播交友app出海:语音直播交友系统软件源码搭建国际化发展技术层面分析

随着移动互联网的普及和全球社交需求的增长以及国内如火如荼的Ai大模型引起的全球发展热潮&#xff0c;语音直播软件出海成为了具有巨大发展潜力的业务领域。以下是一些关键的技术方向&#xff0c;将为语音直播软件在国际市场的成功推广及搭建合作奠定基础。 通信技术 实时语音…...

Web Scraper,强大的浏览器爬虫插件!

Web Scraper是一款功能丰富的浏览器扩展爬虫工具&#xff0c;有着直观的图形界面&#xff0c;无需编写代码即可自定义数据抓取规则&#xff0c;高效地从网页中提取结构化数据&#xff0c;而且它支持灵活的数据导出选项&#xff0c;广泛应用于电商监控、内容聚合、市场调研等多元…...

EasyRTC:基于WebRTC与P2P技术,开启智能硬件音视频交互的全新时代

在数字化浪潮的席卷下&#xff0c;智能硬件已成为我们日常生活的重要组成部分&#xff0c;从智能家居到智能穿戴&#xff0c;从工业物联网到远程协作&#xff0c;设备间的互联互通已成为不可或缺的趋势。然而&#xff0c;高效、低延迟且稳定的音视频交互一直是智能硬件领域亟待…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...