你提供的截图是 vLLM 0.17.1 版本的发布资产(Assets)列表,包含多个预编译的 wheel 文件(.whl)、源码包和压缩包。这些文件针对不同平台、架构和依赖环境进行了区分。下面我为你详细解释它们之间的区别:
📦 一、核心命名规则解析
wheel 文件名格式通常为:
<package>-<version>+<extra>-<python tag>-<abi tag>-<platform tag>.whl
在 vLLM 的例子中:
vllm-0.17.1→ 包名 + 版本号+cpu或+cu130→ 是否包含 CUDA 支持(CPU only / CUDA 13.0)cp38→ Python 3.8(兼容 cp38, cp39, cp310, cp311 等,但这里只提供了 cp38)abi3→ ABI 标签,表示与 Python ABI 兼容(通常用于 CPython 扩展)manylinux_2_35或manylinux_2_31→ Linux glibc 版本要求(越高越新,兼容性越差)aarch64或x86_64→ CPU 架构(ARM64 vs Intel/AMD x64)
🔍 二、逐个文件说明
✅ 1. CPU 版本(无 GPU 加速)
➤ vllm-0.17.1+cpu-cp38-abi3-manylinux_2_35_aarch64.whl
- 架构: ARM64 (如 Apple M系列芯片、AWS Graviton、树莓派等)
- glibc: manylinux_2_35(较新的 Linux 发行版,如 Ubuntu 22.04+, Fedora 36+)
- 大小: 31.4 MB
- 用途: 在没有 NVIDIA GPU 的 ARM 设备上运行 vLLM
➤ vllm-0.17.1+cpu-cp38-abi3-manylinux_2_35_x86_64.whl
- 架构: x86_64(主流 PC/服务器)
- glibc: manylinux_2_35
- 大小: 51.9 MB
- 用途: 在没有 NVIDIA GPU 的普通 Linux 服务器上运行
💡 注意:这两个是纯 CPU 版本,推理速度较慢,适合测试或小规模部署。
✅ 2. CUDA 13.0 版本(支持 NVIDIA GPU)
➤ vllm-0.17.1+cu130-cp38-abi3-manylinux_2_35_aarch64.whl
- 架构: ARM64
- CUDA: 13.0(需安装对应驱动和 cuDNN)
- glibc: manylinux_2_35
- 大小: 204 MB
- 用途: 在 ARM 架构 + NVIDIA GPU 上运行(较少见,如 Jetson Orin + 外部 GPU?不推荐)
➤ vllm-0.17.1+cu130-cp38-abi3-manylinux_2_35_x86_64.whl
- 架构: x86_64
- CUDA: 13.0
- glibc: manylinux_2_35
- 大小: 218 MB
- 用途: 主流选择!适用于大多数带 NVIDIA GPU 的 Linux 服务器(如 A100/H100/T4 等)
⚠️ 注意:你需要确保系统已安装:
- NVIDIA Driver ≥ 550.x(支持 CUDA 13.0)
- CUDA Toolkit 13.0
- cuDNN 8.x 或更高
✅ 3. 旧版 glibc 兼容版本(manylinux_2_31)
这些是为了兼容更老的 Linux 发行版(如 Ubuntu 20.04、CentOS 7/8 等),因为它们的 glibc 版本较低。
➤ vllm-0.17.1-cp38-abi3-manylinux_2_31_aarch64.whl
- 架构: ARM64
- glibc: manylinux_2_31(兼容 Ubuntu 20.04+, CentOS 8+)
- 大小: 367 MB
- 注意 : 没有
+cpu或+cu130前缀 → 这个版本默认包含 CUDA 支持?
❌ 实际上,从命名看,它缺少 +cuXXX 标记,可能是个"通用"构建,或者文档遗漏。但在实践中,如果没有 +cpu,通常意味着它包含 CUDA 支持 ------ 所以这个很可能是 CUDA 版本但针对老系统。
➤ vllm-0.17.1-cp38-abi3-manylinux_2_31_x86_64.whl
- 架构: x86_64
- glibc: manylinux_2_31
- 大小: 413 MB
- 用途: 在老旧 Linux 系统上使用 GPU 加速的 vLLM
🧩 为什么比 manylinux_2_35 大?因为它可能静态链接了更多库以保证兼容性。
✅ 4. 源码包 & 压缩包
➤ vllm-0.17.1.tar.gz
- 源代码压缩包,可用于手动编译安装
- 大小: 29.1 MB
- 适合开发者自定义构建或调试
➤ Source code (zip) / (tar.gz)
- GitHub 自动生成的源码快照,不含构建产物
- 不适合直接安装,仅用于查看代码或二次开发
三、关键对比总结表
| 文件名 | 架构 | CUDA? | glibc 要求 | 大小 | 适用场景 |
|---|---|---|---|---|---|
...+cpu-..._aarch64.whl |
ARM64 | ❌ | 2_35 | 31.4 MB | ARM 设备无 GPU |
...+cpu-..._x86_64.whl |
x86_64 | ❌ | 2_35 | 51.9 MB | 普通 Linux 无 GPU |
...+cu130-..._aarch64.whl |
ARM64 | ✅ 13.0 | 2_35 | 204 MB | ARM + GPU(罕见) |
...+cu130-..._x86_64.whl |
x86_64 | ✅ 13.0 | 2_35 | 218 MB | 主流推荐:x86 + GPU |
..._manylinux_2_31_aarch64.whl |
ARM64 | ✅(?) | 2_31 | 367 MB | 老系统 ARM + GPU |
..._manylinux_2_31_x86_64.whl |
x86_64 | ✅(?) | 2_31 | 413 MB | 老系统 x86 + GPU |
vllm-0.17.1.tar.gz |
- | - | - | 29.1 MB | 源码编译 |
📝 注:"✅(?)" 表示虽然没写
+cu130,但从上下文推断应含 CUDA 支持(否则不会这么大)。建议查阅官方文档确认。
🎯 四、如何选择?
✅ 如果你是普通用户(有 NVIDIA GPU):
→ 选:vllm-0.17.1+cu130-cp38-abi3-manylinux_2_35_x86_64.whl
✅ 如果你的系统是 Ubuntu 20.04 / CentOS 7/8:
→ 选:vllm-0.17.1-cp38-abi3-manylinux_2_31_x86_64.whl
✅ 如果你在 Mac M1/M2 或 Raspberry Pi 上跑 CPU 版:
→ 选:vllm-0.17.1+cpu-cp38-abi3-manylinux_2_35_aarch64.whl
✅ 如果你想自己编译或贡献代码:
→ 下载 vllm-0.17.1.tar.gz 或 Source code
五、注意事项
- Python 版本限制 :所有 wheel 都是
cp38,即只支持 Python 3.8。如果你用的是 3.9/3.10/3.11,需要等待其他版本或使用源码编译。 - CUDA 版本匹配:务必确保你的 NVIDIA 驱动和 CUDA Toolkit 与 wheel 中的 CUDA 版本一致(这里是 13.0)。
- manylinux 兼容性:如果你的系统太老(比如 CentOS 6),即使 manylinux_2_31 也可能无法运行,此时必须源码编译。
- 反应数:底部显示 "37 people reacted",其中 👍 33,🎉 12 ------ 表示社区对这个发布的认可度较高。
✅ 最佳实践建议
对于大多数生产环境:
bash
pip install vllm-0.17.1+cu130-cp38-abi3-manylinux_2_35_x86_64.whl
如果失败(因 glibc 太低):
bash
pip install vllm-0.17.1-cp38-abi3-manylinux_2_31_x86_64.whl
如果是开发或学习目的且无 GPU:
bash
pip install vllm-0.17.1+cpu-cp38-abi3-manylinux_2_35_x86_64.whl
如有具体系统环境(如 Ubuntu 22.04 + RTX 4090 + Python 3.10),可以告诉我,我会帮你精准推荐哪个文件最合适 😊
结论:可以,完全没问题。
系统要求写的是 Python: 3.9 -- 3.12,这是一个范围 。这意味着 3.9、3.10、3.11、3.12 任何一个版本都是官方支持的。
既然你的系统里已经完美安装了 Python 3.11 (通过 whereis python3.11 确认),你不需要强行安装 3.12。直接使用现有的 3.11 即可开始构建。
✅ 推荐方案:使用现有的 Python 3.11
你可以直接修改文档中的命令,将 3.12 替换为 3.11。
#### 方案 C:如果你使用系统自带 Python (不推荐用于生产,但可行)
如果你不想用 conda 或 uv,也可以直接用系统的 3.11 创建虚拟环境:
```bash
# 使用系统自带的 python3.11 创建虚拟环境
yum install -y python3-devel
/usr/bin/python3.11 -m venv /cloud/vllm/.venv
source /cloud/vllm/.venv/bin/activate
# 3. 安装构建依赖 (照抄文档)
source /cloud/vllm/.venv/bin/activate
pip install --upgrade pip
pip install "cmake>=3.26" wheel packaging ninja "setuptools-scm>=8" numpy
mkdir -p /cloud/vllm/vllm_source
git clone https://github.com/vllm-project/vllm.git vllm_source
cd /cloud/vllm/vllm_source
pip install -v -r requirements/cpu.txt --extra-index-url https://download.pytorch.org/whl/cpu
VLLM_TARGET_DEVICE=cpu python setup.py install
放心大胆地用 Python 3.11 吧!
####=========================================================================
编译完成后,你需要知道产物在哪里 、包含什么 ,以及如何迁移到无网的目标服务器。以下是详细指南:
1. 编译后的目录在哪?是什么文件?
当你运行 python setup.py install 成功后,并没有 一个单独的"可执行文件"或"压缩包"留在 build/ 目录下。
-
构建临时目录(可删除):
- 路径:
/cloud/vllm/vllm_source/build/ - 内容:编译过程中的中间文件(
.o对象文件、临时库)。编译成功后,这个目录可以安全删除,它不是运行所需的。
- 路径:
-
真正的安装位置(重要!):
setup.py install会将编译好的库直接安装到你当前的 Python 虚拟环境 中。- 路径:
/cloud/vllm/.venv/lib/python3.11/site-packages/vllm/ - 关键文件:
vllm/_C.cpython-...so(或类似名称的.so文件):这是核心编译产物,包含 CPU 推理加速代码。vllm/目录下的所有.py文件:Python 逻辑代码。- 依赖项:
torch,numpy,transformers等也都安装在.venv/lib/和.venv/bin/下。
结论 :你需要的"成品"就是整个虚拟环境文件夹 (/cloud/vllm/.venv)。
2. 目标运行服务器(无网)需要哪些环节?
由于目标服务器不能联网 ,你不能直接在目标机器上 pip install。你必须采用 "整机迁移" 或 "离线包迁移" 的方式。
✅ 推荐方案:直接打包整个虚拟环境(最简单、最稳妥)
因为编译涉及复杂的系统库依赖(如 glibc, libstdc++, oneDNN 等),直接复制整个环境可以避免版本不一致导致的报错。
前提条件:
- 源服务器和目标服务器的 操作系统版本 最好一致(例如都是 CentOS 7 或 openEuler 22.03)。
- CPU 架构 必须一致(都是 x86_64 或都是 ARM64)。
操作步骤:
第一步:在源服务器(已编译好的机器)上打包
bash
cd /cloud/vllm/
# 将整个虚拟环境打包为 tar.gz
tar -czf vllm_offline_env.tar.gz .venv
(如果模型权重文件也在该目录下且需要迁移,可以一起打包,否则只打包 .venv 即可)
第二步:传输到目标服务器
使用 scp 或 U 盘将 vllm_offline_env.tar.gz 复制到目标服务器的相同路径(例如 /cloud/vllm/)。
第三步:在目标服务器上解压
bash
cd /cloud/vllm/
tar -xzf vllm_offline_env.tar.gz
第四步:验证与运行
-
激活环境:
bashsource /cloud/vllm/.venv/bin/activate -
验证安装 :
运行一个简单的检查命令,确保核心库能加载:
bashpython -c "import vllm; print('vLLM version:', vllm.__version__)"如果输出版本号且无报错,说明迁移成功。
-
准备模型权重 :
由于无网,你需要提前在其他机器下载好模型权重(例如
Qwen2.5-7B-Instruct),然后传到目标服务器。- 假设模型放在
/data/models/Qwen2.5-7B。
- 假设模型放在
-
启动服务:
bash# 示例启动命令 (CPU 模式) vllm serve /data/models/Qwen2.5-7B \ --port 8000 \ --tensor-parallel-size 1 \ --trust-remote-code
⚠️ 备选方案:制作离线 Wheel 包(仅当环境差异大时使用)
如果源机器和目标机器系统版本不同(导致直接复制 .venv 可能因 glibc 版本不兼容而失败),你需要制作成 Python Wheel 包。
-
在源机器上构建 Wheel(而不是 install):
bash# 清理之前的 build rm -rf build/ # 构建 wheel 包,产物会在 dist/ 目录下 VLLM_TARGET_DEVICE=cpu python setup.py bdist_wheel产物位置 :
/cloud/vllm/vllm_source/dist/vllm-<版本>-cp311-...whl -
收集所有依赖的 Wheel 包 :
你需要在一个有网 的机器上,下载该虚拟环境中所有包的
.whl文件:bashpip download -r requirements.txt -d ./wheelhouse # 并将刚才编译好的 vllm whl 也放入 wheelhouse cp dist/*.whl ./wheelhouse/ -
迁移与安装 :
将
wheelhouse文件夹传到目标机器,然后离线安装:bashpip install --no-index --find-links=./wheelhouse vllm(注意:这种方法要求目标机器已经安装了兼容的系统级依赖库,如
gcc-runtime,libnuma等,否则仍可能报错)
������ 总结清单(给运维/部署人员)
| 步骤 | 操作 | 备注 |
|---|---|---|
| 1. 确认架构 | 检查源机和目标机是否均为 x86_64 (或均 aarch64) |
uname -m |
| 2. 打包 | tar -czf vllm_env.tar.gz .venv |
在源机器执行 |
| 3. 传输 | scp vllm_env.tar.gz user@target_ip:/cloud/vllm/ |
或通过物理介质 |
| 4. 解压 | tar -xzf vllm_env.tar.gz |
在目标机器执行 |
| 5. 模型 | 提前下载好模型权重文件并传输到目标机 | 需单独下载 .safetensors 或 .bin 文件 |
| 6. 运行 | source .venv/bin/activate vllm serve <模型路径> ... |
确保端口未被占用 |
建议直接使用"推荐方案"(打包整个 .venv),这是对于无网环境最不容易出错的方式,只要操作系统内核版本不是相差太大(例如都是较新的 Linux),通常都能直接运行。