LLM实战(三)——昇腾300i duo推理卡(NPU)大模型推理记录

npu推理环境配置:https://ascend.github.io/docs/sources/ascend/quick_install.html
llama-factory适配的NPU说明:https://llamafactory.readthedocs.io/zh-cn/latest/advanced/npu_inference.html
一些CANN命令:
与cuda的对应关系

# 查看NPU信息
npu-smi info = nvidia-smi
# 查看NPU当前情况(更新时间间隔为1秒,原地刷新):
watch -n 1 npu-smi info = watch -n 1 nvidia-smi
# 查看NPU当前情况(更新时间间隔为1秒,会保留之前的历史)
npu-smi info -l 1 = nvidia-smi -l 1

一、环境配置

  • 两张300i duo卡(官方显存每张96G),每张卡由两个芯片组成,每个芯片显存大约44G;
  • 驱动版本信息:25.0.rc1.1
  • 固件版本信息:
    Version=7.7.0.1.231
    firmware_version=1.0
    package_version=25.0.rc1.1
    compatible_version_drv=[23.0.rc2,23.0.rc2.],[23.0.rc3,23.0.rc3.],[23.0.0,23.0.0.],[24.0,24.0.],[24.1,24.1.],[25.0,25.0.]
  • CANN版本:8.0.RC1;
  • 算子包版本:8.0.RC1。

1、查看HwHiAiUser用户是否存在:

id HwHiAiUser

不存在则:

sudo groupadd HwHiAiUser
sudo useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser -s /bin/bash

然后将当前用户添加到HwHiAiUser group中(存在则直接运行该命令):

sudo usermod -aG HwHiAiUser $USER

之后需要安装驱动npu-driver、固件npu-firmware。
安装完成驱动后,使用npu-smi info命令即可验证是否安装成功。
2、安装CANN+算子包:
(1)安装python环境依赖:
安装Miniforge:
下载.sh文件:https://mirror.nju.edu.cn/github-release/conda-forge/miniforge/LatestRelease/
然后执行:

bash Miniforge3-25.3.0-3-Linux-aarch64.sh # 根据自己下载的版本替换文件名

创建conda环境后,在环境下pip安装环境依赖即可;
(2)安装CANN

# 下载需要的版本
wget "https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/CANN/CANN 8.0.RC1/Ascend-cann-toolkit_8.0.RC1_linux-aarch64.run"
# 执行bash命令安装
bash Ascend-cann-toolkit_8.0.RC1_linux-aarch64.run --full

配置环境变量:

source ~/Ascend/ascend-toolkit/set_env.sh #~/根据自己的真实路径进行替换,后面的路径基本都是固定的


上述方式需要每次打开新的终端都执行一次,可以直接修改用户配置文件,当前用户永久生效。

# 打开当前用户的配置文件
vi ~/.bashrc
# 在文件末尾加入:
source ~/Ascend/ascend-toolkit/set_env.sh
# 保存文件后,使配置立即生效:
source ~/.bashrc


(3)安装算子包

# 下载与CANN对应的算子包版本
wget "https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/CANN/CANN 8.0.RC1/Ascend-cann-kernels-310p_8.0.RC1_linux.run"
# 执行bash命令安装
bash Ascend-cann-kernels-310p_8.0.RC1_linux.run --install

二、使用transformers进行模型推理

1、具体方式

与使用GPU相比,需要改以下几点:

  • 除了需要安装并导入torch模块,还需要torch_npu,import torch, torch_npu
  • 指定设别device为npu,device = torch.device("npu" if torch.npu.is_available() else "cpu")
  • 模型成功后,显式加载到NPU上,model.to(device)
  • 指定多张卡,使用环境变量:ASCEND_RT_VISIBLE_DEVICES=0,1
  • 指定了多张卡没有起作用,且最终模型加载到了NPU上,计算在CPU上进行的。

2、遇见的一些报错:

报错一:
ImportError: libhccl.so: cannot open shared object file: No such file or directory. Please check that the cann package is installed. Please run 'source set_env.sh' in the CANN installation path.
原因:CANN环境变量未正确配置或 CANN 未完全安装。
解决:确保CANN安装成功后,配置环境变量:

source ~/Ascend/ascend-toolkit/set_env.sh # CANN的安装路径

报错二:
RuntimeError: Expected one of cpu, cuda, ipu, xpu, mkldnn, opengl, opencl, ideep, hip, ve, fpga, maia, xla, lazy, vulkan, mps, meta, hpu, mtia, privateuseone device type at start of device string: npu
原因:
使用transformers加载模型时,指定的device=‘npu’,但是没有安装torch_npu相关模块。
解决:
注意torch_npu相关版本。

安装torch_npu
安装torchvision
需要注意torchvision与torch的版本对应关系(https://kkgithub.com/pytorch/vision),如:
pip install torchvision==0.16.0
pip install torch==2.1.0
pip install torch_npu==2.1.0 

报错三:
ModuleNotFoundError: Could not import module 'PreTrainedModel'. Are this object's requirements defined correctly?
原因:transformer版本不匹配导致
解决:
注意transfromers相关版本。

降低transformers版本,4.53.2—>4.51.0

报错四:
RuntimeError: Expected all tensors to be on the same device. Expected NPU tensor, please check whether the input tensor device is correct.
报错前的提醒:
/home/wzb/miniforge3/envs/llama_factory_cqf/lib/python3.10/site-packages/transformers/generation/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值