最近切换了年初大模型部署的 Xinference 平台,归因还是因为资源占用太高了,并且镜像拉取太慢,特别是部署比较新的模型导致适配跟不上,反正各种奇奇怪怪的问题,于是就切换成了新新开源的 GPUStack,目前已经稳定运行了两周,使用稳定,所以写一篇文章记录一下实战折腾过程,希望针对于有企业因为数据敏感需要私有部署大模型提供实操经验,排除哪些趟过的坑。

先介绍下 GPUStack:

开源地址:https://github.com/gpustack/gpustack,截止发文 5k star

GPUStack 是一个开源的 GPU 集群管理器,专为高效的 AI 模型部署而设计。它配置和编排推理引擎(vLLM、SGLang、TensorRT-LLM 或您自定义的引擎),以优化跨 GPU 集群的性能。其核心功能包括:

  • 多集群 GPU 管理。 跨多个环境管理 GPU 集群。这包括本地服务器、Kubernetes 集群和云提供商。
  • 可插拔推理引擎。 自动配置高性能推理引擎,如 vLLM、SGLang 和 TensorRT-LLM。您也可以根据需要添加自定义推理引擎。
  • Day 0 模型支持。 GPUStack 的可插拔引擎架构使您能够在新模型发布当天即可部署。
  • 性能优化配置。 提供预调优模式,用于低延迟或高吞吐量。GPUStack 支持扩展的 KV 缓存系统,如 LMCache 和 HiCache,以减少 TTFT。它还包括对推测性解码方法(如 EAGLE3、MTP 和 N-grams)的内置支持。
  • 企业级运维能力。 支持自动故障恢复、负载均衡、监控、认证和访问控制。

选型

为什么没有选择 ollama、localai、lmstudio 之类的部署。个人部署的这些都是可以选择的,但是作为企业级大模型部署首先是操作方便并且运维成本较低,支持部署各种格式的模型和后端,比如 vllm,llama 之类。企业级肯定部署的模型不单一,要部署向量重排音频模型等,所以一定要全,而不是当纯玩具玩。

前面也发布过 Xinference 平台如果你熟悉的话并且有二开项目,有专门的运维用这个也完全是 OK 的,多使用一个多一个选择,或者后面也会遇到其他问题又切换回去了,本文主要做个记录,方便后续全新部署。

架构

GPUStack 使开发团队、IT 组织和服务提供商能够大规模地提供模型即服务。它支持用于 LLM、语音、图像和视频模型的行业标准 API。该平台内置用户认证和访问控制、GPU 性能和利用率的实时监控,以及令牌使用量和 API 请求率的详细计量。

下图展示了单个 GPUStack 服务器如何管理跨本地和云环境的多个 GPU 集群。GPUStack 调度器分配 GPU 以最大化资源利用率,并选择合适的推理引擎以实现最佳性能。管理员还可以通过集成的 Grafana 和 Prometheus 仪表板全面了解系统运行状况和指标。

企业级开源大模型部署平台 GPUStack 实战教程

GPUStack 支持多种 AI 推理加速器:

  • NVIDIA GPU
  • AMD GPU
  • Ascend NPU
  • Hygon DCU
  • MThreads GPU
  • Iluvatar GPU
  • MetaX GPU
  • Cambricon MLU
  • T-Head PPU

实操

本操作在单节点 8H32G ,48*2 GPU 上进行操作的,部署的 GPUStack server 和 worker 就部署在同一台机器上。

先检查基础环境,安装 DockerNVIDIA Container Toolkit。以前文章都有写过,这里列一下完整命令即可。

基础环境安装

# 验证当前环境有 NVIDIA GPU 硬件
lspci | grep -i nvidia
# 验证系统已安装 GCC
gcc --version

# 安装 NVIDIA 驱动
apt-get install linux-headers-$(uname -r)
# 安装 cuda-keyring 包
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
dpkg -i cuda-keyring_1.1-1_all.deb

# 安装 NVIDIA 驱动
apt-get update && apt-get install nvidia-open -y

# reboot 之后继续执行
# 检查 nvidia-smi 命令可用
nvidia-smi

# Docker Engine 可使用 linux-mirror 一键安装也行
# 先卸载冲突包
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

# 设置 Docker 的 apt 仓库
apt-get update && apt-get install ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装 Docker 
apt-get update && apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
# 检查 docker 
docker info

# 安装 NVIDIA Container Toolkit
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 | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
    
# 安装 NVIDIA Container Toolkit
apt-get update && apt-get install -y nvidia-container-toolkit -y

