modelscope适配昇腾NPU

注意

我只做了raner,raner-50cls,corom这三个模型的适配,不能保证其他模型同样好使。

我的环境信息

NPU:  Atlas 300I Pro

Modelsope: 1.9.4(最好要使用这个版本呀,因为后面要改一下源码)

python: 3.8

torch: 2.0.1

内核以及系统版本:

有条件的可以升级一下内核到5.5或者以上,不然的话后面会出现警告(部分特性不支持)。我是没有条件升级的,不过目前模型的功能正常使用。

驱动

安装昇腾的驱动也是一个折磨的过程,主要是资料太少了,安装过程中的问题不太好找到解决办法。

确定环境信息

首先我们要清楚自己的环境信息,也就是你的npu的型号:

lspci |grep -i 'Processing accelerators'

通过上面命令我们可以知道,我们机器上有两个npu。 我们可以通过d500确定npu的型号(这里我没有找到官方的转换渠道,而是百度了一下,如果你有更好的方式,帮忙给留个言)

下载驱动

我们在下面这个网站找合适的驱动和cann,这个网站我也是找了好久。

https://www.hiascend.com/hardware/firmware-drivers/community?product=2&model=15&cann=7.0.0.alpha001&driver=1.0.20.alpha

 下载的时候注意cpu架构,软件包格式可以选择run格式,组件选择npu。

cann的版本要和你的环境对应一下,尤其是torch的版本,可以去这个网站查一下:

pytorch: Ascend PyTorch adapter

选好后一般会有两个文件,一个是驱动,一个是固件:

安装驱动

安装流程是,先安装驱动,在安装固件

chmod +x *.run 

## 安装驱动
# 先进行check
./xx.run --check

# 然后进行安装
./xx.run --full

## 安装固件
# 先进行check
./xx.run --check

# 然后进行安装
./xx.run --full

官方的安装流程可以参考一下:

安装驱动 - Atlas 300I Pro 推理卡 5.1.RC2 NPU驱动和固件安装指南 06 - 华为

安装完后执行一下,npu-smi info, 出现下图这样就说明安装正确了:

安装Ascend-cann-toolkit

这一步可以先不做,如果后面出现相关报错了,或者你的驱动目录(一般是/usr/local/Ascend这个目录)中没有ascend-toolkit目录,你可以做下这一步。

首先下载toolkit包

(如果时间富裕的话,这些包都安装一下,如果想偷懒的话就安装 toolkit这个包就行了)

# 安装
chmod +x xxx-toolkit-xx.run
# 运行
./xxx-toolkit-xx.run --install
# 如果报错的话,可以加上 --force参数,或者使用其他版本
应用环境部署

首先你得有一个正常的modelscope的环境,这是前提呀!!!,如果没有的话请先准备好,再往后执行。

安装python依赖
# 安装 decorator-5.1.1-py3-none-any.whl

# 安装torch_npu
版本要结合 torch/cann的版本
https://gitee.com/ascend/pytorch#pytorch%E4%B8%8Epython%E7%89%88%E6%9C%AC%E9%85%8D%E5%A5%97%E8%A1%A8
 修改modelscope

代码仓库:

modelscope_for_ascend: modelscope 适配昇腾的NPU。 目前能运行的模型是raner,raner-50cls,corom,其他模型可以尝试一下,有问题大家一起解决。

找到你的python环境的site-packages, 将你的modelscope目录备份下,然后替换为仓库里的modelscope。

使用
不使用容器

执行如下脚本之前,要执行一下:source /usr/local/Ascend/ascend-toolkit/set_env.sh

from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
import torch_npu



if __name__ == '__main__':
    device = "npu:1"
    torch_npu.npu.set_device("npu:1")
    ner_pipeline = pipeline(Tasks.named_entity_recognition,
                            'damo/nlp_raner_named-entity-recognition_chinese-base-ecom',  device_map=device)
    result = ner_pipeline('他继续与貝塞斯達遊戲工作室在接下来辐射4游戏。')
    print(result)
使用容器

首先要安装一个ascend-docker-runtime:

https://github.com/Ascend/ascend-docker-runtime/tags

然后再运行容器的指令中添加如下参数:

-e LD_LOBRARY_PATH=/usr/local/Ascend/driver/lib64/driver:/usr/local/Ascend/driver/lib64/common:/usr/local/Ascend/driver/lib64/ \
--cap-add=SYS_PTRACE --security-opt seccomp=unconfined \
--device=/dev/davinci4 --device=/dev/davinci5 \
--device=/dev/davinci6 --device=/dev/davinci7 \
--device=/dev/davinci_manager \
--device=/dev/devmm_svm \
--device=/dev/hisi_hdc \
-v /usr/local/Ascend:/usr/local/Ascend \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v /usr/local/dcmi:/usr/local/dcmi \

进入容器,首先执行一下: source /usr/local/Ascend/ascend-toolkit/set_env.sh

然后运行python脚本即可。

问题交流

 QQ 614809646

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值