Docker 運行 GPUStack 的詳細教程

GPUStack

GPUStack 是一個用于運行 AI 模型的開源 GPU 集群管理器。它具有廣泛的硬件兼容性,支持多種品牌的 GPU,并能在 Apple MacBook、Windows PC 和 Linux 服務器上運行。GPUStack 支持各種 AI 模型,包括大型語言模型(LLMs)、擴散模型、音頻模型、嵌入模型和重新排序模型。GPUStack 可以輕松擴展,只需添加更多 GPU 或節點即可擴展操作。它支持單節點多 GPU 和多節點推理和服務,并提供多種推理后端,如 llama-boxvox-boxvLLM。GPUStack 是一個輕量級的 Python 包,具有最小的依賴項和操作開銷,并且提供與 OpenAI 標準兼容的 API。此外,它還簡化了用戶和 API 密鑰的管理,提供了 GPU 性能和利用率的實時監控,以及令牌使用和速率限制的有效跟蹤。

關鍵特性

  • 廣泛的硬件兼容性:支持管理 Apple Mac、Windows PC 和 Linux 服務器上不同品牌的 GPU。
  • 廣泛的模型支持:支持從大語言模型(LLMs)、多模態模型(VLMs)、擴散模型、語音模型到嵌入和重新排序模型的廣泛模型。
  • 異構 GPU 支持與擴展:能夠輕松添加異構 GPU 資源,并按需擴展算力規模。
  • 分布式推理:支持單機多卡并行和多機多卡并行推理。
  • 多推理后端支持:支持 llama-box(基于 llama.cpp 和 stable-diffusion.cpp)、vox-boxvLLM 作為推理后端。
  • 輕量級 Python 包:最小的依賴和操作開銷。
  • OpenAI 兼容 API:提供兼容 OpenAI 標準的 API 服務。
  • 用戶和 API 密鑰管理:簡化用戶和 API 密鑰的管理流程。
  • GPU 指標監控:實時監控 GPU 性能和利用率。
  • Token 使用和速率統計:有效跟蹤 token 使用情況,并管理速率限制。

支持的硬件平臺

  • Apple Metal(M 系列芯片)
  • NVIDIA CUDA(計算能力 6.0 及以上)
  • AMD ROCm
  • 華為昇騰(CANN)
  • 摩爾線程(MUSA)
  • 海光 DTK

支持的模型類型

  • 大語言模型(LLMs):如 Qwen、LLaMA、Mistral、Deepseek、Phi、Yi 等。
  • 多模態模型(VLMs):如 Llama3.2-Vision、Pixtral、Qwen2-VL、LLaVA、InternVL2.5 等。
  • 擴散模型:如 Stable Diffusion、FLUX 等。
  • 嵌入模型:如 BGE、BCE、Jina 等。
  • 重新排序模型:如 BGE、BCE、Jina 等。
  • 語音模型:如 Whisper(語音轉文本)、CosyVoice(文本轉語音)等。

使用場景

GPUStack 適用于需要高效管理和調度 GPU 資源的場景,特別是在運行 AI 模型時。它支持單節點多 GPU 和多節點推理及服務,并提供多種推理后端,如 llama-boxvox-boxvLLM。GPUStack 是一個輕量級的 Python 包,具有最小的依賴項和操作開銷,并且提供與 OpenAI 標準兼容的 API。此外,它還簡化了用戶和 API 密鑰的管理,提供了 GPU 性能和利用率的實時監控,以及令牌使用和速率限制的有效跟蹤。

Docker 運行 GPUStack 的詳細教程

https://docs.gpustack.ai/latest/installation/docker-installation/

以下是使用 Docker 運行 GPUStack 的詳細教程,結合官方文檔與社區實踐整理而成。通過本指南,您可以在支持 NVIDIA GPU 的 Linux 環境中快速部署 GPUStack,并實現異構 GPU 集群的管理與大模型服務。


在這里插入圖片描述
在這里插入圖片描述

