GPUStack v0.4:文生圖模型、語音模型、推理引擎版本管理、離線支援和部署本地模型

Seal發表於2024-12-09

GPUStack 是一個專為執行 AI 模型設計的開源 GPU 叢集管理器,致力於支援基於任何品牌的異構 GPU 構建統一管理的算力叢集。無論這些 GPU 執行在 Apple MacWindows PC 還是 Linux 伺服器上,GPUStack 都能將它們納入統一的算力叢集中。管理員可以輕鬆地從 Hugging Face 等流行的模型倉庫中部署 AI 模型,開發人員則能夠透過 OpenAI 相容的 API 訪問這些私有模型服務,就像使用 OpenAI 或 Microsoft Azure 提供的公共模型服務 API 一樣便捷。

隨著越來越多的使用者在 RAG、AI Agents 和其他多樣化場景中應用 GPUStack,使用者需求不斷增加。基於使用者的高優先順序需求,我們推出了功能強大的 GPUStack v0.4 版本

GPUStack v0.4 版本的核心更新包括

  • 新增三種模型型別支援:文生圖模型、Speech-to-Text(STT)語音模型和 Text-to-Speech(TTS)語音模型。
  • 推理引擎版本管理:支援為每個模型固定任意推理引擎版本。
  • 新增 Playground UI:提供 STT、TTS、文生圖、Embedding 和 Rerank 的 Playground 除錯 UI。
  • 離線支援:支援離線安裝、離線容器映象及離線部署本地模型。
  • 擴充套件相容性:進一步擴充套件了對作業系統的支援,包括一些遺留作業系統和國產作業系統。
  • 問題修復與最佳化:針對社群使用者反饋的問題進行了大量改進和增強。

這一版本提升了 GPUStack 的適用性和穩定性,更好地滿足多樣化的使用需求。

有關 GPUStack 的詳細資訊,可以訪問:

GitHub 倉庫地址: https://github.com/gpustack/gpustack

GPUStack 使用者文件: https://docs.gpustack.ai

重點特性介紹

支援文生圖模型

GPUStack 新增了對文生圖模型的支援!在 llama-box 推理引擎中,我們整合了 stable-diffusion.cpp,從而實現對文生圖模型的支援,我們還提供了對 昇騰 NPU摩爾執行緒 GPU 的支援。GPUStack 可以執行在 LinuxmacOSWindows 作業系統上,利用 NVIDIA GPUApple Metal GPU昇騰 NPU摩爾執行緒 GPU 來執行 Stable DiffusionFLUX 等文生圖模型。

image-20241202174850524

image-20241203011213205

此外,我們還提供了經過調優的 All-in-one 文生圖模型,模型列表可檢視:

https://huggingface.co/collections/gpustack/image-672dafeb2fa...

支援語音模型

