vLLM-Ascend 环境:联网打包 → 无网部署完整流程
·
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,避免远程挂载 |
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐


所有评论(0)