一、環境準備

  1. 硬件與系統要求

    • 確保系統已安裝 NVIDIA GPU,并驗證驅動兼容性(支持 CUDA 11.0 及以上版本)。
    • 推薦使用 Ubuntu 22.04 LTS 或 CentOS 7+ 系統。
  2. 驗證 GPU 與依賴項

    # 檢查 NVIDIA GPU 是否識別
    lspci | grep -i nvidiaroot@i-28e6iose:/home/ubuntu# lspci | grep -i nvidia
    00:0c.0 VGA compatible controller: NVIDIA Corporation TU102 [GeForce RTX 2080 Ti] (rev a1)
    00:0d.0 Audio device: NVIDIA Corporation TU102 High Definition Audio Controller (rev a1)# 確認 GCC 已安裝
    gcc --versionroot@i-28e6iose:/home/ubuntu# gcc --version
    gcc (Ubuntu 9.5.0-6ubuntu2) 9.5.0
    Copyright (C) 2019 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    

二、安裝 NVIDIA 驅動與 Docker

  1. 安裝 NVIDIA 驅動

    # 安裝內核頭文件
    sudo apt-get install linux-headers-$(uname -r)
    # 添加 CUDA 倉庫并安裝驅動
    wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
    sudo dpkg -i cuda-keyring_1.1-1_all.deb
    sudo apt-get update
    sudo apt-get install nvidia-driver-535 -y
    sudo reboot
    # 驗證驅動
    nvidia-smiroot@i-28e6iose:/home/ubuntu# nvidia-smi
    Sun Mar  9 20:48:43 2025
    +-----------------------------------------------------------------------------------------+
    | NVIDIA-SMI 570.124.06             Driver Version: 570.124.06     CUDA Version: 12.8     |
    |-----------------------------------------+------------------------+----------------------+
    | GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
    |                                         |                        |               MIG M. |
    |=========================================+========================+======================|
    |   0  NVIDIA GeForce RTX 2080 Ti     Off |   00000000:00:0C.0 Off |                  N/A |
    | 22%   29C    P8             20W /  250W |       4MiB /  11264MiB |      0%      Default |
    |                                         |                        |                  N/A |
    +-----------------------------------------+------------------------+----------------------++-----------------------------------------------------------------------------------------+
    | Processes:                                                                              |
    |  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
    |        ID   ID                                                               Usage      |
    |=========================================================================================|
    |  No running processes found                                                             |
    +-----------------------------------------------------------------------------------------+
    
  2. 安裝 Docker Engine

    # 卸載舊版本 Docker(如有)
    sudo apt-get remove docker.io docker-doc containerd
    # 添加 Docker 官方源
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io -y
    # 驗證 Docker
    docker inforoot@i-28e6iose:/home/ubuntu# docker info
    Client: Docker Engine - CommunityVersion:    28.0.1Context:    defaultDebug Mode: falsePlugins:buildx: Docker Buildx (Docker Inc.)Version:  v0.21.1Path:     /usr/libexec/docker/cli-plugins/docker-buildxcompose: Docker Compose (Docker Inc.)Version:  v2.33.1Path:     /usr/libexec/docker/cli-plugins/docker-composeServer:Containers: 10Running: 10Paused: 0Stopped: 0Images: 10Server Version: 28.0.1
    
  3. 配置 NVIDIA Container Toolkit
    在這里插入圖片描述

    nvidia/cuda:12.2.0-base-ubuntu22.04 是一個基于 Ubuntu 22.04 操作系統的 NVIDIA CUDA 基礎鏡像,用于運行需要 GPU 加速的計算環境。CUDA(Compute Unified Device Architecture)是 NVIDIA 提供的一個并行計算平臺和編程模型,它使開發者可以使用 NVIDIA GPU 進行高性能計算。

    這個鏡像提供了 CUDA 12.2.0 版本,適用于需要利用 NVIDIA GPU 進行深度學習、科學計算和其他計算密集型任務的場景。CUDA 12.2.0 版本帶來了許多改進和新特性,包括對新架構的支持、性能優化和新 API

    https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html

    # 添加倉庫并安裝工具包
    curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
    curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
    sudo apt-get update
    sudo apt-get install nvidia-container-toolkit -y
    # 配置 Docker 運行時
    sudo nvidia-ctk runtime configure --runtime=docker
    sudo systemctl restart dockerroot@i-28e6iose:/home/ubuntu# sudo nvidia-ctk runtime configure --runtime=docker
    INFO[0000] Loading config from /etc/docker/daemon.json
    INFO[0000] Wrote updated config to /etc/docker/daemon.json
    INFO[0000] It is recommended that docker daemon be restarted.# 驗證 CUDA 容器
    docker run --rm --gpus all nvidia/cuda:12.2.0-base-ubuntu22.04 nvidia-smiroot@i-28e6iose:/home/ubuntu# docker run --rm --gpus all nvidia/cuda:12.2.0-base-ubuntu22.04 nvidia-smi
    Sun Mar  9 13:10:55 2025
    +-----------------------------------------------------------------------------------------+
    | NVIDIA-SMI 570.124.06             Driver Version: 570.124.06     CUDA Version: 12.8     |
    |-----------------------------------------+------------------------+----------------------+
    | GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
    |                                         |                        |               MIG M. |
    |=========================================+========================+======================|
    |   0  NVIDIA GeForce RTX 2080 Ti     Off |   00000000:00:0C.0 Off |                  N/A |
    | 22%   26C    P8             21W /  250W |       4MiB /  11264MiB |      0%      Default |
    |                                         |                        |                  N/A |
    +-----------------------------------------+------------------------+----------------------++-----------------------------------------------------------------------------------------+
    | Processes:                                                                              |
    |  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
    |        ID   ID                                                               Usage      |
    |=========================================================================================|
    |  No running processes found                                                             |
    +-----------------------------------------------------------------------------------------+
    

