忘掉Ollama! 将GPT OSS私有部署推理性能提升100倍的部署教程

久等多时,本周 OpenAI 终于发布了两款开源模型:GPT OSS 120BGPT OSS 20B ,官方提供的 vLLM 推理需要一系列安装配置步骤才可正常运行,以下基于开源大模型服务平台 GPUStack ,结合自定义安装的 vLLM 版本,完成 GPT OSS 系列模型的生产部署推理。同时,我们还选择了 Ollama 作为对比,基于 EvalScope 进行压测,对比两种引擎在生产并发场景下的吞吐性能差异。

测试结果显示,vLLM 在资源利用率、并发能力和扩展效率方面均大幅领先。尤其在企业级部署场景中,Ollama 的多实例架构容易造成显存浪费,而 vLLM 则能以更小的显存占用支撑更多并发连接,投资回报率(ROI)远高于前者。

以下为具体的安装部署教程和测试过程:

安装 GPUStack

首先,参考 GPUStack 官方文档完成安装(docs.gpustack.ai/latest/inst... )。推荐容器化部署方式,在 NVIDIA GPU 服务器上,根据文档要求完成对应版本的 NVIDIA 驱动、Docker 和 NVIDIA Container Toolkit 安装后,通过 Docker 启动 GPUStack 服务

以下测试在 NVIDIA H20 GPU 上进行:

ini 复制代码
docker run -d --name gpustack \
    --restart=unless-stopped \
    --gpus all \
    --network=host \
    --ipc=host \
    -e HF_ENDPOINT="https://hf-mirror.com" \
    -v gpustack-data:/var/lib/gpustack \
    gpustack/gpustack \
    --port 9090

查看容器日志确认 GPUStack 是否已正常运行:

复制代码
docker logs -f gpustack

若容器日志显示服务启动正常,使用以下命令获取 GPUStack 控制台的初始登录密码:

bash 复制代码
docker exec -it gpustack cat /var/lib/gpustack/initial_admin_password

