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

GPT OSS私有部署教程及与Ollama性能对比

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

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

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

安装 GPUStack

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

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

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 控制台的初始登录密码:

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

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

image-20250806112828947

安装自定义 vLLM 版本

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

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

image-20250806111547696

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

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

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

docker exec -it gpustack bash

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

# 在持久化路径下创建目录
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 虚拟环境:

# 创建环境
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

# 设置清华 PyPI 源
pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
# 安装 vLLM 0.10.1+gptoss
pip install
在运行 `gpt-oss:20b` 模型时出现错误提示 `template 3 function currentDate not defined`,表明模型在执行某个模板时尝试调用了一个名为 `currentDate` 的函数,但该函数并未定义或未正确加载。以下是可能的原因和解决方法: 1. **模板配置问题** 错误信息中的 `template 3` 指的是模型在处理某个特定模板时出现问题。这可能是因为该模板依赖于某些未正确加载或缺失的函数定义。建议检查模型的模板文件,确认 `currentDate` 函数是否被正确引用或定义。如果该函数未被使用,可以尝试移除相关引用或补充定义。 2. **模型依赖的函数未正确加载** 某些模型在运行时会依赖外部定义的函数,例如 `currentDate` 可能用于生成时间戳。如果这些函数未在运行环境中定义,就会导致此类错误。可以通过以下方式解决: - 在调用模型之前,确保所有依赖的函数均已定义。 - 如果使用了插件或扩展功能,检查它们的加载状态和兼容性。 3. **Ollama 版本问题** Ollama 的某些版本可能存在对模板或函数支持的缺陷。如果确认模板和函数定义无误,建议更新 Ollama 到最新版本,以确保所有功能正常工作。 4. **模型文件损坏或不完整** 如果模型文件在下载或部署过程中出现损坏,也可能导致此类错误。建议重新下载并部署模型,确保文件完整性。 5. **环境配置问题** 如果在特定环境中运行模型(例如通过 `frp` 内网穿透连接远程服务器),可能需要检查环境变量、依赖库以及网络配置是否正确[^2]。 --- ### 示例代码:检查函数定义 如果 `currentDate` 是用户自定义函数,确保其定义如下: ```python from datetime import datetime def currentDate(): return datetime.now().strftime("%Y-%m-%d %H:%M:%S") ``` --- ### 相关问题 1. 如何检查和修复Ollama运行时的模板错误? 2. 在部署gpt-oss模型时,如何确保所有依赖函数正确加载? 3. Ollama运行模型时提示函数未定义,是否需要更新Ollama版本? 4. 如何验证模型文件的完整性? 5. 使用内网穿透工具连接远程服务器时,如何排查环境配置问题?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值