RAG三件套執行的新選擇 - GPUStack

Seal软件發表於2024-11-12

GPUStack 是一個開源的大模型即服務平臺,可以高效整合並利用 Nvidia、Apple Metal、華為昇騰和摩爾執行緒等各種異構的 GPU/NPU 資源,提供本地私有部署大模型解決方案。

GPUStack 可以支援 RAG 系統中所需要的三種關鍵模型:Chat 對話模型(大語言模型)、Embedding 文字嵌入模型和 Rerank 重排序模型三件套,只需要非常簡單的傻瓜化操作就能部署 RAG 系統所需要的本地私有模型。

下面介紹如何安裝 GPUStack 和 Dify,並使用 Dify 來對接 GPUStack 部署的對話模型、Embedding 模型和 Reranker 模型。

安裝 GPUStack

LinuxmacOS 上透過以下命令線上安裝,在安裝過程中需要輸入 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 的初始密碼,執行以下命令:

LinuxmacOS 上:

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:

image-20241008113456222

納管 GPU 資源

GPUStack 支援納管 Linux、Windows 和 macOS 裝置的 GPU 資源,透過以下步驟來納管這些 GPU 資源。

其他節點需要透過認證 Token 加入 GPUStack 叢集,在 GPUStack Server 節點執行以下命令獲取 Token:

LinuxmacOS 上:

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):

LinuxmacOS 上:

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 支援 vLLMllama-box 推理後端,vLLM 專門針對生產推理進行了最佳化,在併發和效能方面更能滿足生產需求,但 vLLM 只支援 Linux 系統。llama-box 則是一個靈活、相容多平臺的推理引擎,是 llama.cpp 的最佳化版本,對效能和穩定性進行了針對性的最佳化,支援 Linux、Windows 和 macOS 系統,不止支援各種 GPU 環境,也支援在 CPU 環境執行大模型,更適合需要多平臺相容性的場景。

GPUStack 會在部署模型時自動根據模型檔案的型別選擇適當的推理後端,如果模型為 GGUF 格式,GPUStack 會使用 llama-box 作為後端執行模型服務,如果為非 GGUF 格式, GPUStack 會使用 vLLM 作為後端執行模型服務。

image-20241009155913860

部署 Dify 對接所需要的文字對話模型、Embedding 文字嵌入模型、Reranker 模型,記得部署時勾選 GGUF 格式:

  • Qwen/Qwen2.5-7B-Instruct-GGUF
  • gpustack/bge-m3-GGUF
  • gpustack/bge-reranker-v2-m3-GGUF

image-20241031230152931

image-20241028152623014

GPUStack 還支援 VLM 多模態模型,部署 VLM 多模態模型需要使用 vLLM 推理後端:

  • Qwen2-VL-2B-Instruct

undefinedimage-20241031225703344

image-20241028151759471

模型部署好後,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 型別,選擇新增模型:

image-20241105131147214

填寫 GPUStack 上部署的 LLM 模型名稱(例如 qwen2.5-7b-instruct)、GPUStack 的訪問地址(例如 http://192.168.0.111)和生成的 API Key,還有模型設定的上下文長度 8192 和 max tokens 2048:

image-20241105131512424

接下來新增 Embedding 模型,在模型供應商的最上方繼續選擇 GPUStack 型別,選擇新增模型:

image-20241105132127754

新增 Text Embedding 型別的模型,填寫 GPUStack 上部署的 Embedding 模型名稱(例如 bge-m3)、GPUStack 的訪問地址(例如 http://192.168.0.111)和生成的 API Key,還有模型設定的上下文長度 8192:

image-20241105132452497

接下來新增 Rerank 模型,繼續選擇 GPUStack 型別,選擇新增模型,新增 Rerank 型別的模型,填寫 GPUStack 上部署的 Rerank 模型名稱(例如 bge-reranker-v2-m3)、GPUStack 的訪問地址(例如 http://192.168.0.111)和生成的 API Key,還有模型設定的上下文長度 8192:

image-20241105132653254

新增後重新重新整理,然後在模型供應商確認系統模型配置為上面新增的三個模型:

image-20241105132931356

在 RAG 系統使用模型

選擇 Dfiy 的知識庫,選擇建立知識庫,匯入一個文字檔案,確認 Embedding 模型選項,檢索設定使用推薦的混合檢索,並開啟 Rerank 模型:

image-20241105133101348

儲存,開始將文件進行向量化過程,向量化完成後,知識庫即可以使用了。

image-20241028144413945

可以透過召回測試確認知識庫的召回效果,Rerank 模型將進行精排以召回更有相關性的文件,以達到更好的召回效果:

image-20241105134220857

接下來在聊天室建立一個聊天助手應用:

image-20241025172909629

在上下文中新增相關知識庫即可使用,此時 Chat 模型、Embedding 模型和 Reranker 模型將共同為 RAG 應用提供支撐,Embedding 模型負責向量化、 Reranker 模型負責對召回的內容進行精排,Chat 模型負責根據問題和召回的上下文內容進行回答:

image-20241105135147199

以上為使用 Dify 對接 GPUStack 模型的示例,其他 RAG 系統也可以透過 OpenAI / Jina 相容 API 對接 GPUStack,即可利用 GPUStack 平臺部署的各種 Chat 模型、Embedding 模型和 Reranker 模型來支撐 RAG 系統。

以下為 GPUStack 功能的簡單介紹。

GPUStack 功能介紹

  • 異構 GPU 支援:支援異構 GPU 資源,當前支援 Nvidia、Apple Metal、華為昇騰和摩爾執行緒等各種型別的 GPU/NPU

  • 多推理後端支援:支援 vLLMllama-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)入群交流。

如果覺得寫得不錯,歡迎點贊轉發關注

相關文章