三、部署 GPUStack 容器

  1. 運行 GPUStack 主節點

    docker run -d \--gpus all \-p 890:80 \--ipc=host \--name gpustack \-v gpustack-data:/var/lib/gpustack \gpustack/gpustack:latest
    
    • 參數說明
      • --gpus all:啟用所有 GPU 資源。
      • --ipc=host:共享主機 IPC 命名空間,提升性能。
      • -v gpustack-data:持久化存儲配置與模型數據。
  2. 獲取初始密碼

    docker exec -it gpustack cat /var/lib/gpustack/initial_admin_passwordroot@i-28e6iose:/home/ubuntu# docker exec -it gpustack cat /var/lib/gpustack/initial_admin_password
    rjl@Ainm3dtQ#賬戶信息:
    admin/rjl@Ainm3dtQ
    #修改密碼:P@88w0rd
    

    訪問 http://<服務器IP>,使用用戶名 admin 和上述密碼登錄,首次需重置密碼。


在這里插入圖片描述

四、擴展 GPU 集群

  1. 添加 Worker 節點
    • 在主節點獲取 Token:
      docker exec -it gpustack cat /var/lib/gpustack/token
      
    • 在 Worker 節點運行:
      docker run -d \--gpus all \--network=host \--ipc=host \gpustack/gpustack \--server-url http://<主節點IP> \--token <獲取的Token>
      

五、功能使用示例

  1. 部署大模型
    在 GPUStack 控制臺的 Models 頁面,支持從 Hugging Face 或本地導入模型。例如部署 Llama3.2 模型時,系統會自動分配 GPU 資源并生成 API 端點。

  2. Playground 調測
    在 Playground 中可測試多模態模型(如 Stable Diffusion)、文本嵌入模型(BERT)等,支持多模型對比與參數優化。


六、常見問題

  • GPU 未識別:檢查 nvidia-smi 是否正常,并確認 Docker 運行時配置正確。
  • 容器啟動失敗:確保已啟用 --ipc=host 并掛載持久化卷。
  • 網絡問題:跨節點通信需開放防火墻的 80 端口及內部 RPC 端口(默認為 6789)。

七、參考資源

  • GPUStack 官方 Docker 部署文檔
  • NVIDIA Container Toolkit 配置指南

通過以上步驟,您可快速搭建一個支持異構 GPU 資源調度的企業級大模型服務平臺,實現從單機到集群的高效擴展。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/73177.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/73177.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/73177.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

完整例子和調用關系qt OpenGL

