在完全离线的环境中从源码安装 vLLM,核心思路是在一台联网机器上准备好所有材料(源码 + 依赖包),然后转移到目标机器上进行编译和安装。整个过程可以分为两个阶段。

第一阶段:在联网环境中准备离线安装包

你需要先在有网络的环境中,下载 vLLM 的源码和所有必要的 Python 依赖包。

  1. 下载 vLLM 源码
    从 GitHub 克隆 vLLM 仓库。

    git clone https://github.com/vllm-project/vllm.git
    cd vllm
    # 可选:切换到特定分支或标签,例如 main 分支或 v0.6.0
    # git checkout main
  2. 准备依赖包下载环境
    为了确保下载的依赖与目标服务器兼容,建议在 Python 版本与目标服务器一致的虚拟环境中进行操作。

    # 创建一个新的虚拟环境(Python 版本应与目标服务器一致,如 3.10)
    python3 -m venv vllm_offline_env
    source vllm_offline_env/bin/activate
  3. 下载所有依赖包
    使用 pip download 命令,将 vLLM 及其全部依赖包下载到指定目录(例如 vllm_packages)。pip 会自动解析 setup.py 或 pyproject.toml 中声明的所有依赖。

    # 创建存放依赖包的目录
    mkdir vllm_packages
    
    # 下载 vLLM 的所有依赖(不包含 vLLM 自身)
    # 这里假设你最终要在目标服务器上安装的 vLLM 版本就是当前源码的版本
    pip download -d vllm_packages -r requirements/common.txt -r requirements/cuda.txt

    特别注意:针对你的 CUDA 12.4 环境,请确保下载了匹配的 PyTorch 版本。如果上述命令下载的 PyTorch 版本不对,你可以手动下载指定 CUDA 版本的 PyTorch wheel 文件放入 vllm_packages 目录。例如,访问 PyTorch 官方历史版本页面,找到适合你 Python 版本和 CUDA 12.4 的 torch-2.5.1+cu124-*.whl 文件进行下载。

  4. 打包材料
    将整个 vllm 源码目录和下载好的 vllm_packages 依赖包目录一起打包,然后传输到离线的目标服务器上。

    cd ..
    tar -czf vllm_offline_build.tar.gz vllm vllm_packages

    然后通过 U 盘、scp 等方式将 vllm_offline_build.tar.gz 传输到目标服务器。

第二阶段:在离线目标服务器上编译安装

在目标服务器上,你将有网络的机器上准备好的材料解压,并进行编译安装。

  1. 解压材料并进入目录

    tar -xzf vllm_offline_build.tar.gz
    cd vllm
  2. 创建并激活虚拟环境(强烈推荐)
    使用与联网环境相同版本的 Python 创建虚拟环境。

    python3 -m venv vllm_env
    source vllm_env/bin/activate
  3. 安装核心依赖(离线模式)
    首先,使用离线模式安装我们之前准备好的所有依赖包。--no-index 告诉 pip 不要访问 PyPI,--find-links 则指定从本地目录查找 wheel 文件。

    pip install --no-index --find-links=../vllm_packages -r requirements/common.txt -r requirements/cuda.txt
  4. 关键步骤:声明使用本地 PyTorch
    由于你的目标服务器是离线的,且我们已经手动安装了 PyTorch,需要确保 vLLM 的构建过程使用当前环境中的 PyTorch,而不是尝试去下载。vLLM 提供了一个脚本可以帮我们完成这个设置。

    python use_existing_torch.py
  5. 编译并安装 vLLM
    最后一步,执行安装命令。关键在于使用 --no-build-isolation 参数,这会强制 pip 在构建时使用当前虚拟环境(已经包含我们离线安装好的所有依赖)中的包,而不是创建一个新的隔离环境去下载,从而确保整个构建过程完全离线。

    # 使用 --no-build-isolation 确保编译过程不联网
    pip install -v --no-build-isolation -e .
    • -e 代表可编辑模式,如果你想修改代码会很有用。如果不需要,可以去掉。

    • -v 会输出详细的编译日志,方便排查问题。

验证安装

安装完成后,运行一个简单的 Python 命令来验证 vLLM 是否可以正常导入。

python -c "import vllm; print(vllm.__version__)"

说明:上面来自deepseek.本人基本按照这个步骤。由于没有完全按照这个步骤走了一些弯路,比如没有在其他机器上提前下载whl包。导致离线机器需要哪个下载哪个。导致whl 版本依赖会冲突。不得不手动指定common.txt 中 依赖的版本。 由于没有尝试 离线 pip download -d vllm_packages -r requirements/common.txt -r requirements/cuda.txt。 不知道是否也会有类似问题。

Logo

免费领 100 小时云算力,进群参与显卡、AI PC 幸运抽奖

更多推荐