vLLM-Ascend 环境:联网打包 → 无网部署完整流程

第一阶段:联网机器 — 打包环境

前提:一台可联网且已安装好 vLLM-Ascend 环境的机器(与目标机 NPU/OS/CANN 版本一致)

1.1 确认源环境可用

conda activate vllm-ascend-env
python -c "from vllm import LLM; print('vLLM OK')"
npu-smi info   # 确认 NPU 正常

1.2 安装 conda-pack

conda install -c conda-forge conda-pack
# 或 pip install conda-pack

1.3 打包环境到本地路径

mkdir -p /root/private_data/env

conda pack -n vllm-ascend-env \
    -o /root/private_data/env/vllm-ascend-env.tar.gz \
    --ignore-missing-files \
    --compress-level=6

⚠️ --ignore-missing-files 防止因软链接/缺失文件导致打包失败;压缩级别 6 兼顾速度与体积。

1.4 传输到目标机

# 通过 scp / U盘 / NAS 等离线方式拷贝到目标机相同路径
scp /root/private_data/env/vllm-ascend-env.tar.gz root@<目标机IP>:/root/private_data/env/

第二阶段:无网目标机 — 部署环境

前提:目标机已安装 CANN 驱动 & 固件,但无法联网

2.1 确认压缩包就位

TAR_FILE="/root/private_data/env/vllm-ascend-env.tar.gz"
ls -lh "$TAR_FILE"   # 确认文件存在且大小合理(通常 5~20GB)

2.2 解压

EXTRACT_DIR="/root/private_data/env/vllm-ascend-env"
mkdir -p "$EXTRACT_DIR"
tar -xzf "$TAR_FILE" -C "$EXTRACT_DIR"

2.3 修复硬编码路径(conda-unpack)

# ✅ 必须用子 Shell 隔离,避免污染当前环境
(
    source "${EXTRACT_DIR}/bin/activate"
    conda-unpack
)

💡 这一步将包内所有 /original/path 替换为当前实际路径,是环境可用的关键。

2.4 创建软链接(让 conda 识别)

SYMLINK_PATH="/opt/conda/envs/vllm-ascend-env"
ln -sf "$EXTRACT_DIR" "$SYMLINK_PATH"

2.5 激活并验证

source "${SYMLINK_PATH}/bin/activate"

# 验证项
which python                                    # 应指向解压目录
python -c "import torch_npu; print(torch_npu.__version__)"
npu-smi info                                    # NPU 可见
python -c "from vllm import LLM; print('OK')"   # 首次可能需 1~5 分钟

第三阶段:运行 vLLM 推理

3.1 测试脚本 vllm_test.py

from vllm import LLM, SamplingParams

llm = LLM(
    model="/path/to/your/model",
    trust_remote_code=True,
    tensor_parallel_size=1,
)

sampling_params = SamplingParams(
    temperature=0.7,
    top_p=0.9,
    max_tokens=256,
)

outputs = llm.generate(["请介绍一下人工智能的发展历史。"], sampling_params)
for o in outputs:
    print(f"Response: {o.outputs[0].text}")

3.2 执行

source /opt/conda/envs/vllm-ascend-env/bin/activate
python vllm_test.py

📋 速查对照表

阶段 关键命令 注意事项
打包 conda pack -n xxx -o /root/private_data/env/xxx.tar.gz --ignore-missing-files 源机与目标机 CANN/OS 版本必须一致
传输 scp / U盘 / NAS 纯离线,无需 OSS
解压 tar -xzf xxx.tar.gz -C target_dir 确保磁盘空间 ≥ 30GB
修复路径 ( source activate && conda-unpack ) 必须子 Shell,否则 deactivate 报错
注册环境 ln -sf extract_dir /opt/conda/envs/name 目标父目录必须存在
激活 source .../bin/activate 不要用 conda activate
首次导入 from vllm import LLM 1~5 分钟属正常,非卡死

⚠️ 常见坑与解决

问题 原因 解决
conda deactivate 报错 conda init 用子 Shell 执行 conda-unpack,无需 deactivate
ModuleNotFoundError: torch_npu CANN 环境变量未加载 source /usr/local/Ascend/ascend-toolkit/set_env.sh
NPU 不可见 驱动/固件未装或版本不匹配 npu-smi info 检查,重装对应版本
第二次运行仍然慢 文件系统 I/O 瓶颈 将环境放到本地 SSD,避免远程挂载
Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