RWKV 适配昇腾开源验证任务心得

举报
yd_258621122 发表于 2024/11/21 17:15:39 2024/11/21
【摘要】 RWKV适配昇腾开源验证任务心得 一、任务需求 首先看了一下任务计划书:https://bbs.huaweicloud.com/blogs/437830 ,主要目的是将 RWKV 项目适配至华为的 Ascend(昇腾)和 Kunpeng(鲲鹏)处理器,确保其在这些硬件平台上的高效运行,扩展 RWKV 模型的应用场景。即验证RWKV能不能在 Ascend(昇腾)和 Kunpeng(鲲鹏)处理器...

RWKV适配昇腾开源验证任务心得

一、任务需求

首先看了一下任务计划书:https://bbs.huaweicloud.com/blogs/437830 主要目的是将 RWKV 项目适配至华为的 Ascend(昇腾)和 Kunpeng(鲲鹏)处理器,确保其在这些硬件平台上的高效运行,扩展 RWKV 模型的应用场景。即验证RWKV能不能在 Ascend(昇腾)和 Kunpeng(鲲鹏)处理器中运行。

 

二、开发过程

明确目的后开始熟悉模型,RWKVgithub网址: https://github.com/BlinkDL/ChatRWKV 。把代码库中的ChatRWKV-main代码文件下载下来,这个代码文件是没有gradio接口的,所以还需要在https://github.com/Ceyase/ChatRWKV-WebUIchat.pysrc下面的model_run.pyutils.py文件下载后重命名为app.pymodel.pyutils2.py后上传到ChatRWKV-mainv2src下面,然后下载代码所需要的模型文件,在BlinkDL/rwkv-4-pile-1b5 · Hugging Face下载RWKV-4-Pile-1B5-EngChn-test4-20230115.pth等模型文件,然后将模型文件上传到代码ChatRWKV-main/model下。

 

1.鲲鹏CPUOpenEuler 验证推理

1)安装依赖

按照开源代码RWKV安装提示,安装相应的库。

2)修改推理代码

先在鲲鹏cpu和欧拉操作系统下验证推理,在云堡垒机上或者弹性云服务器ECS上将下载好的代码上传,然后在app.py中,将


1.jpg


2.jpg


的模型文件位置修改为自己使用服务器上的模型文件位置,虽然源码用到了gradio接口,但是源码运行之后的结果是网址,本地运行可以直接点击网址跳转,但是在堡垒机上不行,所以需要将网址跳转修改为在终端显示结果,修改步骤如下:

3.jpg

将上面这段代码注释掉,将下面的代码取消注释并进行修改,

4.jpg

在下面代码前加入

state=gr.State(local_state)

turbostats=gr.State([])

并将on_message(msg)修改为on_message(msg,state.value,turbostats.value)

此时所有的修改已完成,cpu会在程序运行时会跳出模式选择,选择cpu方式运行即可。

 

2.NPU验证推理

1)安装依赖包

进行NPU推理只能在云堡垒机上进行。首先查看云堡垒机上已安装的CANN的版本和python版本,然后根据版本安装配套的torch_npu等,在https://www.hiascend.com/document/detail/zh/Pytorch/60RC3/configandinstg/instg/insg_0001.html,代码和权重和cpu一样的操作,然后安装一些必要的依赖。

注:numpy版本建议安装1.23左右的,不要安装2.0及以上的,会有兼容问题。

2)修改推理代码

然后使用自动迁移在app.py中加入

import torch

import torch_npu

from torch_npu.contrib import transfer_to_npu

5.jpg

这个地方要将1修改为0,因为使用1的话,会用到torch.jit.script,但是目前自动迁移和这个有冲突,所以需要将其设置为0

 

三、结果

1验证截图

RWKV模型主要的通途包含文本生成、对话系统等,测试使用的模型文件主要是用来和机器人进行聊天,会获得对应的回答。

1.1 CPU推理

运行之后先选择语言,然后选择要使用的处理器,CPU推理就选择CPU,最后选择需要进行推理的模型。

cpu1.jpg


推理结果为:

cpu2.jpg


1.2 NPU推理

NPUCPU推理流程一样,但是需要在运行前后查看一下NPU使用情况,运行程序前

npu1.jpg

运行程序后

npu2.jpg

运行时的选择除了处理器需要选择GPU外,其他选择都一样,这里选择GPU是因为进行自动迁移是从GPUNPU上迁移,所以此时选择GPU就是使用NPU运行。

推理结果为:

npu3.jpg



 

 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。