对于个人开发者或尝鲜者而言,本地想要部署 DeepSeek 有很多种方案,但是一旦涉及到企业级部署,则步骤将会繁琐很多。
比如我们的第一步就必要先根据实际业务场景评估出我们到底必要部署什么规格的模子,以及我们所要部署的模子,到底必要多少服务器资源来进行承接,也就是资源预估先行。
预估完我们的服务器资源以后,还必要评估我们的业务场景是否必要二次开发模子。
假如只是简单的微调模子就可以符合我们的业务需求,那么利用Ollama、LM Studio、GTP4All 或许就可以满意我们的诉求。
但是假如必要对模子进行定制化开发,则必要考虑进行模子的原生部署。
以是本篇文章主要解决四个问题:
- 怎样公道评估我们的服务器资源
- Ollama 部署指定版本的 DeepSeek
- 原生部署 DeepSeek
- 搭建 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 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 工具有很多:
- ChatBox 客户端(图形化界面)支持 Web 网页,也支持本地客户端。
- AnythingLLM 客户端(图形化界面)
- Open WebUI 客户端(图形化界面) 支持 Web 网页,雷同 ChatGPT。
- Cherry Studio 客户端(图形化界面)
- 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_config
- def 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快速开发平台_低代码开发平台_零代码开发平台_流程筹划器_表单引擎_工作流引擎_软件架构
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |