技术背景
昇腾是华为自研的 AI 计算芯片,采用达芬奇架构,提供从训练到推理的全场景覆盖。其核心优势在于全栈自研和自主可控,已在金融、能源等关键场景规模化落地。
本次实践聚焦于在昇腾 NPU 上部署 Mistral-7B-Instruct-v0.2 大语言模型,对比原生部署与 vLLM Ascend 优化两种方案的性能差异,为实际生产环境选型提供参考。
环境准备
1. 云资源与系统配置
使用支持昇腾 910B 的云端实例,操作系统为 EulerOS 2.9。关键组件版本如下:
| 组件 | 版本 | 说明 |
|---|---|---|
| Python | 3.8 | 基础运行环境 |
| PyTorch | 2.1.0 | 深度学习框架 |
| CANN | 8.0 | 昇腾计算架构 |
| torch_npu | 2.1.0.post3 | PyTorch-昇腾适配插件 |
启动后进入终端验证 NPU 可用性:
python -c "import torch; import torch_npu; print(f'PyTorch: {torch.__version__}'); print(f'torch_npu: {torch_npu.__version__}'); print(f'NPU available: {torch.npu.is_available()}')"
预期输出应显示 NPU available: True。
2. 加速模型下载
为避免网络波动影响下载效率,建议配置 Hugging Face 国内镜像:
export HF_ENDPOINT=https://hf-mirror.com
方案一:原生部署(transformers + torch_npu)
1. 依赖安装
在昇腾 NPU 上运行模型,需搭建三层推理环境:模型层(Hugging Face)、框架层(PyTorch + accelerate)、硬件层(CANN)。
pip install transformers accelerate --upgrade
2. 模型加载与推理
核心逻辑是通过 device_map="npu:0" 自动将模型迁移至 NPU,并使用 FP16 精度节省显存。
import torch
import torch_npu
from transformers import AutoModelForCausalLM, AutoTokenizer
model_path = "./models/Mistral-7B-Instruct-v0.2"
# 加载模型
model = AutoModelForCausalLM.from_pretrained(
model_path,
torch_dtype=torch.float16,
device_map=
)
tokenizer = AutoTokenizer.from_pretrained(model_path)
model.()
prompt =
inputs = tokenizer(prompt, return_tensors=).to()
torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=,
do_sample=,
temperature=
)
response = tokenizer.decode(outputs[], skip_special_tokens=)
(response)