項目結構 首先&#xff0c;你需要在 Qt 項目中創建一個類&#xff0c;繼承自 QOpenGLWidget 來進行 OpenGL 渲染。文件結構如下&#xff1a; - main.cpp - MyOpenGLWidget.h - MyOpenGLWidget.cpp - vertex_shader.glsl - fragment_shader.glsl 1. main.cpp 這是 Qt 項目的入口…

VSCode 配置優化指南:打造極致高效的前端開發環境

VSCode 配置優化指南&#xff1a;打造極致高效的前端開發環境 一、基礎環境配置&#xff1a;讓開發更流暢 1. 性能優化設置 // settings.json {"files.autoSave": "afterDelay", // 自動保存&#xff08;延遲1秒&#xff09;"files.exclud…

源IP泄露后如何涅槃重生?高可用架構與自動化防御體系設計

一、架構層解決方案 1. 高防代理架構設計 推薦架構&#xff1a; 用戶 → CDN&#xff08;緩存靜態資源&#xff09; → 高防IP&#xff08;流量清洗&#xff09; → 源站集群&#xff08;真實IP隱藏&#xff09; ↑ Web應用防火墻&#xff08;WAF&#xff09; 實施要點&a…

【英偉達AI論文】多模態大型語言模型的高效長視頻理解

摘要&#xff1a;近年來&#xff0c;基于視頻的多模態大型語言模型&#xff08;Video-LLMs&#xff09;通過將視頻處理為圖像幀序列&#xff0c;顯著提升了視頻理解能力。然而&#xff0c;許多現有方法在視覺主干網絡中獨立處理各幀&#xff0c;缺乏顯式的時序建模&#xff0c;…

無障礙閱讀(Web Accessibility)NVDA打開朗讀查看器后,enter鍵不生效的原因

用NVDA測試Web Accessibility時&#xff0c;打開朗讀查看器&#xff0c;enter鍵會無效&#xff0c;而不打開測試器&#xff0c;就沒有問題&#xff0c;很大原因是被應用的元素不是可聚焦的&#xff0c;解決方法嘗試&#xff1a; 將標簽改為可聚焦的語義化標簽&#xff0c;如 b…

2Android中的AIDL是什么以及如何使用它

一、Android中的AIDL概述 AIDL&#xff08;Android Interface Definition Language&#xff09;是Android系統中用于定義和實現跨進程通信&#xff08;IPC&#xff09;接口的語言。它允許一個進程向另一個進程發送請求并獲取響應&#xff0c;是Android中實現進程間通信的一種重…

Python繪制數據分析中經典的圖形--列線圖

Python繪制數據分析中經典的圖形–列線圖 列線圖是數據分析中的經典圖形&#xff0c;通過背后精妙的算法設計&#xff0c;展示線性模型&#xff08;logistic regression 和Cox&#xff09;中各個變量對于預測結果的總體貢獻&#xff08;線段長短&#xff09;&#xff0c;另外&…

leetcode【面試經典150系列】(一)

目錄 121.買賣股票最佳時機 題目描述 示例 算法分析 代碼(python3) 122.買賣股票最佳時機II 題目描述 示例 算法分析 代碼&#xff08;python3&#xff09; 55.跳躍游戲 題目描述 示例 算法分析 代碼 45.跳躍游戲II 題目描述 示例 算法分析 代碼 121.買賣股票…

為什么會出現redis數據庫?redis是什么?

什么是 Redis? 為什么要用 Redis? 下面我將從 Redis 出現的背景、Redis 的解決方案個來回答。 1、Redis 出現的背景 互聯網的應用越來越多&#xff0c;例如社交網絡、電商、實時服務發展的十分迅速&#xff0c;這就導致了傳統技術棧&#xff08;如關系型數據庫&#xff09;…

Windows 11下Git Bash執行cURL腳本400問題、CMD/PowerShell不能執行多行文本等問題記錄及解決方案

問題 在Postman里可成功執行的POST請求&#xff1a; 找到Postman的Code 因為cURL基本上算是行業標準&#xff0c;所以Postman默認選中cURL&#xff0c;支持切換不同的開發語言&#xff1a; 點擊上圖右上角的復制按鈕&#xff0c;得到cURL腳本。 Windows 11家庭版&#xff…

Docker基礎入門(一)

