1. 硬件
| CPU | GPU | memory | 硬盘 |
|---|---|---|---|
| 25 vCPU Intel® Xeon® Platinum 8470Q | INVIDIA RTX 5090 32GB | 90GB | 180GB |
2. 软件
| OS | CUDA | Python |
|---|---|---|
| Ubuntu 22.04 | 12.8 | 3.12 |
3. 部署
这里部署gpt-oss-20b的大模型。
首先安装uv,使用下面命令,注意需要确保可以访问github。
curl -LsSf https://astral.sh/uv/install.sh | sh
这里访问不到这个install.sh文件,我在本地电脑提前下载好,然后上传到服务器中。
安装完成之后,创建虚拟环境,使用uv命令创建。
uv venv --python 3.12 --seed
# 激活环境
.venv/bin/activate
安装依赖。我在使用官方给的下面的命令安装的时候会报错,关于找不到对应的torch版本的错误,所以后面我使用的不是下面的命令安装。
uv 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 \
--index-strategy unsafe-best-match
我最终使用的是下面的命令来安装,不会报错。
uv pip install "vllm[gpt-oss]"
这个命令是大模型给的,下面多给了几种方案,这里都记录下来。
# 1.先安装 torch
uv pip install --pre torch --index-url https://download.pytorch.org/whl/nightly/cu128
# 2. 然后安装 vllm
uv pip install vllm --extra-index-url https://wheels.vllm.ai/gpt-oss/
4. 下载模型
这里默认从huggingface中下载的,由于国内下载会比较困难,这里选择从modelscope中下载。
modelscope download --model openai-mirror/gpt-oss-20b --local_dir /root/autodl_tmp/models/openai/gpt-oss-20b
这里注意,我们还需要下载另外两个文件,否则在启动的时候会报错。
https://openaipublic.blob.core.windows.net/encodings/o200k_base.tiktoken
https://openaipublic.blob.core.windows.net/encodings/cl100k_base.tiktoken
下载上面的这两个文件放到encodings目录中。
mkdir /root/autodl_tmp/models/openai/gpt-oss-20b/encodings
5. 运行
安装和下载好文件后,就可以运行接口了。
vllm serve openai/gpt-oss-20b
如果我们直接这样运行,会联网去huggingface下载模型文件的,如果需要内网部署,使用已经存在的模型,就需要指定为绝对路径。
export TIKTOKEN_ENCODINGS_BASE="/root/autodl-tmp/models/openai/gpt-oss-20b/encodings" \
export TIKTOKEN_RS_CACHE_DIR="/root/autodl-tmp/models/openai/gpt-oss-20b/encodings" \
echo $TIKTOKEN_RS_CACHE_DIR && \
vllm serve /root/autodl_tmp/models/openai/gpt-oss-20b --tensor-prallel-size 1 --gpu-memory-utilization 0.8
注意1:如果有多张显卡,就只需修改--tensor-prallel-size的值,有几张显卡就修改为几。
然后--gpu-memory-utilization 0.8是控制显存占用的,跑这个参数的模型,至少需要16GB显存的显卡。
如果需要跑120B参数量的模型,至少需要60GB显存的显卡。
注意2:在内网中运行,一定要设置TIKTOKEN_ENCODINGS_BASE和TIKTOKEN_RS_CACHE_DIR,这两个文件可以访问下面的地址获取。
https://openaipublic.blob.core.windows.net/encodings/o200k_base.tiktoken
https://openaipublic.blob.core.windows.net/encodings/cl100k_base.tiktoken
将这两个文件放到上面创建的那个ecodings目录中,然后启动之前配置一下系统环境变量。
具体可以看下面的issues。
https://github.com/vllm-project/vllm/issues/22525#issuecomment-3172271363
6. 客户端访问
这个接口遵循openai的接口规范。
# !/usr/bin/env python
# _*_ coding utf-8 _*_
# @Time: 2026/3/23 1:53
# @Author: Luke Ewin
# @Blog: https://blog.lukeewin.top
import time
from openai import OpenAI
client = OpenAI(
api_key="EMPTY",
base_url="http://localhost:6006/v1",
timeout=3600
)
messages = [
{"role": "user", "content": "你给我讲一下睡前小故事吧"},
]
start = time.time()
response = client.chat.completions.create(
model="/root/autodl_tmp/models/openai/gpt-oss-20b",
messages=messages,
max_tokens=32768,
temperature=1.0,
top_p=1.0,
presence_penalty=2.0,
extra_body={
"top_k": 20,
"chat_template_kwargs": {"enable_thinking": False},
},
)
print(f"Response costs: {time.time() - start:.2f}s")
print(f"Generated text: {response.choices[0].message.content}")
需要注意这个model的值一定要填写启动接口的那个模型路径,也就是启动接口的时候用的是什么就填写什么,用的是模型id就填写模型id,用的是模型绝对路径,就填写模型的绝对路径。
7. 其它
国内模型文件镜像
有偿部署可微信联系lukeewin01,注意需要备注来意,否则不给通过。
Q.E.D.


