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.mzph.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;支持外键…