GPUStack 是一個開源的大模型即服務平臺,可以高效整合並利用 Nvidia、Apple Metal、華為昇騰和摩爾執行緒等各種異構的 GPU/NPU 資源,提供本地私有部署大模型解決方案。
GPUStack 可以支援 RAG 系統中所需要的三種關鍵模型:Chat 對話模型(大語言模型)、Embedding 文字嵌入模型和 Rerank 重排序模型三件套,只需要非常簡單的傻瓜化操作就能部署 RAG 系統所需要的本地私有模型。
下面介紹如何安裝 GPUStack 和 Dify,並使用 Dify 來對接 GPUStack 部署的對話模型、Embedding 模型和 Reranker 模型。
安裝 GPUStack
在 Linux 或 macOS 上透過以下命令線上安裝,在安裝過程中需要輸入 sudo 密碼:
curl -sfL https://get.gpustack.ai | sh -
如果環境連線不了 GitHub,無法下載一些二進位制檔案,使用以下命令安裝,用 --tools-download-base-url
引數指定從騰訊雲物件儲存下載:
curl -sfL https://get.gpustack.ai | sh - --tools-download-base-url "https://gpustack-1303613262.cos.ap-guangzhou.myqcloud.com"
在 Windows 上以管理員身份執行 Powershell,透過以下命令線上安裝:
Invoke-Expression (Invoke-WebRequest -Uri "https://get.gpustack.ai" -UseBasicParsing).Content
如果環境連線不了 GitHub,無法下載一些二進位制檔案,使用以下命令安裝,用 --tools-download-base-url
引數指定從騰訊雲物件儲存下載:
Invoke-Expression "& { $((Invoke-WebRequest -Uri 'https://get.gpustack.ai' -UseBasicParsing).Content) } --tools-download-base-url 'https://gpustack-1303613262.cos.ap-guangzhou.myqcloud.com'"
當看到以下輸出時,說明已經成功部署並啟動了 GPUStack:
[INFO] Install complete.
GPUStack UI is available at http://localhost.
Default username is 'admin'.
To get the default password, run 'cat /var/lib/gpustack/initial_admin_password'.
CLI "gpustack" is available from the command line. (You may need to open a new terminal or re-login for the PATH changes to take effect.)
接下來按照指令碼輸出的指引,拿到登入 GPUStack 的初始密碼,執行以下命令:
在 Linux 或 macOS 上:
cat /var/lib/gpustack/initial_admin_password
在 Windows 上:
Get-Content -Path (Join-Path -Path $env:APPDATA -ChildPath "gpustack\initial_admin_password") -Raw
在瀏覽器訪問 GPUStack UI,使用者名稱 admin,密碼為上面獲得的初始密碼。
重新設定密碼後,進入 GPUStack:
納管 GPU 資源
GPUStack 支援納管 Linux、Windows 和 macOS 裝置的 GPU 資源,透過以下步驟來納管這些 GPU 資源。
其他節點需要透過認證 Token 加入 GPUStack 叢集,在 GPUStack Server 節點執行以下命令獲取 Token:
在 Linux 或 macOS 上:
cat /var/lib/gpustack/token
在 Windows 上:
Get-Content -Path (Join-Path -Path $env:APPDATA -ChildPath "gpustack\token") -Raw
拿到 Token 後,在其他節點上執行以下命令新增 Worker 到 GPUStack,納管這些節點的 GPU(將其中的 http://YOUR_IP_ADDRESS 替換為你的 GPUStack 訪問地址,將 YOUR_TOKEN 替換為用於新增 Worker 的認證 Token):
在 Linux 或 macOS 上:
curl -sfL https://get.gpustack.ai | sh - --server-url http://YOUR_IP_ADDRESS --token YOUR_TOKEN --tools-download-base-url "https://gpustack-1303613262.cos.ap-guangzhou.myqcloud.com"
在 Windows 上:
Invoke-Expression "& { $((Invoke-WebRequest -Uri "https://get.gpustack.ai" -UseBasicParsing).Content) } --server-url http://YOUR_IP_ADDRESS --token YOUR_TOKEN --tools-download-base-url 'https://gpustack-1303613262.cos.ap-guangzhou.myqcloud.com'"
透過以上步驟,我們已經建立了一個 GPUStack 環境並納管了多個 GPU 節點,接下來可以使用這些 GPU 資源來部署私有大模型。
部署私有大模型
訪問 GPUStack,在 Models 選單中部署模型。GPUStack 支援從 HuggingFace、Ollama Library、ModelScope 和私有模型倉庫部署模型,國內網路建議從 ModelScope 部署。
GPUStack 支援 vLLM 和 llama-box 推理後端,vLLM 專門針對生產推理進行了最佳化,在併發和效能方面更能滿足生產需求,但 vLLM 只支援 Linux 系統。llama-box 則是一個靈活、相容多平臺的推理引擎,是 llama.cpp 的最佳化版本,對效能和穩定性進行了針對性的最佳化,支援 Linux、Windows 和 macOS 系統,不止支援各種 GPU 環境,也支援在 CPU 環境執行大模型,更適合需要多平臺相容性的場景。
GPUStack 會在部署模型時自動根據模型檔案的型別選擇適當的推理後端,如果模型為 GGUF 格式,GPUStack 會使用 llama-box 作為後端執行模型服務,如果為非 GGUF 格式, GPUStack 會使用 vLLM 作為後端執行模型服務。
部署 Dify 對接所需要的文字對話模型、Embedding 文字嵌入模型、Reranker 模型,記得部署時勾選 GGUF 格式:
- Qwen/Qwen2.5-7B-Instruct-GGUF
- gpustack/bge-m3-GGUF
- gpustack/bge-reranker-v2-m3-GGUF
GPUStack 還支援 VLM 多模態模型,部署 VLM 多模態模型需要使用 vLLM 推理後端:
- Qwen2-VL-2B-Instruct
模型部署好後,RAG 系統或其他生成式 AI 應用可以透過 GPUStack 提供的 OpenAI / Jina 相容 API 對接 GPUStack 部署的模型,接下來使用 Dify 來對接 GPUStack 部署的模型。
Dify 整合 GPUStack 模型
安裝 Dify
採用 Docker 方式執行 Dify,需要準備好 Docker 環境,注意避免 Dify 和 GPUStack 的 80 埠衝突,使用其他主機或修改埠。執行以下命令安裝 Dify:
git clone -b 0.11.1 https://github.com/langgenius/dify.git
cd dify/docker/
cp .env.example .env
docker compose up -d
訪問 Dify 的 UI 介面 http://localhost,初始化管理員賬戶並登入。
整合 GPUStack 模型
首先新增 Chat 對話模型,在 Dify 右上角選擇“設定-模型供應商”,在列表中找到 GPUStack 型別,選擇新增模型:
填寫 GPUStack 上部署的 LLM 模型名稱(例如 qwen2.5-7b-instruct)、GPUStack 的訪問地址(例如 http://192.168.0.111)和生成的 API Key,還有模型設定的上下文長度 8192 和 max tokens 2048:
接下來新增 Embedding 模型,在模型供應商的最上方繼續選擇 GPUStack 型別,選擇新增模型:
新增 Text Embedding 型別的模型,填寫 GPUStack 上部署的 Embedding 模型名稱(例如 bge-m3)、GPUStack 的訪問地址(例如 http://192.168.0.111)和生成的 API Key,還有模型設定的上下文長度 8192:
接下來新增 Rerank 模型,繼續選擇 GPUStack 型別,選擇新增模型,新增 Rerank 型別的模型,填寫 GPUStack 上部署的 Rerank 模型名稱(例如 bge-reranker-v2-m3)、GPUStack 的訪問地址(例如 http://192.168.0.111)和生成的 API Key,還有模型設定的上下文長度 8192:
新增後重新重新整理,然後在模型供應商確認系統模型配置為上面新增的三個模型:
在 RAG 系統使用模型
選擇 Dfiy 的知識庫,選擇建立知識庫,匯入一個文字檔案,確認 Embedding 模型選項,檢索設定使用推薦的混合檢索,並開啟 Rerank 模型:
儲存,開始將文件進行向量化過程,向量化完成後,知識庫即可以使用了。
可以透過召回測試確認知識庫的召回效果,Rerank 模型將進行精排以召回更有相關性的文件,以達到更好的召回效果:
接下來在聊天室建立一個聊天助手應用:
在上下文中新增相關知識庫即可使用,此時 Chat 模型、Embedding 模型和 Reranker 模型將共同為 RAG 應用提供支撐,Embedding 模型負責向量化、 Reranker 模型負責對召回的內容進行精排,Chat 模型負責根據問題和召回的上下文內容進行回答:
以上為使用 Dify 對接 GPUStack 模型的示例,其他 RAG 系統也可以透過 OpenAI / Jina 相容 API 對接 GPUStack,即可利用 GPUStack 平臺部署的各種 Chat 模型、Embedding 模型和 Reranker 模型來支撐 RAG 系統。
以下為 GPUStack 功能的簡單介紹。
GPUStack 功能介紹
-
異構 GPU 支援:支援異構 GPU 資源,當前支援 Nvidia、Apple Metal、華為昇騰和摩爾執行緒等各種型別的 GPU/NPU
-
多推理後端支援:支援 vLLM 和 llama-box (llama.cpp) 推理後端,兼顧生產效能需求與多平臺相容性需求
-
多平臺支援:支援 Linux、Windows 和 macOS 平臺,覆蓋 amd64 和 arm64 架構
-
多模型型別支援:支援 LLM 文字模型、VLM 多模態模型、Embedding 文字嵌入模型 和 Reranker 重排序模型等各種型別的模型
-
多模型倉庫支援:支援從 HuggingFace、Ollama Library、ModelScope 和私有模型倉庫部署模型
-
豐富的自動/手動排程策略:支援緊湊排程、分散排程、指定 Worker 標籤排程、指定 GPU 排程等各種排程策略
-
分散式推理:如果單個 GPU 無法執行較大的模型,可以透過 GPUStack 的分散式推理功能,自動將模型執行在跨主機的多個 GPU 上
-
CPU 推理:如果沒有 GPU 或 GPU 資源不足,GPUStack 可以用 CPU 資源來執行大模型,支援 GPU&CPU 混合推理和純 CPU 推理兩種 CPU 推理模式
-
多模型對比:GPUStack 在 Playground 中提供了多模型對比檢視,可以同時對比多個模型的問答內容和效能資料,以評估不同模型、不同權重、不同 Prompt 引數、不同量化、不同 GPU、不同推理後端的模型 Serving 效果
-
GPU 和 LLM 觀測指標:提供全面的效能、利用率、狀態監控和使用資料指標,以評估 GPU 和 LLM 的利用情況
GPUStack 提供了建設一個私有大模型即服務平臺所需要的各項企業級功能,作為一個開源專案,只需要非常簡單的安裝設定,就可以開箱即用地構建企業私有大模型即服務平臺。
總結
以上為安裝 GPUStack 和使用 Dify 整合 GPUStack 模型的配置教程,專案的開源地址為:https://github.com/gpustack/gpustack。
GPUStack 作為一個低門檻、易上手、開箱即用的開源平臺,可以幫助企業快速整合和利用異構 GPU 資源,在短時間內快速搭建起一個企業級的私有大模型即服務平臺。
對 GPUStack 感興趣的或者在使用過程中遇到問題,可以新增 GPUStack 微信小助手(微訊號:GPUStack)入群交流。
如果覺得寫得不錯,歡迎點贊、轉發、關注。