GPUStack 新增了對語音模型的支援!我們推出了語音模型推理引擎 vox-box [ https://github.com/gpustack/vox-box ],vox-box 是一個支援推理 Text To SpeechSpeech To Text 模型並提供 OpenAI API 的推理引擎,目前對接了 Whisper、FunASR、Bark 和 CosyVoice 後端

  • Text To Speech

image-20241203004237361

image-20241129191428936

  • Speech To Text

image-20241203004946031

image-20241203005006051

透過 vox-box ,GPUStack 可以支援 Whisper、Paraformer、Conformer、SenseVoice 等 Speech To Text 模型和 Bark、CosyVoice 等 Text To Speech 模型,我們將持續擴充套件對各種語音模型的支援,包括最佳化各種語音模型的效果和效能。當前支援的模型列表可檢視:

https://github.com/gpustack/vox-box#supported-models

推理引擎版本管理

AI 領域迭代速度極快,各類新模型層出不窮,為適配這些新模型,推理引擎的更新頻率也隨之提高。然而,新版本的引入並非總能保持穩定,有時會帶來新的 Bug,甚至導致與舊模型不相容。這給模型部署帶來了兩難選擇:升級推理引擎以支援新模型可能影響舊模型的穩定執行,而維持舊版本又難以體驗新模型。

為了解決這一問題,我們設計了一個松耦合的架構,將 GPUStack 與底層推理引擎版本解耦,提供了推理引擎的版本管理能力在部署模型時,可以為每個模型固定任意可用的推理引擎版本,GPUStack 會自動使用相應版本執行模型。這樣一來,既可以同時支援多個推理引擎版本,又能在 GPUStack 升級時保持舊模型的穩定執行。解決了單一推理引擎版本無法同時適配新舊模型的難題,滿足了穩定性與靈活性的雙重需求。

image-20241129193039270

新增 Playground UI

之前 Playground 只支援 Chat 模型的除錯。在新版本中,GPUStack 新增了對文生圖、Speech-to-Text(STT)、Text-to-Speech(TTS)、Embedding 和 Reranker 模型的 Playground UI。使用者在部署模型後,可以透過 Playground 測試模型效果並進行調優。

在測試 Embedding 模型時,Playground 可以提供直觀的視覺化分析。透過對嵌入向量進行 PCA(主成分分析)降維,使用者能夠在降維座標空間中對比多段文字的距離,直觀判斷向量距離和文字相似度。完成調測後,可以透過 View Code 按鈕檢視呼叫模型 API 的程式碼示例。

image-20241202103721182

在測試 Rerank 模型時,Playground 可以提供直觀的重排結果展示。使用者可以輸入 Query 和一組 Documents,模型會根據 Query 的內容對 Documents 進行排序,並返回每個文件的相關性得分。使用者可以透過結果判斷模型對輸入的理解和排序的準確性。完成調測後,可以透過 View Code 按鈕檢視呼叫模型 API 的程式碼示例。

image-20241202104143026

支援從本地路徑部署模型

為了支援離線場景、重複利用使用者已下載的模型檔案以及執行使用者經過微調的本地模型,新版本在部署模型時,除了支援從 Hugging FaceModelScopeOllama Registry 部署模型外,還新增了 Local Path 選項,可直接載入本地路徑中的模型檔案進行部署。

使用者可以透過 huggingface-climodelscope CLI 或其他工具提前下載模型,並將模型檔案上傳到對應的節點。在部署時,選擇 Local Path 選項,並填寫模型檔案的絕對路徑即可部署。注意,使用者需要調整排程選項,將模型固定排程到包含模型檔案的節點。或者需要確保所有節點上均存在該模型檔案,以便模型排程到任何節點都能夠正常載入和執行。

image-20241202101028919

支援離線安裝和執行

GPUStack 現在支援離線安裝和執行,提供了兩種離線安裝方式:Python 原生安裝Docker 安裝

對於 Python 原生安裝,新版本提供了離線安裝所需的指令和詳細文件,使用者可以在沒有網路連線的環境中按照文件進行安裝。

對於 Docker 安裝,GPUStack v0.4 版本提供了多個分發版本的離線容器映象,包括 CUDANPU(CANN)MUSACPU 等。以下是執行命令的示例:

  • CUDA 12( NVIDIA Driver 12.4 以上 )需要配置 NVIDIA Container Runtime
docker run -d --gpus all -p 80:80 --ipc=host \
    -v gpustack-data:/var/lib/gpustack gpustack/gpustack:latest
  • 昇騰 NPU( NPU Driver 24.1 rc2 以上 )需要配置 Ascend Container Runtime
docker run -d -p 80:80 --ipc=host \
    -e ASCEND_VISIBLE_DEVICES=0-7 \
    -v gpustack-data:/var/lib/gpustack gpustack/gpustack:latest-npu
  • 摩爾執行緒 MUSA ( rc3.10 以上)需要配置 MT Container Toolkits
docker run -d -p 80:80 --ipc=host \
    -v gpustack-data:/var/lib/gpustack gpustack/gpustack:latest-musa
  • CPU ( AVX2 或 NEON )
docker run -d -p 80:80 -v gpustack-data:/var/lib/gpustack gpustack/gpustack:latest-cpu

具體的配置細節,請參考 GPUStack 以及各硬體廠商的官方文件,以確保正確的配置和相容性。

手動控制 GGUF 模型分配的 GPU 數量和多卡切分比例

GPUStack 提供了模型自動化排程的功能,能夠根據排程演算法自動決定為模型分配多少塊 GPU 卡。在之前的版本中,部署 GGUF 模型時,排程規則會自動根據當前可用的 GPU 數量以及每塊 GPU 的剩餘視訊記憶體來計算和分配 GPU 資源。

為了應對一些 GPUStack 無法覆蓋的使用場景,在 v0.4 版本中,我們新增了支援手動分配 GPU 數量和配置模型在多張 GPU 卡上的切分比例的功能。使用者可以透過 --tensor-split 引數來手動指定 GPU 數量和切分比例,從而實現更精細化的控制和動態切分:

  • --tensor-split=1,1 :分配 2 卡,按 1:1 的比例切分模型
  • --tensor-split=2,1,1 :分配 3 卡,按 2:1:1 的比例切分模型
  • --tensor-split=10,16,20,20 :分配 4 卡,按每塊卡的剩餘視訊記憶體大小 10:16:20:20 的比例切分模型

image-20241129153322116

最佳化 GGUF 模型資源分配和排程

GPUStack v0.4 版本對 gguf-parser 進行了最佳化,能夠更準確地計算模型的資源需求。此版本還支援根據管理員在部署模型時自定義的上下文大小來計算實際的視訊記憶體佔用,從而最佳化排程決策,減少資源競爭時發生 OOM 的機率,提升模型服務的穩定性。

支援從 HuggingFace 映象源部署模型

GPUStack 支援從 Hugging Face、ModelScope 和 Ollama Registry 模型倉庫部署模型。由於網路限制,國內使用者無法直接從 Hugging Face 部署模型,儘管可以選擇從 ModelScope 和 Ollama Registry 部署,但其支援的模型庫相較於 Hugging Face 較為有限。

為了改善這一問題,GPUStack 在新版本中引入了 HF_ENDPOINT 環境變數,允許使用者配置 Hugging Face 的映象源。透過該配置,使用者可以在部署模型時從 Hugging Face 映象源檢索和下載所需模型。

當啟動 GPUStack 的 systemdlaunchd 服務時,系統會從 /etc/default/gpustack 檔案中讀取環境變數。在該檔案中,使用者可以新增所需的環境變數設定來配置映象源。

所有節點編輯 /etc/default/gpustack 檔案,配置 HF_ENDPOINT 環境變數:

vim /etc/default/gpustack

例如,新增以下配置,以使用 https://hf-mirror.com 作為 Hugging Face 映象源:

HF_ENDPOINT=https://hf-mirror.com

重啟服務生效:

systemctl restart gpustack

重啟 GPUStack 後,在介面選擇從 Hugging Face 部署模型時,系統將從配置的 Hugging Face 映象源檢索和下載模型。請注意,所有節點都需要配置該環境變數,確保統一從映象源下載模型:

image-20241129143314250

其它環境變數也可以使用該方式進行配置。

更高相容性的 API 對接方式

在之前,一些第三方專案,如 OneAPIRAGFlow,在對接 GPUStack 時,由於這些框架不支援自定義 OpenAI API 路徑,需要透過額外的 Proxy(如 Nginx)將 /v1 介面代理到 GPUStack 的 /v1-openai 介面,這樣的額外步驟增加了配置的複雜性。

為了提升使用者的使用體驗並提供更高的相容性,GPUStack v0.4 版本將多個 OpenAI 介面的路徑從 /v1-openai 別名到 /v1。因此,像 OneAPIRAGFlow 等不支援自定義路徑的框架,現在可以直接使用 /v1 路徑的 OpenAI API 對接 GPUStack,無需再配置額外的代理步驟。

支援 PostgreSQL 資料庫

之前,GPUStack 使用 SQLite 進行資料儲存,這使其更適合輕量級和邊緣部署,能夠快速啟用 GPUStack。為了更好地支援生產環境部署、第三方資料採集和資料整合,GPUStack 現在提供了將資料儲存到 PostgreSQL 資料庫的選項。

在安裝 GPUStack 時,可以使用 --database-url 引數來指定 PostgreSQL 資料庫的連線地址,例如:

curl -sfL https://get.gpustack.ai | sh -s - --database-url "postgresql://username:password@host:port/database_name"

GPUStack 將使用指定的 PostgreSQL 資料庫來儲存資料,提供更強的資料處理能力和更高的可擴充套件性。

適配更多作業系統

GPUStack v0.4 版本提供了多個分發版本的容器映象,包括 CUDA、NPU(CANN)、MUSA、CPU 等。透過容器化方式執行,GPUStack 可以執行在一些遺留的作業系統中,例如 Ubuntu 18.04 以及其他一些 glibc 版本低於 2.29 的作業系統,包括各種國產作業系統。

我們正在持續擴充套件 GPUStack 的支援範圍,目前正在按計劃推進對 AMD GPU海光 DCU 等硬體的支援工作。

GPUStack 當前依賴 Pyhon >= 3.10,若主機的 Python 版本低於 3.10,建議使用 Conda 建立符合版本要求的 Python 環境。

其他特性和修復

GPUStack v0.4.0 版本針對使用者反饋的問題進行了大量改進和修復,包括:

​ • 最佳化部署模型的狀態顯示,提供具體的原因資訊。

​ • 修復了高網路延遲情況下,訪問 Hugging FaceModelScope 模型倉庫時出現的載入超時問題。

​ • 改進了大日誌量下模型日誌的顯示,提升了檢視體驗。

​ • 提供了重置管理員密碼的指令 gpustack reset-admin-password

等等。這些改進增強了系統的易用性和穩定性,進一步改善了使用者的使用體驗。

其他增強和修復請檢視完整變更日誌:

https://github.com/gpustack/gpustack/releases/tag/v0.4.0

加入社群

想要了解更多關於 GPUStack 的資訊,可以訪問我們的網站:https://gpustack.ai

如果在使用過程中遇到任何問題,或者對 GPUStack 有任何建議,歡迎隨時加入我們的 Discord 社群:[ https://discord.gg/VXYJzuaqwD ],也可以 新增 GPUStack 微信小助手(微訊號:GPUStack)加入 GPUStack 微信交流群,獲得 GPUStack 團隊的技術支援,或與社群愛好者共同探討交流。

我們正在快速迭代 GPUStack 專案,歡迎在體驗 GPUStack 之前,在我們的 GitHub 倉庫 gpustack/gpustack 上點亮⭐️關注我們,及時接收 GPUStack 未來的新版本通知。我們非常歡迎大家一起參與到這個開源專案中,為開源貢獻力量!

如果覺得對你有幫助,歡迎點贊轉發關注

相關文章