RWKV 适配昇腾开源验证任务心得
RWKV适配昇腾开源验证任务心得
一、任务需求
首先看了一下任务计划书:https://bbs.huaweicloud.com/blogs/437830 ,主要目的是将 RWKV 项目适配至华为的 Ascend(昇腾)和 Kunpeng(鲲鹏)处理器,确保其在这些硬件平台上的高效运行,扩展 RWKV 模型的应用场景。即验证RWKV能不能在 Ascend(昇腾)和 Kunpeng(鲲鹏)处理器中运行。
二、开发过程
明确目的后开始熟悉模型,RWKV的github网址: https://github.com/BlinkDL/ChatRWKV 。把代码库中的ChatRWKV-main代码文件下载下来,这个代码文件是没有gradio接口的,所以还需要在https://github.com/Ceyase/ChatRWKV-WebUI将chat.py和src下面的model_run.py和utils.py文件下载后重命名为app.py、model.py和utils2.py后上传到ChatRWKV-main的v2和src下面,然后下载代码所需要的模型文件,在BlinkDL/rwkv-4-pile-1b5 · Hugging Face下载RWKV-4-Pile-1B5-EngChn-test4-20230115.pth等模型文件,然后将模型文件上传到代码ChatRWKV-main/model下。
1.鲲鹏CPU、OpenEuler 验证推理
(1)安装依赖
按照开源代码RWKV安装提示,安装相应的库。
(2)修改推理代码
先在鲲鹏cpu和欧拉操作系统下验证推理,在云堡垒机上或者弹性云服务器ECS上将下载好的代码上传,然后在app.py中,将
和
的模型文件位置修改为自己使用服务器上的模型文件位置,虽然源码用到了gradio接口,但是源码运行之后的结果是网址,本地运行可以直接点击网址跳转,但是在堡垒机上不行,所以需要将网址跳转修改为在终端显示结果,修改步骤如下:
将上面这段代码注释掉,将下面的代码取消注释并进行修改,
在下面代码前加入
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
这个地方要将1修改为0,因为使用1的话,会用到torch.jit.script,但是目前自动迁移和这个有冲突,所以需要将其设置为0。
三、结果
1验证截图
RWKV模型主要的通途包含文本生成、对话系统等,测试使用的模型文件主要是用来和机器人进行聊天,会获得对应的回答。
1.1 CPU推理
运行之后先选择语言,然后选择要使用的处理器,CPU推理就选择CPU,最后选择需要进行推理的模型。
推理结果为:
1.2 NPU推理
NPU和CPU推理流程一样,但是需要在运行前后查看一下NPU使用情况,运行程序前
运行程序后
运行时的选择除了处理器需要选择GPU外,其他选择都一样,这里选择GPU是因为进行自动迁移是从GPU往NPU上迁移,所以此时选择GPU就是使用NPU运行。
推理结果为:
- 点赞
- 收藏
- 关注作者
评论(0)