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
英文地址,請注明出處:http://en.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;再把光標放到目標位置按下回車鍵就…