# 使用 nvidia-ctk 命令配置容器运行时
nvidia-ctk runtime configure --runtime=docker

# 检查 daemon.json 文件的配置 并添加国内镜像
cat /etc/docker/daemon.json

# 重启 docker 使配置生效
systemctl restart docker

# 运行一个示例的 CUDA 容器来验证安装
docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi

GPUStack 安装前置检查

GPUStack 支持 AMD64ARM64 架构上的大多数现代 Linux 发行版。

GPUStack 不支持通过 PyPI 直接安装。为获得最佳兼容性,请使用提供的 Docker 镜像。

必须安装网络时间协议 (NTP) 软件包,以确保节点之间状态的一致性同步。本文是单节点不涉及,如果是多节点一定注意时间同步。

支持 NVIDIA CUDA 12.6 + 。

安装前使用下面命令进行验证环境确保没问题。

NVIDIA GPU 命令:

sudo nvidia-smi

# If using Docker
sudo docker info 2>/dev/null | grep -q "nvidia" \
    && echo "NVIDIA Container Toolkit OK" \
    || (echo "NVIDIA Container Toolkit not configured"; exit 1)

AMD GPU 命令:参考链接

sudo amd-smi static

# If using Docker
sudo docker info 2>/dev/null | grep -q "amd" \
    && echo "AMD Container Toolkit OK" \
    || (echo "AMD Container Toolkit not configured"; exit 1)

Ascend NPU 命令:参考链接

sudo npu-smi info

# If using Docker
sudo docker info 2>/dev/null | grep -q "ascend" \
    && echo "Ascend Container Toolkit OK" \
    || (echo "Ascend Container Toolkit not configured"; exit 1)

其他更多的直接参考官方文档不一一列举了,环境验证不过则直接根据问题先安装好。

类似于下面的输出则环境无误。

企业级开源大模型部署平台 GPUStack 实战教程

开放网络策略:如果你部署在内网而是要跨网络和企业有严格的网络策略,按照官方开通必要的端口,我因为是单节点不存在这个问题。

GPUStack 使用以下端口进行通信:

Server 端要开放的端口:

PortDescription
TCP 80GPUStack UI 和 API 端点的默认端口
TCP 443GPUStack UI 和 API 端点的默认端口(已启用 TLS)
TCP 10161服务器指标端点的默认端口
TCP 30080服务器内部 API 的默认端口
TCP 5432嵌入式 Postgres 数据库的默认端口

Worker 端要开放的端口:

PortDescription
TCP 10150GPUStack 工作进程的默认端口
TCP 10151工作指标端点的默认端口
TCP 40000-40063推理服务的端口范围
TCP 41000-41999Ray 服务的端口范围(使用 vLLM 分布式部署)

GPUStack Server 安装

部分参数请根据自己机器和 GPU 调整。server 端只做调度和配置不配置 GPU 也是 ok。

services:
  gpustack-server:
  # 可使用镜像: registry.cyou/gpustack/gpustack:latest
    image: gpustack/gpustack:latest
    container_name: gpustack-server
    restart: unless-stopped
    shm_size: '12gb'
    ports:
      - "8081:80"
    volumes:
      - ./data:/var/lib/gpustack
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 2
              capabilities: [gpu]

如果一切正常,请在浏览器中打开 http://your_host_ip:8081 以访问 GPUStack UI。

使用用户名 admin 和默认密码登录。使用以下命令找回初始密码:

sudo docker exec -it gpustack-server cat /var/lib/gpustack/initial_admin_password

企业级开源大模型部署平台 GPUStack 实战教程

GPUStack Worker 安装

如果你不是单节点首先在管理后台-集群管理-添加集群,单节点集群直接在节点里添加即可。集群选择 local-docker,根据界面选择后会生成 worker 的安装命令,如下图:

企业级开源大模型部署平台 GPUStack 实战教程

最终的命令直接转换为 docker-compose 编排文件方便维护,让 AI 转一下即可,下面我的可以参考:参考根据自己配置自行调整。

services:
  gpustack-worker:
  # 可使用镜像: registry.cyou/gpustack/gpustack:latest
    image: gpustack/gpustack:latest
    container_name: gpustack-worker
    restart: unless-stopped
    shm_size: '12gb'
    # 对应 --privileged
    privileged: true
    # 对应 --network=host
    network_mode: host
    
    environment:
      - GPUSTACK_RUNTIME_DEPLOY_MIRRORED_NAME=gpustack-worker
      - GPUSTACK_TOKEN=gpustxxxxx这里填界面生成的密钥
    
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./gpustack-data:/var/lib/gpustack
      - /data/ai-playgroud/models:/my-models
    
    # 对应 --runtime nvidia 及 GPU 资源分配
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all  # 确保识别到你的GPU
              capabilities: [gpu]

    # 对应命令末尾的启动参数
    command: 
      - --server-url
      - http://192.168.x.x:8081
      - --worker-ip
      - 192.168.0.110

