對于個人開發者或嘗鮮者而言,本地想要部署 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 -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 工具有很多:
-
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_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快速開發平臺_低代碼開發平臺_零代碼開發平臺_流程設計器_表單引擎_工作流引擎_軟件架構