引言
面对高昂的 GPU 成本,许多团队在部署大模型时都在寻找高性价比方案。华为昇腾(Ascend)NPU 凭借自主可控的达芬奇架构和日益完善的软件生态,成为了一个值得关注的选择。本文记录在云环境上完成从配置、部署到性能测试与优化的全过程,分享一些真实的踩坑经验。
环境搭建与验证
云平台实例创建时,计算类型务必选择 NPU。规格方面,1 张 Ascend 910B(32vCPU, 64GB 内存)是运行 Llama-2-7B 的甜点配置。镜像选择也很关键,建议直接选用预装了 CANN 和 PyTorch 适配器的版本,例如 euler2.9-py38-torch2.1.0-cann8.0-openmind0.6-notebook,能省去大量手动配置时间。
实例启动后,首先确认 NPU 可用。在终端执行以下命令检查环境与插件状态:
# 检查系统与 Python 版本
cat /etc/os-release
python3 --version
# 检查 PyTorch 及 torch_npu
python -c "import torch; print(f'PyTorch 版本:{torch.__version__}')"
python -c "import torch_npu; print(f'torch_npu 版本:{torch_npu.__version__}')"
注意:如果未安装,需先升级 pip 再安装 torch-npu。看到版本号输出说明正常。
常见坑点:直接运行 torch.npu.is_available() 可能会报错 AttributeError。这是因为 torch_npu 是一个独立插件,必须显式导入后才能注册后端。正确的验证方式是:
python -c "import torch; import torch_npu; print(torch.npu.is_available())"
输出 True 即表示环境就绪。
模型部署与推理
环境搞定后,开始加载模型。运行 Llama 2 需要安装 transformers 和 accelerate 库。国内网络环境下,建议使用清华源加速下载:
pip install transformers accelerate -i https://pypi.tuna.tsinghua.edu.cn/simple
关于模型下载:Meta 官方仓库访问受限且速度慢,社区镜像如 NousResearch/Llama-2-7b-hf 无需权限且稳定。同时,在代码中设置环境变量使用 HuggingFace 国内镜像地址,避免超时:
import os
os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'
import torch
import torch_npu # 切记!必须在任何 NPU 操作之前导入
from transformers import AutoModelForCausalLM, AutoTokenizer
import time
MODEL_NAME = "NousResearch/Llama-2-7b-hf"
DEVICE = "npu:0"
()
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModelForCausalLM.from_pretrained(
MODEL_NAME,
torch_dtype=torch.float16,
low_cpu_mem_usage=
)
()
model = model.to(DEVICE)
model.()
prompt =
inputs = tokenizer(prompt, return_tensors=).to(DEVICE)
torch.no_grad():
start_time = time.time()
outputs = model.generate(**inputs, max_new_tokens=)
end_time = time.time()
generated_text = tokenizer.decode(outputs[], skip_special_tokens=)
()
()


