在昇腾 NPU 上部署 Llama 大模型:全流程实战与常见问题排查
本文分享了在昇腾 NPU 上部署测试 Llama-2-7B 大模型的全过程,提供踩坑经验。
为什么选择昇腾?
对于个人开发者或预算有限的团队来说,国外 GPU 价格高昂,Atlas 服务器动辄十几万。昇腾 NPU 凭借自主可控的达芬奇架构、完善的开源生态以及云端的免费测试资源,成为了一个极具吸引力的替代方案。通过 GitCode 等平台申请免费的昇腾 Notebook 实例,可以零成本验证模型部署流程。
环境准备:云端实例配置
创建云端实例是第一步,配置不当会导致后续运行缓慢或报错。建议按以下标准配置:
- 计算类型:必须选择 NPU,避免误选 CPU 或 GPU。
- 规格:推荐
NPU basic,包含 1*NPU 800T A2、32v CPU、64GB 内存,足以支撑 Llama-2-7B 运行。 - 镜像:务必选择预装好环境的镜像,如
euler2.9-py38-torch2.1.0-cann8.0-openmind0.6-notebook,这能省去手动安装 PyTorch 和 CANN 的麻烦。 - 存储:50G 免费存储足够容纳约 13GB 的模型文件。
环境验证:第一个关键坑
进入 Jupyter Notebook 界面后,不要急着跑模型,先验证 NPU 是否可用。很多新手会直接运行 torch.npu.is_available() 却遇到 AttributeError。
这是因为 torch_npu 是一个独立的插件,必须在导入 torch 后显式加载。
import torch
import torch_npu
print(torch.npu.is_available())
# 输出:True
确认返回 True 且有设备可见后,才能继续后续步骤。
依赖安装与模型下载
虽然镜像中已包含基础环境,但运行 Llama 仍需安装 transformers 库。建议使用国内镜像源加速下载:
pip install transformers accelerate -i https://pypi.tuna.tsinghua.edu.cn/simple
模型下载策略
Llama-2 官方仓库需要权限且国内访问不稳定。推荐使用开源社区维护的镜像版本,例如 NousResearch/Llama-2-7b-hf,无需申请权限且下载速度快。
设置环境变量以加速 HuggingFace 连接:
export HF_ENDPOINT=https://hf-mirror.com
核心代码实现
部署脚本的核心在于正确地将张量转移到 NPU 设备。注意,字典类型的输入不能直接调用 .npu() 方法,需使用 .to('npu:0')。
import torch
import torch_npu
from transformers import AutoModelForCausalLM, AutoTokenizer
import time
MODEL_NAME =
DEVICE =
()
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModelForCausalLM.from_pretrained(
MODEL_NAME,
torch_dtype=torch.float16,
low_cpu_mem_usage=
).to(DEVICE)
model.()
prompt =
inputs = tokenizer(prompt, return_tensors=).to(DEVICE)
start = time.time()
outputs = model.generate(**inputs, max_new_tokens=)
end = time.time()
text = tokenizer.decode(outputs[])
()
()
()


