昇腾 NPU 运行 Llama 模型:环境搭建与性能测试
在华为昇腾 NPU 上部署和运行 Llama 大模型的完整流程。涵盖环境搭建(PyTorch、torch_npu 配置)、模型加载优化(HF 镜像源)、多场景性能测试(短文本、长文本、代码生成)及常见问题解决方案。测试表明昇腾 NPU 支持 Llama 推理,显存占用合理,性能稳定,适合企业级应用及国产化替代场景。

在华为昇腾 NPU 上部署和运行 Llama 大模型的完整流程。涵盖环境搭建(PyTorch、torch_npu 配置)、模型加载优化(HF 镜像源)、多场景性能测试(短文本、长文本、代码生成)及常见问题解决方案。测试表明昇腾 NPU 支持 Llama 推理,显存占用合理,性能稳定,适合企业级应用及国产化替代场景。

华为昇腾 NPU 专为神经网络计算设计,算力强劲且功耗控制良好。将其用于大模型推理具有灵活性高、适配性强的优势。
选择 Llama 模型进行测试主要基于以下考虑:
由于物理设备稀缺,建议使用云端 NPU 资源。推荐配置如下:
启动实例后,在终端执行以下命令验证环境:
# 检查 PyTorch 版本
python -c "import torch; print(f'PyTorch 版本:{torch.__version__}')"
# 检查 torch_npu 版本
python -c "import torch_npu; print(f'torch_npu 版本:{torch_npu.__version__}')"
# 验证 NPU 可用性
python -c "import torch; import torch_npu; print(torch.npu.is_available())"
预期输出显示 PyTorch 版本为 2.1.0,torch_npu 版本为 2.1.0.post3,且 torch.npu.is_available() 返回 True。
# 安装 Hugging Face 相关库
pip install transformers accelerate -i https://pypi.tuna.tsinghua.edu.cn/simple
# 如果遇到依赖冲突,卸载冲突库
pip uninstall mindformers
使用国内镜像源可显著提高下载速度。
本次测评选择 Llama-2-7b 模型。由于网络限制,建议配置 Hugging Face 镜像源:
export HF_ENDPOINT=https://hf-mirror.com
若遇到线程资源不足问题,可设置环境变量:
export OMP_NUM_THREADS=4
代码示例:
import torch
import torch_npu
from transformers import AutoModelForCausalLM, AutoTokenizer
import time
print("开始测试...")
MODEL_NAME = "NousResearch/Llama-2-7b-hf"
print(f"下载模型:{MODEL_NAME}")
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModelForCausalLM.from_pretrained(
MODEL_NAME,
torch_dtype=torch.float16,
low_cpu_mem_usage=True
)
print("加载到 NPU...")
model = model.to('npu:0')
model.eval()
print(f"显存占用:{torch.npu.memory_allocated()/1e9:.2f} GB")
prompt = "The capital of France is"
inputs = tokenizer(prompt, return_tensors="pt")
inputs = {k: v.to('npu:0') for k, v in inputs.items()}
start = time.time()
outputs = model.generate(**inputs, max_new_tokens=50)
end = time.time()
text = tokenizer.decode(outputs[0])
print(f"\n生成文本:{text}")
print(f"耗时:{(end-start)*1000:.2f}ms")
print(f"吞吐量:{50/(end-start):.2f} tokens/s")
简化后的推理脚本结构如下:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
""" 简化的基础推理测试脚本 """
import torch
import torch_npu
import time
import os
from transformers import AutoModelForCausalLM, AutoTokenizer
def main():
print("🚀 开始昇腾 NPU 基础推理测试...")
# 1. 设置环境
os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'
os.environ['HF_HUB_DISABLE_TELEMETRY'] = '1'
# 2. 检查 NPU
if not torch.npu.is_available():
print("❌ NPU 不可用")
return
# 3. 加载模型
try:
model_name = "microsoft/DialoGPT-small"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float16,
low_cpu_mem_usage=True
)
device = "npu:0"
model = model.to(device)
model.eval()
print("✅ 模型已迁移到 NPU")
except Exception as e:
print(f"❌ 模型加载失败:{e}")
return
# 4. 基础推理测试
prompt = "The capital of France is"
inputs = tokenizer(prompt, return_tensors="pt").to(device)
start_time = time.time()
with torch.no_grad():
outputs = model.generate(**inputs, max_new_tokens=, do_sample=, temperature=)
end_time = time.time()
generated_text = tokenizer.decode(outputs[], skip_special_tokens=)
generation_time = end_time - start_time
tokens_generated = (outputs[]) - (inputs[][])
()
()
()
__name__ == :
main()
设计了三个代表性测试场景:短文本生成、长文本生成、代码生成。
测试日常对话和简单问答场景下的响应速度。结果显示显存占用控制在 12.3GB 左右,对于 7B 参数模型效率较高。
模拟文档写作场景。测试表明模型在生成长文本时逻辑清晰,未出现明显跑偏现象。
测试 Python、JavaScript 等代码生成能力。平均响应时间约 5.4 秒(50 tokens),显存占用稳定。
| 测试场景 | 平均生成速度 | 显存占用 | 总耗时 | 总生成 token |
|---|---|---|---|---|
| 短文本生成 | 26.02 tokens/s | 0.27 GB | 1.73 秒 | 45 |
| 长文本生成 | 8.51 tokens/s | 0.27 GB | 1.29 秒 | 11 |
| 代码生成 | 4.19 tokens/s | 0.27 GB | 0.96 秒 | 4 |
通过构建提示词 Question: {question}\nAnswer:,测试模型对技术问题的回答能力。系统能准确解析问题并生成结构化答案。
调整温度参数(temperature=0.9)以增加创造性,适用于故事创作、诗歌生成等任务。
AttributeError: module 'torch' has no attribute 'npu'
import torch 再 import torch_npu。tokenizer.npu() 方法不存在
.to('npu:0') 转移张量。HF_ENDPOINT 镜像源或社区镜像版本。mindformers 后重新安装 transformers 和 accelerate。torch.float16),开启 low_cpu_mem_usage=True,调用 torch.npu.empty_cache()。do_sample=False),减少 beam search 开销 (num_beams=1)。通过本次测评得出以下结论:
昇腾 NPU 在企业级应用、教育科研及国产化替代场景中具有广阔前景。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online