在浏览器中通过服务器 IP 和自定义的 9090 端口访问 GPUStack 控制台(http://YOUR_HOST_IP:9090),使用默认用户名 admin 和上一步获取的初始密码登录。登录 GPUStack 后,在资源菜单即可查看识别到的 GPU 资源:

安装自定义 vLLM 版本

目前,GPUStack 0.7.0 版本集成的 vLLM 版本为 0.9.2,vLLM 的最新版本为 0.10.0但 0.10.0 版本仍不支持 openai/gpt-oss-120b 和 openai/gpt-oss-20b 模型的推理运行

查看模型介绍:huggingface.co/openai/gpt-... ,模型的 README 中已说明需要安装 vLLM 0.10.1 gptoss 分支版本才能运行:

为了提前体验 gpt-oss-120bgpt-oss-20b 模型,我们需要手动安装该开发分支。

GPUStack 支持推理引擎多版本并行使用,用户可以在保留默认稳定版本的同时,灵活安装并使用自定义的 vLLM 版本,实现对新发布模型的推理。

进入 GPUStack 容器,创建一个独立的 Python 虚拟环境来安装 vllm 0.10.1+gptoss 版本:

bash 复制代码
docker exec -it gpustack bash

由于 vllm_0.10.1+gptoss 依赖 Python 3.12,而 GPUStack 镜像内置版本为 3.11,安装 Miniconda 用于提供 Python 3.12。到持久化目录下创建 Python 虚拟环境,这样在容器重建后仍然可以使用该环境:

bash 复制代码
# 在持久化路径下创建目录
mkdir -p /var/lib/gpustack/miniconda3
# 下载 Miniconda Miniconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O /var/lib/gpustack/miniconda3/miniconda.sh
# 安装 Miniconda 到持久化目录
bash /var/lib/gpustack/miniconda3/miniconda.sh -b -u -p /var/lib/gpustack/miniconda3
# 删除 Miniconda 安装包
rm /var/lib/gpustack/miniconda3/miniconda.sh
# 激活 base 环境
source /var/lib/gpustack/miniconda3/bin/activate
# 接受使用协议
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r

创建 Python 3.12 虚拟环境:

ini 复制代码
# 创建环境
conda create -n vllm_0.10.1+gptoss python=3.12 -y
# 激活环境
conda activate vllm_0.10.1+gptoss
# 检查 Python 版本
python -V

安装 vllm_0.10.1+gptoss

bash 复制代码
# 设置清华 PyPI 源
pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
# 安装 vLLM 0.10.1+gptoss
pip install --pre vllm==0.10.1+gptoss \
  --extra-index-url https://wheels.vllm.ai/gpt-oss/ \
  --extra-index-url https://download.pytorch.org/whl/nightly/cu128
# 将 vllm_0.10.1+gptoss 虚拟环境的 vllm 可执行文件链接到 /var/lib/gpustack/bin/ 下用于 GPUStack 调用
ln -sf /var/lib/gpustack/miniconda3/envs/vllm_0.10.1+gptoss/bin/vllm /var/lib/gpustack/bin/vllm_0.10.1+gptoss

离线环境可以参考以下命令,打包 wheel 包到离线环境安装(注意安装时如果有 wheel 包损坏,重新下载该 wheel 包到内网替换并安装):

arduino 复制代码
pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
​
pip download --pre vllm==0.10.1+gptoss  \
  --extra-index-url https://wheels.vllm.ai/gpt-oss/  \
  --extra-index-url https://download.pytorch.org/whl/nightly/cu128 \
  --dest ./vllm_0.10.1_gptoss
​
tar -zcvf vllm_0.10.1_gptoss.tar vllm_0.10.1_gptoss/

下载 GPT OSS 模型

在 GPUStack UI 点击模型文件菜单,选择添加模型文件,可以从 Hugging Face 或 ModelScope 联网下载模型文件。国内网络建议从 ModelScope 搜索并下载 gpt-oss-120bgpt-oss-20b 模型。

部署 GPT OSS 模型

确认模型下载完成后,点击已下载模型右侧的部署按钮,部署模型。

在部署页面,展开高级配置,设置模型类别为 LLM。并在后端版本中,填写自定义后端版本为 0.10.1+gptossGPUStack 会自动调用 /var/lib/gpustack/bin/vllm_0.10.1+gptoss 来运行模型:

并设置以下后端参数和环境变量:

后端参数:

--max-model-len=32768

环境变量:

VLLM_ATTENTION_BACKEND=FLASH_ATTN

VLLM_USE_FLASHINFER_SAMPLER=0

保存部署,等待模型启动完成,确认模型正常运行(Running):

然后可以在试验场测试模型:

GPT OSS 20B

GPT OSS 120B

EvalScope 压测对比 Ollama

EvalScope 是魔搭社区推出的模型评测与性能基准测试框架 ,简单易上手,此处使用 EvalScope 来对比 Ollama 和 GPUStack vLLM 后端运行的 GPT OSS 20B 与 GPT OSS 120B 的吞吐性能表现

使用 Conda 安装 EvalScope:

ini 复制代码
# 创建虚拟环境
conda create -n evalscope python=3.10 -y
# 激活虚拟环境
conda activate evalscope
# 安装 EvalScope
pip install -U 'evalscope[perf]' plotly gradio wandb

以下为压测记录,可以直接跳过到最后查看压测结果汇总分析。

GPT OSS 20B 单卡运行

10 请求 1并发

  • GPUStack vLLM
lua 复制代码
evalscope perf \
    --url "https://gpustack.xxx.xx/v1/chat/completions" \
    --api-key "gpustack_c07786062fb72316_ce5da3294ec87a708b25bda4082d894b" \
    --model gpt-oss-20b \
    --number 10 \
    --parallel 1 \
    --api openai \
    --dataset openqa \
    --stream
  • Ollama
lua 复制代码
evalscope perf \
    --url "http://192.168.0.1:11434/v1/chat/completions" \
    --model gpt-oss:20b \
    --number 10 \
    --parallel 1 \
    --api openai \
    --dataset openqa \
    --stream

100 请求 10并发

  • GPUStack vLLM
lua 复制代码
evalscope perf \
    --url "https://gpustack.xxx.xx/v1/chat/completions" \
    --api-key "gpustack_c07786062fb72316_ce5da3294ec87a708b25bda4082d894b" \
    --model gpt-oss-20b \
    --number 100 \
    --parallel 10 \
    --api openai \
    --dataset openqa \
    --stream
  • Ollama
lua 复制代码
evalscope perf \
    --url "http://192.168.0.1:11434/v1/chat/completions" \
    --model gpt-oss:20b \
    --number 100 \
    --parallel 10 \
    --api openai \
    --dataset openqa \
    --stream

500 请求 50并发

  • GPUStack vLLM
lua 复制代码
evalscope perf \
    --url "https://gpustack.xxx.xx/v1/chat/completions" \
    --api-key "gpustack_c07786062fb72316_ce5da3294ec87a708b25bda4082d894b" \
    --model gpt-oss-20b \
    --number 500 \
    --parallel 50 \
    --api openai \
    --dataset openqa \
    --stream
  • Ollama

由于 Ollama 单请求处理效率过低,为节约时间,减少请求数,并发保持不变

lua 复制代码
evalscope perf \
    --url "http://192.168.0.1:11434/v1/chat/completions" \
    --model gpt-oss:20b \
    --number 100 \
    --parallel 50 \
    --api openai \
    --dataset openqa \
    --stream

在 50 并发下,Ollama 出现 41% 的错误请求。

1000 请求 100并发

  • GPUStack vLLM
lua 复制代码
evalscope perf \
    --url "https://gpustack.xxx.xx/v1/chat/completions" \
    --api-key "gpustack_c07786062fb72316_ce5da3294ec87a708b25bda4082d894b" \
    --model gpt-oss-20b \
    --number 1000 \
    --parallel 100 \
    --api openai \
    --dataset openqa \
    --stream
  • Ollama

由于 Ollama 单请求处理效率过低,为节约时间,减少请求数,并发保持不变

lua 复制代码
evalscope perf \
    --url "http://192.168.0.1:11434/v1/chat/completions" \
    --model gpt-oss:20b \
    --number 100 \
    --parallel 100 \
    --api openai \
    --dataset openqa \
    --stream

在 100 并发下,Ollama 出现 71% 的错误请求。

GPT OSS 120B 4卡运行

10 请求 1并发

  • GPUStack vLLM
lua 复制代码
evalscope perf \
    --url "https://gpustack.xxx.xx/v1/chat/completions" \
    --api-key "gpustack_c07786062fb72316_ce5da3294ec87a708b25bda4082d894b" \
    --model gpt-oss-120b \
    --number 10 \
    --parallel 1 \
    --api openai \
    --dataset openqa \
    --stream
  • Ollama
lua 复制代码
evalscope perf \
    --url "https://gpustack.xxx.xx/v1/chat/completions" \
    --api-key "gpustack_c07786062fb72316_ce5da3294ec87a708b25bda4082d894b" \
    --model gpt-oss-120b \
    --number 10 \
    --parallel 1 \
    --api openai \
    --dataset openqa \
    --stream

100 请求 10并发

  • GPUStack vLLM
lua 复制代码
evalscope perf \
    --url "https://gpustack.xxx.xx/v1/chat/completions" \
    --api-key "gpustack_c07786062fb72316_ce5da3294ec87a708b25bda4082d894b" \
    --model gpt-oss-120b \
    --number 100 \
    --parallel 10 \
    --api openai \
    --dataset openqa \
    --stream
  • Ollama

由于 Ollama 单请求处理效率过低,为节约时间,减少请求数,并发不变。

lua 复制代码
evalscope perf \
    --url "https://gpustack.xxx.xx/v1/chat/completions" \
    --api-key "gpustack_c07786062fb72316_ce5da3294ec87a708b25bda4082d894b" \
    --model gpt-oss-120b \
    --number 10 \
    --parallel 10 \
    --api openai \
    --dataset openqa \
    --stream

500 请求 50并发

  • GPUStack vLLM
lua 复制代码
evalscope perf \
    --url "https://gpustack.xxx.xx/v1/chat/completions" \
    --api-key "gpustack_c07786062fb72316_ce5da3294ec87a708b25bda4082d894b" \
    --model gpt-oss-120b \
    --number 500 \
    --parallel 50 \
    --api openai \
    --dataset openqa \
    --stream
  • Ollama

由于 Ollama 单请求处理效率过低,为节约时间,减少请求数,并发不变。

lua 复制代码
evalscope perf \
    --url "https://gpustack.xxx.xx/v1/chat/completions" \
    --api-key "gpustack_c07786062fb72316_ce5da3294ec87a708b25bda4082d894b" \
    --model gpt-oss-120b \
    --number 50 \
    --parallel 50 \
    --api openai \
    --dataset openqa \
    --stream

在 50 并发下,Ollama 出现 58% 的错误请求。

1000 请求 100并发

  • GPUStack vLLM
lua 复制代码
evalscope perf \
    --url "https://gpustack.xxx.xx/v1/chat/completions" \
    --api-key "gpustack_c07786062fb72316_ce5da3294ec87a708b25bda4082d894b" \
    --model gpt-oss-120b \
    --number 1000 \
    --parallel 100 \
    --api openai \
    --dataset openqa \
    --stream
  • Ollama

由于 Ollama 单请求处理效率过低,为节约时间,减少请求数,并发不变。

lua 复制代码
evalscope perf \
    --url "https://gpustack.xxx.xx/v1/chat/completions" \
    --api-key "gpustack_c07786062fb72316_ce5da3294ec87a708b25bda4082d894b" \
    --model gpt-oss-120b \
    --number 100 \
    --parallel 100 \
    --api openai \
    --dataset openqa \
    --stream

在 100 并发下,Ollama 出现 78% 的错误请求。

将以上压测结果的吞吐表现汇总如下表:

模型 并发数 请求数 Ollama vLLM 提升百分比
GPT OSS 20B(单卡 H20) 1 10 82.9502 237.782 +186.67%
10 100 84.4222 1061.25 +1157.18%
50 500 85.0931 3373.54 +3863.93%
100 1000 84.0748 4620.06 +5393.28%
GPT OSS 120B(四卡 H20) 1 10 57.6082 224.418 +289.57%
10 100 57.8163 1266.32 +2089.10%
50 500 58.3971 3854.29 +6499.79%
100 1000 58.5685 5902.41 +9980.78%

以上测试结果表明,在大模型推理的场景下,硬件投入越高,选择像 vLLM 这样的高效推理引擎,其投资回报率(ROI)也就越高。 举个形象的例子:如果企业采购了价值 1000 万元的 GPU 硬件,假设使用 vLLM 可以将 GPU 使用效率提升到约 80%,相当于真正发挥出 800 万元的硬件价值。而若选择如 Ollama 这类桌面型工具,相同资源条件下,实际吞吐能力仅为 vLLM 的几分之一,能够释放的计算能力远低于 vLLM。对于重视成本效益与性能表现的企业来说,如何选型,自然不言而喻。

以上测试数据基于单实例运行环境。尽管 Ollama 单实例的资源占用看似远低于 vLLM,但由于其技术架构的限制,单实例一般也仅能支持个位数的并发连接。要想支撑更高的并发,必须通过部署多个实例来扩展能力。然而,多实例部署带来的最大问题就是显存资源的严重浪费。以部署 GPT OSS 20B 模型为例,单个 Ollama 实例加载约 14GB 的模型权重,假设每个实例支持 4 路并发,实现 100 路并发需部署 25 个实例,显存总占用超过 350GB。而采用 vLLM,仅需约 130GB 显存即可支撑相同并发,且具备更强的扩展能力。

综上,从资源利用率、扩展能力到总体成本控制,vLLM 在实际生产环境中均展现出显著优势,是面向企业级大模型推理部署的更优解。

加入社区

想要了解更多关于 GPUStack 的信息,可以访问我们的仓库地址:https://github.com/gpustack/gpustack。如果你对 GPUStack 有任何建议,欢迎提交 GitHub issue 。在体验 GPUStack 或提交 issue 之前,请在我们的 GitHub 仓库上点亮 Star ⭐️关注我们,也非常欢迎大家一起参与到这个开源项目中!

如果在使用过程中遇到任何问题,欢迎随时加入我们的 Discord 社区 :[ discord.gg/VXYJzuaqwD ],也可以扫码添加 GPUStack 小助手 联系加入 GPUStack 微信交流群,获得 GPUStack 团队的技术支持,或与社区爱好者共同探讨交流。

如果觉得对你有帮助,欢迎点赞转发关注

相关推荐
TeroBox2 小时前
GPT-5 API 请求参数调整,避坑指南(汇总)
openai·api·gpt-5·poixeai
算家计算3 小时前
GPT-5终于发布!网友评价分化,为什么AI升级越来越难让人惊艳?
人工智能·openai·资讯
win4r4 小时前
🚀Cursor CLI+GPT-5保姆级教程+编程能力测评!Cursor CLI零成本免费使用GPT-5!Claude Code的劲敌来了!从安装到实战演示
gpt·aigc·openai
jzy37114 小时前
京东开源王炸!JoyAgent-JDGenie 通用智能体一键部署指南,DeepSeek 大模型完美适配
后端·openai·ai编程
三花AI4 小时前
Ideogram API 重磅推出角色一致性功能,告别LoRA训练烦恼
openai
hogwarts5 小时前
MCP+LLM+Agent:测试工程师如何构建下一代智能测试基座?
aigc·openai
hogwarts5 小时前
2025大模型应用平台选型指南:测试工程师的智能化转型路线图
aigc·openai
hogwarts5 小时前
Playwright等待策略深度解析:告别sleep的自动化测试新时代
aigc·openai