昇腾 NPU 实战指南:部署与推理 CodeLlama
随着大模型技术在软件开发领域的深入应用,越来越多的开发者开始尝试在本地或云端环境部署代码生成模型。华为昇腾(Ascend)计算产业随着 CANN 软件栈的不断成熟,已成为运行各类开源 LLM 的重要算力底座。
本文将结合云端 Notebook 提供的在线开发环境,讲解如何在昇腾 NPU 环境中完成从依赖配置、模型加载到代码生成的完整流程。通过结构化的流程讲解与可操作的示例代码,引导你在昇腾生态中顺利完成 CodeLlama 的部署与运行。
1. 环境准备
进入云端 Notebook 后,第一件事不是急着写代码,而是检查底层的 NPU 状态和软件栈版本。打开 Terminal,输入以下命令确认芯片健康及显存占用情况:
# 查看 NPU 状态
npu-smi info
![NPU 状态检查输出]
从输出结果中我们能够明确看到版本号,以及功耗和温度等信息,确保 NPU 处于正常状态。
接下来进行基础环境检查:
查看系统版本信息:
cat /etc/os-release
![系统版本信息]
检查 Python 环境:
python3 --version
python -c "import torch; print('PyTorch 版本:', torch.__version__)"
python -c "import torch_npu; print('torch_npu 版本:', torch_npu.__version__)"
![Python 环境检查]
当基础环境准备就绪后,参考 CANN 官网快速入门资料,安装必要的依赖库:
pip3 install attrs cython 'numpy>=1.19.2,<=1.24.0' decorator sympy cffi pyyaml pathlib2 psutil protobuf==3.20.0 scipy requests absl-py --user
![依赖安装完成]
2. 模型选择与加载
本次实战选用 CodeLlama 7B-Instruct。它参数量适中,既能体现推理性能,又不会因为显存不足导致无法运行,非常适合用来做 NPU 性能实测。
加载 Tokenizer
为了将输入文本转换为模型可处理的 token,首先加载 tokenizer:
from transformers import AutoTokenizer
model_name = "code-llama-7b-instruct"
tokenizer = AutoTokenizer.from_pretrained(model_name)
加载模型到 NPU
将模型加载到昇腾 NPU,并设置 FP16 精度以降低显存占用。device_map="auto" 会自动把模型分配到可用的 NPU 上,同时 FP16 精度可以在保证计算精度的前提下降低显存使用。
from transformers import AutoModelForCausalLM
import torch
model = AutoModelForCausalLM.from_pretrained(
model_name,
device_map="auto",
torch_dtype=torch.float16
)


