在昇腾 NPU 上运行 Llama 2 模型
面对高昂的 GPU 成本,华为昇腾(Ascend)NPU 凭借其自主可控的达芬奇架构和日益完善的软件生态,成为大模型部署的高性价比选择。本文记录了在昇腾 NPU 环境下从环境配置、模型部署到性能测试与优化的全过程,重点分析实际推理延迟与吞吐量表现。
环境搭建与验证
在云平台或本地部署时,确保计算资源正确识别是第一步。建议使用预装了 CANN 和 PyTorch 适配器的镜像,例如 euler2.9-py38-torch2.1.0-cann8.0-openmind0.6-notebook,可大幅减少手动配置时间。
实例启动后,需确认 NPU 可用。依次执行以下检查命令:
cat /etc/os-release
python3 --version
接着验证 PyTorch 及 torch_npu 插件版本:
import torch
print(f'PyTorch 版本:{torch.__version__}')
import torch_npu
print(f'torch_npu 版本:{torch_npu.__version__}')
注意:直接调用 torch.npu.is_available() 可能会报错,因为 torch_npu 需要显式导入才能注册后端。正确的验证方式是先 import torch_npu 再检查可用性。
模型部署与加载
安装必要的依赖库,国内用户建议使用镜像加速:
pip install transformers accelerate -i https://pypi.tuna.tsinghua.edu.cn/simple
由于 Meta 官方仓库访问受限,推荐使用社区维护的镜像版本如 NousResearch/Llama-2-7b-hf。创建 Python 脚本进行核心部署,关键代码如下:
import os
os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'
import torch
import torch_npu
from transformers import AutoModelForCausalLM, AutoTokenizer
import time
MODEL_NAME = "NousResearch/Llama-2-7b-hf"
DEVICE = "npu:0"
print("开始加载模型...")
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModelForCausalLM.from_pretrained(
MODEL_NAME,
torch_dtype=torch.float16,
low_cpu_mem_usage=True
).to(DEVICE)
model.eval()
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=)
()
()