初識Docker 什么是Docker Docker是一個快速交付應用、運行應用的技術&#xff1a; 可以將程序及其依賴、運行環境一起打包為一個鏡像&#xff0c;可以遷移到任意Linux操作系統運行時利用沙箱機制形成隔離容器&#xff0c;各個應用互不干擾啟動、移除都可以通過一行命令完成&…

容器編排革命:從 Docker Run 到 Docker Compose 的進化之路20250309

容器編排革命&#xff1a;從 Docker Run 到 Docker Compose 的進化之路 一、容器化部署的范式轉變 在 Docker 生態系統的演進中&#xff0c;容器編排正從“手動操作”走向“自動化管理”。根據 Docker 官方 2023 年開發者調查報告&#xff0c;78% 的開發者已采用 Docker Compo…

c++ 嵌入匯編的方式實現int型自增

x86/x86_64 實現 x86 平臺上&#xff0c;使用 LOCK XADD 指令來實現原子自增&#xff1a; #include <iostream>inline int atomic_increment_x86(int* value) {int result;__asm__ __volatile__("lock xaddl %1, %0": "m"(*value), "r"(…

區塊鏈與去中心化技術

區塊鏈與去中心化技術 核心進展 區塊鏈從加密貨幣&#xff08;如比特幣&#xff09;擴展至智能合約和供應鏈管理。以太坊2.0引入分片技術提升交易吞吐量&#xff0c;而零知識證明&#xff08;ZKP&#xff09;增強了隱私保護15。企業級應用如IBM的Food Trust平臺通過區塊鏈追蹤…

逐夢DBA:Linux環境下 MySQL 的卸載

1. 查看是否安裝過MySQL&#xff0c;如果不存在&#xff0c;則不顯示任何內容 rpm -qa | grep -i mysql # -i 忽略大小寫 2. 查看MySQL服務狀態 systemctl status mysqld.service 3. 關閉 mysql 服務 systemctl stop mysqld.service 4. 查看當前 mysql 卸載狀況 rpm -qa…

【藍橋杯python研究生組備賽】003 貪心

題目1 股票買賣 給定一個長度為 N 的數組&#xff0c;數組中的第 i 個數字表示一個給定股票在第 i 天的價格。 設計一個算法來計算你所能獲取的最大利潤。你可以盡可能地完成更多的交易&#xff08;多次買賣一支股票&#xff09;。 注意&#xff1a;你不能同時參與多筆交易&…

網絡通信Socket中多態HandleIO設計模式深度解析

網絡通信 Socket 中多態 handleIO 詳細講解 大綱 引言 網絡通信的重要性Socket 編程在網絡通信中的地位多態 handleIO 的意義和作用 Socket 編程基礎 Socket 的基本概念Socket 的類型&#xff08;TCP 和 UDP&#xff09;Socket 編程的基本流程 多態的概念與實現 多態的定義和…

flutter 如何與原生框架通訊安卓 和 ios

在 Flutter 中與原生框架&#xff08;Android 和 iOS&#xff09;進行通信的主要方式是通過 **平臺通道&#xff08;Platform Channels&#xff09;**。平臺通道允許 Flutter 代碼與原生代碼進行雙向通信。以下是詳細的步驟和示例&#xff0c;說明如何在 Flutter 中與 Android …

LabVIEW VI Scripting實現連接器窗格自動化

通過VI Scripting自動化配置連接器窗格&#xff0c;可大幅提升開發效率、統一接口規范&#xff0c;并適配動態需求。以下為真實場景中的典型應用案例&#xff0c;涵蓋工業、汽車電子及教育領域&#xff0c;展示其實際價值與實施效果。 特點&#xff1a; 程序化配置&#xff1a;…

1-001:MySQL的存儲引擎有哪些?它們之間有什么區別?

MySQL 存儲引擎 ├── InnoDB&#xff08;默認引擎&#xff09; │ ├── 事務支持&#xff1a;支持 ACID 和事務&#xff08;事務日志、回滾、崩潰恢復&#xff09; │ ├── 鎖機制&#xff1a;支持行級鎖&#xff0c;提高并發性能 │ ├── 外鍵支持&#xff1a;支持外鍵…