worker 启动后 只要注册上了就可以部署大模型了。

大模型下载

部署大概就分为三步:

1、下载模型,可以在 modelscope 或者 抱抱脸两个网站下载。

2、选定运行后端配置启动参数。

3、启动调用

下载模型可以手动下载或者直接在界面上选择一些主流模型下载,如下图:

企业级开源大模型部署平台 GPUStack 实战教程

这里我建议是直接在服务器上下载,可以挂代理并且超时重连,如果是在界面上很多时候会失败并且模型部署很全,直接下载到指定的目录下,然后挂在进通过本地导入,我这里给出利用官方工具下载模型:

# modelscope 官方下载器
# 如果需要安装 python 虚拟环境执行apt install python3-venv -y && python3 -m venv venv && source venv/bin/activate
pip install modelscope
modelscope download --model Qwen/Qwen3.6-27B-FP8 --local_dir ./

# huggingface 官方下载器
pip install -U huggingface_hub
export HF_ENDPOINT=https://hf-mirror.com
hf download ytgui/Qwen3.5-Sonnet-9B --local-dir Qwen3.5-Sonnet-9B

然后通过界面上导入即可。操作路径-资源-模型文件-添加模型-本地路径。

企业级开源大模型部署平台 GPUStack 实战教程

然后就可以开始部署了,目前我都尝试了各个类型的部署,虽然模型比较小,因为格式比较多,量化和非量化以及微调过的都能部署。

对话推理模型部署

这里以:Qwen3.6-27B-FP8 模型为例,下载地址:https://modelscope.cn/models/Qwen/Qwen3.6-27B-FP8,首先要看官方能用哪些后端部署,大多数都是支持vllm部署的。直接点击部署,然后配置即可。首次部署的时候会下载对应的vllm后端镜像比较大需要多等待。

部署的时候我们主要调整的就是运行后端和后端参数,不同模型参数不一样,所以根据官方模型介绍来。

企业级开源大模型部署平台 GPUStack 实战教程

参考可以直接一行全部写完比如:

--max-model-len=102400 --reasoning-parser=qwen3 --enable-auto-tool-choice --tool-call-parser=qwen3_coder --tensor-parallel-size=1 --gpu-memory-utilization=0.9 --enforce-eager

环境变量:VLLM_LOGGING_LEVEL=DEBUG,如果启动不起来要看更多日志就直接 DEBUG 级别。

如果你是使用的量化模型,格式后缀是 gguf 的,比如:qwen3.5-27b-claude-4.6-opus-reasoning-distilled-v2-gguf 模型 ,下载地址:https://huggingface.co/Jackrong/Qwen3.5-27B-Claude-4.6-Opus-Reasoning-Distilled-v2-GGUF/tree/main,这个就不能用 vllm 后端了,虽然最新版也支持,可以使用 llama 后端进行加载。部署后端参数可以参考如下:

--mmproj /my-models/Qwen3.5-27B-Claude-4.6-Opus-Reasoning-Distilled-v2-GGUF/mmproj-BF16.gguf --batch-size 512 --ubatch-size 256 -c 131072 -ngl 999 --flash-attn on --cache-type-k q8_0 --cache-type-v q8_0 --alias "Qwen3.5-27B" --threads 8 --parallel 3 --timeout 300

运行完成了之后可以直接在试验场-对话中进行测试,然后 API 的话通过路由对外暴露提供标准 OpenAI 的格式 直接接入即可。

企业级开源大模型部署平台 GPUStack 实战教程

向量模型部署

这里以:qwen3-vl-embedding-2b 为例。下载地址:https://modelscope.cn/models/Qwen/Qwen3-VL-Embedding-2B

还是vllm 后端,因为模型比较小,所以直接在 1 个卡上进行运行,相当于一个 GPU 卡运行向量、重排、语音,每个人分一点 GPU 即可,就一定要用到 GPU 卸载。--gpu-memory-utilization=0.3 根据自己的显卡大小来配置,合理即可,太小运行不起来,太大有点浪费。

我这里配置的后端参数是:--gpu-memory-utilization=0.3 --runner=pooling

--runner=pooling 这个参数是 qwen-vl 官方运行必须要配置的,可以看这里文档

