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/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/94808.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/94808.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【原创】锐捷AM5532宿舍AP接口状态智能巡检实战:Python脚本+Excel报表+QQ自动推送,某高校落地案例

⚡ 项目已稳定运行 180+ 天,累计巡检 14 万接口,邮件告警 0 漏报 📊 CSDN 质量分 5.0 标准:代码 + 图表 + 可落地 + 可复制, 欢迎收藏、点赞、评论三连! 一、背景 某 高校学生宿舍采用锐捷 RG-AM5532 系列交换机下挂无线 AP,高峰期 2.4 万终端并发。 网络中心痛点: …

用户、组和目录的磁盘配额

一、XFS_quota限制用户和组的容量(block)与文件数量(inode);限制block就限制了用户可以使用的磁盘容量,限制inode就可以限制用户新建的文件数量限制某一目录的最大磁盘配额(directory project&a…

[GESP202506 五级] 最大公因数

题目描述 对于两个正整数 a,ba,ba,b,他们的最大公因数记为 gcd⁡(a,b)\gcd(a,b)gcd(a,b)。对于 k>3k > 3k>3 个正整数 c1,c2,…,ckc_1,c_2,\dots,c_kc1​,c2​,…,ck​,他们的最大公因数为: gcd⁡(c1,c2,…,ck)gcd⁡(gcd⁡(c1,c2,……

实现一个进程池(精讲)

目录 写进程池前的理论扫盲 进程池的实现 写进程池前的理论扫盲 父进程创建子进程,父子俩都看见同一片资源,这片资源被俩进程利用,用来通信,这片资源就是管道,如图所示,能很好地诠释管道。 那么什么是进程…

【tips】css模仿矢量图透明背景

就像棋盘格background-image: linear-gradient(45deg, #f0f0f0 25%, transparent 25%), linear-gradient(-45deg, #f0f0f0 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #f0f0f0 75%), linear-gradient(-45deg, transparent 75%, #f0f0f0 75%);background-…

visual studio 历史版本安装

visual studio 历史版本安装 链接:Visual Studio 版本路线图 说明:该页面提供历史版本的发布说明及下载链接(需滚动至页面底部查找相关版本)。例如,2022 版本可能包含 17.0 至 17.14 等子版本,用户可根据需…

微软推出“愤怒计划“:利用AI工具实现恶意软件自主分类

微软周二宣布推出一款能够自主分析并分类软件的人工智能(AI)代理系统,旨在提升恶意软件检测能力。这款基于大语言模型(LLM)的自主恶意软件分类系统目前仍处于原型阶段,被微软内部代号命名为"愤怒计划&…

SOLIDWORKS Electrical:实现真正意义上的机电协同设计

随着市场的发展,企业面临两个方面的挑战:从业务和市场方面来看,为了在竞争中取得更大优势,需要更高质量的产品,较低的成本并缩短产品上市周期;从设计和技术方面来看,产品的集成度越来越高&#…

MySql_忘记了root密码怎么办

《MySql_忘记了root密码怎么办》在忘记root密码的时候,可以按以下步骤处理(以windows为例)。_1) 关闭正在运行的MySQL服务。_2) 打开DOS窗口,转到mysql\bin目录。_3) 输入mysqld –skip-grant-tables 回车。–skip-grant-tables 的…

wstool和catkin_tools工具介绍

好的,我们来详细介绍一下 python3-wstool 和 python3-catkin-tools 这两个在 ROS (Robot Operating System) 开发中非常重要的工具,以及它们之间的关系。 首先,python3- 这个前缀表示这些是针对 Python 3 的软件包版本,这在现代 R…

吴恩达 深度学习笔记

最近在看吴恩达深度学习系列课程,简单做一个基本框架笔记。 如感兴趣或了解更多内容,推荐看原课程 以前也做过一些与机器学习和深度学习有关的笔记,过分重复的就一笔带过了。 01 第一门课 神经网络和深度学习 1.1 第一周:深度学习…

2025数字马力一面面经(社)

2025数字马力一面面经(社) 日常自我介绍js数据类型有哪些(报完菜名后简单分析了一下使用引用类型)谈谈对const、var、let的理解(变量提升、let和const的主要区别、使用const命名引用类型的时可以对引用类型进行操作&am…

PyQt 中 pyqtSignal 的使用

目录 基本用法 示例代码 关键特性 常见用途 一、信号的定义规则 二、完整用法步骤 1. 导入必要模块 2. 定义带信号的类 3. 定义接收信号的槽函数 4. 连接信号与槽 5. 发射信号 6. 断开连接(可选) 三、高级特性 1. 跨线程通信 2. 信号连接方式 3. 信号与匿名函数 4. 信号转发 …

使用Python验证常见的50个正则表达式

什么是正则表达式?正则表达式(Regular Expression)通常被用来检索、替换那些符合某个模式(规则)的文本。此处的Regular即是规则、规律的意思,Regular Expression即“描述某种规则的表达式”之意。本文收集了一些常见的正则表达式用…

Redis是单线程性能还高的原因

Redis是单线程Redis单线程是指Redis的网络IO和键值对读写是由一个线程完成的,其他功能还是使用多线程执行Redis主干业务使用单线程的原因Redis本质就是一个大的共享资源,共享资源是需要对其进行并发控制的,即使增加了线程,大部分线程也是在等待互斥锁,并行变串行,而且还需要进行…

若依前后端分离版学习笔记(七)—— Mybatis,分页,数据源的配置及使用

一 Mybatis 1、Maven依赖 在ruoyi父项目的pom文件中有一个分页插件的依赖 <!-- pagehelper 分页插件 --> <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version&…

灌区信息化智能管理系统解决方案

一、方案背景 灌区作为农业灌溉的重要基础设施&#xff0c;承担着保障粮食安全和促进农业可持续发展的关键作用。然而&#xff0c;传统灌区管理方式普遍存在信息孤岛、数据滞后、调度不精准等问题&#xff0c;导致水资源浪费和管理效率低下。在此背景下&#xff0c;灌区信息化智…

软件包管理、缓存、自定义 YUM 源

1. 软件包管理是啥 你可以把软件包管理器理解成 Linux 的“应用商店 安装工人”&#xff1a; 应用商店&#xff1a;帮你找到软件&#xff08;包&#xff09;安装工人&#xff1a;帮你下载安装、配置、升级、卸载管理账本&#xff1a;记录系统里都安装了啥、版本号是多少、依赖…

Pthon 本质详解

理解 Python 的本质&#xff0c;不能仅仅停留在“它是一门编程语言”这个层面&#xff0c;而要深入其设计哲学、核心机制、以及它在编程世界中所扮演的角色。 可以把 Python 的本质概括为一句话&#xff1a;Python 的本质是一种以“简洁优雅、易于读写”为核心设计哲学&#xf…

在Word文档中用键盘直接移动(复制)内容

如何快速在Word文档中剪切或复制内容到本文档的其他位置&#xff1f;不用剪切或复制&#xff0c;再粘贴&#xff0c;只需要先选中内容&#xff0c;然后按下F2&#xff08;ShiftF2&#xff09;剪切&#xff08;复制&#xff09;内容&#xff0c;再把光标放到目标位置按下回车键就…