【简单上手】服务器上部署兼容 OpenAI API 的 LLM 的 vLLM 方案

在服务器上部署兼容 OpenAI API 的 LLM 的 vLLM 方案

我们在使用 LLM 进行实验时,最开始都是调用商用 API 来获取 LLM 服务的,如果我们要本地部署 LLM,并且要兼容原先实验代码的 API 调用,则需要采取如兼容 OpenAI API 的 LLM 的本地部署方案,这里我选用 vLLM 方案实现。

采用 vLLM 方案的优势

vLLM 是伯克利大学开发的高性能推理引擎,通过 PagedAttention 技术显著减少显存占用,吞吐量比 Hugging Face Transformers 高 10-24 倍,并且原生提供 OpenAI 兼容 API,是目前生产环境的首选方案。

在 AutoDL 上的具体部署步骤

1. 创建实例并配置环境

AutoDL 平台已提供预装 vLLM 的社区镜像,可直接使用。登录 AutoDL 后,选择 RTX 4090 或 3090 实例,然后选择社区镜像 datawhalechina/self-llm/Qwen3:v1,该镜像预装了 Python 3.12、vLLM、modelscope 等必要依赖。 另外,建议在容器实例所属地区的文件存储处,进行初始化文件存储,并将后续模型下载到此处。这样后续在同地区下更换容器实例时,就不用重新下载。该文件存储在实例中的挂载目录为:/root/autodl-fs,后续步骤我们将下载的模型下载到该目录。

2. 下载模型

建议在无卡模式下开机来下载模型,因为下载模型需要花费较多时间,无卡模式开机下载会划算一些。我们通过 ModelScope 下载模型 Qwen 系列模型。在 JupyterLab 终端中执行:

bash 复制代码
# 安装 modelscope(已经安装)
pip install modelscope

# 下载模型(这里以 Qwen3-8B 为例,可替换为你需要的模型)
modelscope download --model Qwen/Qwen3-8B --local_dir /root/autodl-fs/models/Qwen/Qwen3-8B

3. 启动兼容 OpenAI 的 API 服务

bash 复制代码
# 启动 vLLM 服务器,暴露 OpenAI 兼容 API
VLLM_USE_MODELSCOPE=true vllm serve /root/autodl-fs/models/Qwen/Qwen3-8B \
  --served-model-name Qwen3-8B \
  --max_model_len 8192 \
  --host 0.0.0.0 \
  --port 8000

服务默认监听 http://0.0.0.0:8000,已兼容 OpenAI API。vLLM 支持 Chat Completions API (/v1/chat/completions)、Completions API (/v1/completions) 和 Models API (/v1/models)。

host 和 port 的区别

在部署 API 服务时,--host--port 这两个参数分工明确:

  • host(主机地址):决定服务"监听在哪个网络接口上"
  • port(端口号):决定服务"占用哪个数字通道"
用现实比喻理解

把服务器想象成一栋大楼:

  • Host 就是大楼的"地址"(决定只让楼内的人访问,还是让任何来找这栋楼的人都能进门)
  • Port 就是大楼里的"房间号"(不同服务使用不同房间,互不干扰)
详细解释------Host 常见的取值和含义
含义 谁能访问
127.0.0.1 / localhost 仅监听本机回环地址 只能在本机内部访问,外部无法连接
0.0.0.0 监听所有网络接口 能被同一网络中的任何设备访问(包括通过公网 IP 或隧道)
具体 IP(如 192.168.1.5 只监听该 IP 对应的网卡 只有通过该 IP 访问的请求才会被接受

在 AutoDL 等云服务器上部署时,几乎总是要用 --host 0.0.0.0,否则即使做了端口转发,外部也无法连接到容器内的 API。

详细解释------Port 的常见知识
  • 是一个 0 ~ 65535 的数字,通常使用 1024 ~ 49151 的范围
  • 每个端口同一时间只能被一个程序占用
  • 不同服务默认端口不同,例如:
    • HTTP 常用 80
    • vLLM 常设为 8000
    • Ollama 用 11434
核心区别
  • Host 管"范围" → 谁能找到这个服务
  • Port 管"入口" → 找到后从哪个门进来

示例命令:

bash 复制代码
vllm serve /path/to/model --host 0.0.0.0 --port 8000

含义: "在本机的所有网络接口上,开放 8000 端口,提供模型推理服务。"

同一个环境中,不能有两个服务同时占用同一个 host:port 组合,但可以通过改变端口在同台机器上启动多个服务(例如 8000、8001 各一个)。

4. 测试 API

注意,如果是在无卡模式下,下载模型后需要重新进入非无卡模式来测试和调用本地模型。

bash 复制代码
curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "Qwen3-8B",
    "messages": [
      {"role": "user", "content": "你好,请介绍一下你自己"}
    ]
  }'

5. 使用 OpenAI SDK 调用本地模型

Python 复制代码
from openai import OpenAI

# 设置 base_url 指向本地服务,api_key 可任意填写
client = OpenAI(
    base_url="http://localhost:8000/v1",
    api_key="sk-not-needed"
)

response = client.chat.completions.create(
    model="Qwen3-8B",
    messages=[{"role": "user", "content": "你好!"}]
)
print(response.choices[0].message.content)
相关推荐
钓了猫的鱼儿32 分钟前
基于深度学习+AI的城市人行道障碍物目标检测与预警系统(Python源码+数据集+UI可视化界面+YOLOv11训练结果)
人工智能·深度学习·目标检测
HackTorjan6 小时前
2026年5月29日:全球首个通用人工智能操作系统正式发布,开启人机协同新纪元
人工智能
刘大猫.6 小时前
智造短剧新引擎:火山引擎上线「火山剧创 1.0」,制作效率提升 80%
人工智能·ai·chatgpt·机器人·大模型·火山引擎·短剧新引擎
红尘散仙6 小时前
我把终端小说阅读器接上了 AI Agent:TRNovel 现在能用 skill 生成书源了
人工智能·后端·rust
雅菲奥朗6 小时前
企业级 AI 自动化|OpenClaw 龙虾实战与认证
运维·人工智能·自动化·openclaw
HIT_Weston6 小时前
99、【Agent】【OpenCode】task 工具提示词(Slash command)(一)
人工智能·agent·opencode
25 Hz6 小时前
Mind 爱好者时空表征刊 第24期 | 时间结构学习、空间对时间表征的补偿、事件内部的时间扭曲……
人工智能
心中有国也有家6 小时前
GE图引擎深度解析——CANN的计算图优化与执行引擎
人工智能·pytorch·python·学习·numpy
海兰7 小时前
【文字三国志:第一篇】天命重构,大语言模型(LLM)动态生成文言风格的叙事文本的文字游戏
人工智能·游戏·语言模型
cxr8287 小时前
高分子复合材料 AI 逆向设计合——验证闭环、决策优化与中试放大
人工智能·材料逆向设计合成