部署好后依然可以在控制台-试验场进行测试。

企业级开源大模型部署平台 GPUStack 实战教程

重排模型部署

这里以:qwen3-vl-reranker-2b 为例,下载地址:https://modelscope.cn/models/Qwen/Qwen3-VL-Reranker-2B

vllm 后端,后端参数:--gpu-memory-utilization=0.3 --hf-overrides={"architectures": ["Qwen3VLForSequenceClassification"],"classifier_from_token": ["no", "yes"],"is_original_qwen3_reranker": true} --runner=pooling

--hf-overrides 这里的参数同样是 vllm 官方针对 qwen-vl 提供的模型特有参数。可以看这里文档

依旧控制台进行验证:

企业级开源大模型部署平台 GPUStack 实战教程

TTS 文本转语音模型部署

这里以:qwen3-tts-12hz-1.7b-voicedesign 模型为例。下载地址:https://modelscope.cn/models/Qwen/Qwen3-TTS-12Hz-1.7B-VoiceDesign

vllm 后端,这个不需要额外的参数,只用配置 GPU 卸载即可。--gpu-memory-utilization=0.35

控制台验证。

企业级开源大模型部署平台 GPUStack 实战教程

ASR 语音转文字模型部署

这里以:qwen3-asr-1.7b 模型为例。下载地址:https://modelscope.cn/models/Qwen/Qwen3-ASR-1.7B

vllm 后端,这个不需要额外参数,也只用配置 GPU 卸载:--gpu-memory-utilization=0.3

控制台验证,支持 mp3 和 wav 格式。

企业级开源大模型部署平台 GPUStack 实战教程

业务集成

GPUStack 部署之后提供兼容的 OpenAI 和 Anthropic接口进行调用,无缝适配业务,下面举几个例子。

接口调用

因为支持OpenAI 的接口基本上支持市面上所有的程序,直接使用即可。

curl 直接调用

Openai:

export GPUSTACK_API_KEY=your_api_key
curl http://your_gpustack_server_url/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $GPUSTACK_API_KEY" \
  -d '{
    "model": "qwen3-27b",
    "messages": [
      {
        "role": "system",
        "content": "You are a helpful assistant."
      },
      {
        "role": "user",
        "content": "Hello!"
      }
    ],
    "stream": true
  }'

Anthropic:

export GPUSTACK_API_KEY=your_api_key
curl http://your_gpustack_server_url/v1/messages \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $GPUSTACK_API_KEY" \
  -d '{
    "model": "qwen3-27b",
    "messages": [
      {
        "role": "user",
        "content": "Hello!"
      }
    ],
    "max_tokens": 1024
  }'

Dify

可直接安装插件 GPUStack 或者 使用OpenAI-API-compatible 插件进行对接。

企业级开源大模型部署平台 GPUStack 实战教程

其他更多工具使用

更多请参考官方文档:https://docs.gpustack.ai/2.1/integrations/inference-apis/

Grafana 监控

大模型部署必然离不开监控指标拔测,GPUStack 内置了Grafana 指标可以直接查看面板,这一项真的值得赞一个。

直接控制台点击-节点-监控。

企业级开源大模型部署平台 GPUStack 实战教程

总结

本文主要讲解了在 GPUStack 上面进行部署各种模型,目前来看是支持对话,嵌入,重排,语音,图片(未做测试没需求)。能够直接在一个平台上部署实验完平时 AI 开发过程中需要多模型,并且可以通过 OpenApi 直接接入程序使用,包括 DIfy,claude code,codex,ragflow,CherryStudio,Openclaw,MaxKb,new-api,one-api 之类的。目前所在企业内部通过 16H32G和 2 张 GPU 部署了 qwen3.6-27b-fp8 ,qwen系列下的 asr,tts,emb,rerank等模型,能够做到平时对接调试开发使用纯免费,在涉及敏感行业数据时可以用私有模型,实际可以采用公有云模型做为配合进行使用,做到平替不限量开发使用。

GPUStack 这套架构使用起来和 K8S 相当的像,看到路由,副本以及调度策略容器化,熟悉 K8s 的同学基本上可以无缝上手。

若你有 AI 大模型部署运维,企业内部知识库搭建,AI 相关业务培训等需求可以评论区留言或发送邮件到( i#51it.wang将#改成@)联系我们

参考链接

配置NVIDIA Container Runtime和容器运行GPUStack教程

Install Docker Engine on Ubuntu

Installing the NVIDIA Container Toolkit

GUPStack Quickstart官方教程

VLLM官方文档

GPUStack:打造企业级私有大模型服务的开源利器