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_BASETIKTOKEN_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.


热爱生活,热爱程序