基于 RWKV 的 AI角色扮演 WebUI

这是一个使用 Gradio 制作的基于 RWKV 的 AI 角色扮演对话的 WebUI,7B参数int8量化下仅需要7.6GB显存即可完美运行。配合N卡最新驱动的显存内存融合,基本一个10XX系以上的N卡就能扮演一个不错的AI对象。也不知道是模型特点还是设定问题,AI总是在勾引用户做羞羞的事情。即使你电脑贼垃圾,甚至只有一个手机,也可以白嫖谷歌的 Google Colab,每个账号每天大概可以免费使用3~12小时。


??????白嫖 Google Colab 运行 RWKV

  1. 步骤1:注册一个谷歌账号,然后根据情况选择步骤
    • 你的账号 Google Drive剩余空间大于8GB,则跳到 步骤2
    • 你的账号 Google Drive剩余空间小于8GB,则跳到 步骤5
  2. 步骤2:点击这个链接 【rwkv_role_playing环境初始化】进入项目初始化代码。
    这段代码的目的是下载预转换为 fp16i8 的模型文件,web UI 的配置,角色人格,对话存档,并存入你的谷歌网盘,因为 Google Colab 一旦断开运行,并不会保存状态,所以需要把数据存在自己的谷歌网盘里。下次使用的时候才能继续上次的状态出来。
  3. 步骤3:运行项目初始化代码

    • 点击左上角的【连接】按钮,连接CPU或GPU,这里可能会问你使用什么运行时,选CPU或者GPU都可以啊,建议选CPU,节约GPU运行时。
    • 当你把鼠标放到灰色的代码块上去的时候,左侧会出现一个类似播放按钮的东西,点击它就可以运行这一部分代码。当按钮周围有环绕的虚线时说明代码正在运行中,运行完会在左侧出现一个对勾并写上运行时长,如下图所示。

    • 第二步点击运行后会弹出一个窗口让你授权连接你的谷歌网盘。
    • 第三步无脑点击运行即可。
    • 第四步请选择其中一个运行,选一个就行,不用都运行。这三个模型的区别就是:
      > Claude 模型:这个模型是使用shareClaude进行微调的,相对更擅长对话;
      > Novel 模型:使用大量的小说进行微调,更擅长对话时环境动作描写;
      > 原始CHNtuned模型,更加均衡。
  4. 运行项目

    • 点击这个链接 【运行项目】
    • 点击又上方的小三角将运行时改为 python3 + (T4)GPU

    • 无脑从 4-1 开始,依次点击运行按钮,运行代码到 4-6 ,当你看到下边这样的代码时,就说明项目已经好了

    • 点那个https://XXXXXXX.gradio.live链接,和你的赛博 AI 对象尽情畅玩吧。
  5. 如果你的 Google Drive 剩余空间小于 8GB ,请注意以下操作
    • 步骤 3-1 ~ 3-3 照常执行,步骤 3-4 不要执行
    • 步骤4-4内的代码改为如下内容,这个是拉取的Claude特化训练模型,如需其他模型可以参考步骤3-4内的代码自行更换。
    !curl -Lo model/RWKV-4-Claude-CHNtuned-7B-v1.pth  https://huggingface.co/tjsky/rwkv_mybackup/resolve/main/RWKV-claude-4-World-7B-20230805-ctx65k.pth-cuda-fp16i8.pth
    # 4-4.从huggingface中拉取模型文件
    

    Bash

    Copy

    • 保存角色数据,基本每个角色需要 50 ~ 60 MB的空间,视你角色设定长度的变化,复杂设定可能每个角色需要100MB以上,请确保你的 Google Drive 剩余空间足够。
    • 上述代码会每次运行时现下载 huggingface.co 上的模型,速度不好说,我自己体验从20分钟到5分钟都可能。尽量让代码从谷歌云盘里下,这样模型的下载速度非常稳定。几分钟就可以完成。
  6. 当你玩完了准备走的时候,先点击运行按钮,停止 4-6 的运行后,然后运行 4-7 ,保存角色数据和配置等到谷歌云盘。
  7. 部分注意点

– Google Colab 每天理论上最大可免费用12小时,但实际上嘛谷歌会根据自身的负载调控时长,目前AI不算太火,大约4小时后才会提示免费用户不可用,这个额度基本上也够你玩了,实在还想玩你可以再注册个谷歌账号重复以上步骤继续白嫖,你甚至可以加个代码在两个账号的谷歌盘之间同步角色数据和状态,无缝切换账号什么的。
– Google Colab 运行后不是你就可以不管了,谷歌大约1小时后会进行人机验证,确保你人在电脑前,所以记得时不时切到 Google Colab 页面看一眼。
– 免费额度快到的时候,谷歌会频发让你进行人机验证,这是一个快要强制下线的预兆,请尽快执行 4-7 部分代码保存数据。

本地运行 RWKV

硬件与软件准备

  • 随便一个 CPU,10XX系以上 Nvidia 显卡
  • 至少 16GB 的内存(最好有32GB内存,因为模型加载需要先占用内存)
  • 大于 15GB 的硬盘可用空间
  • 最好有 SSD(最开始要将模型读到内存中,使用 HDD 会经历一个漫长的启动过程)
  • 最好有个魔法上网工具,毕竟大部分代码与模型都在 github 和 huggingface上 。
    • 如果你的魔法上网工具有类似 TUN 模式,VPN 模式直接开启就好。
    • 如果你的魔法上网工具只给你了一个本地代理地址,比如 127.0.0.1:1080 ,可以安装一个叫做“Proxifier”的软件,在Proxy Server内添加127.0.0.1:1080,在Proxification Rules内添加
      一个新条目,Applications 写 python.exe;git-*.exe;git.exe; headless-git.exe;,Action选刚才设置的Proxy XXXX 127.0.0.1

正式开始部署

安装 Python 3.10.6 与 pip

其实3.8以上的就行,不过为了方便同时用stable-diffusion-webui,我选择了3.10.6这个版本

我这里采用直接系统内安装Python 3.10.6的方式
如果你会用Miniconda等python版本依赖控制工具,也可以用它们实现Python多版本切换,具体可以自己百度谷歌解决。

  1. 访问 Python3.10.6 下载页面
  2. 把页面拉到底,找到【Windows installer (64-bit)】点击下载

  3. 安装是注意,到这一步,需要如下图这样勾选 Add Python to PATH
     

    然后再点上边的 Install Now
    python

  4. 安装完成后,命令行里输入Python -V,如果返回Python 3.10.6那就是成功安装了。

  5. 命令行里输入 python -m pip install --upgrade pip安装升级pip到最新版。

安装 Git
  1. 访问 Git 下载页面

  2. 点击【Download for Windows】,【64-bit Git for Windows Setup】点击下载

  3. 一路下一步安装

  4. 命令行运行git --version,返回git version 2.XX.0.windows.1就是安装成功了。

安装 Git Large File Storage
  1. 点击 git-lfs.github.com 并单击“Dowdload”。

  2. 在计算机上,找到下载的文件。

  3. 双击文件 git-lfs-windows-3.X.X.exe , 打开此文件时,Windows 将运行安装程序向导以安装 Git LFS。

  4. 命令行运行git lfs install,返回Git LFS initialized.就是安装成功了。

安装 CUDA
  1. 命令行运行nvidia-smi,看下自己显卡支持的 CUDA版本
    (最好先升级以下显卡驱动,5月之后的的驱动支持了内存显存融合,对小显存显卡有提升)

  2. 接下来前往英伟达 CUDA 官网,下载对应版本。
    注意请下载,你对应的版本号最高的版本,比如我的是11.7的,那就下11.7.1(这里最后的.1意思是,11.7版本的1号升级版)

  3. 选你自己的操作系统版本,注意下个离线安装包【exe [local]】,在线安装的话,速度还是比较堪忧的。

下载 RWKV_Role_Playing

找一个你喜欢的目录,在资源管理器,地址栏里敲CMD,敲回车,启动命令提示行窗口,输入以下命令

# 下载项目源代码
git clone https://github.com/shengxia/RWKV_Role_Playing.git
# 切换到项目根目录
cd RWKV_Role_Playing
# 安装torch
pip install torch==2.0.1 --extra-index-url https://download.pytorch.org/whl/cu117 --upgrade
# 安装依赖
pip install -r requirements.txt

Bash

Copy

  • 他会在你选择的目录下生成 RWKV_Role_Playing 文件夹,放项目
  • 这东西本体+模型大概需要20GB空间
    整个路径中,不要有中文(比如“C:AI对话工具”),也不要有空格(比如“C:Program Files”)可以避免很多奇怪的问题。
  • 安装torch理论上使用1.13.1以上即可,目前最新应该是2.1.0
  • 安装torch命令最后的cu117请根据实际情况修改。目前应该最新是cu121

下载 RWKV 模型

点击这里下载模型,请使用RWKV-4-world系列CHNtuned模型,(如果使用参数量在1.5B及以下这样的模型,需要把策略改为cuda fp32或cpu fp32,否则会溢出。)
RWKV-claude-4-World-7B-65k 和 rwkv-7B-world-novel-128k 也不错。前边已经介绍过这两个模型

  • 原始 CHNtuned 模型,更加均衡。
  • Claude 模型:这个模型是使用 shareClaude 进行微调的,相对更擅长对话;
  • Novel 模型:使用大量的小说进行微调,更擅长对话时环境动作描写;
  • 如果你需要 INT8 量化后的模型(运行大概需要7.5GB显存)可以在这里下载到我已经转换好的

运行 RWKV 模型

  1. 在 RWKV_Role_Playing 文件夹内新建一个文本文件run.txt
  2. 在文件里写
python webui.py --model "model/RWKV-4-Claude-CHNtuned-7B-v1.pth" --strategy "cuda fp16i8"

Bash

Copy

其中的model/RWKV-4-Claude-CHNtuned-7B-v1.pth改成你模型存放位置

  1. 各种启动参数解释如下:
参数 解释
–port webui的端口
–model 要加载的模型路径
–strategy 模型加载的策略
–listen 加上这个参数就允许其他机器访问
–cuda_on 控制RWKV_CUDA_ON这个环境变量的,0-禁用,1-启用
–jit_on 控制RWKV_JIT_ON这个环境变量的,0-禁用,1-启用
–share 生成gradio链接
–lang 语言,zh-中文,en-英文
–autosave 是否自动保存,加上这个参数就自动保存

模型加载参数可以看这个图,注意目前因为N卡驱动已经自带显存内存融合了,使用 int8 参数(cuda fp16i8)运行,虽然省显存但是运算速度会下降。使用 fp16 参数运行,虽然部分模型被加载到内存读取速度慢了,但是 GPU 对 fp16 的运算速度远比 int8 下快,所以如果模型所需显存只是略微超过实际内存(比如模型实际需要 12G,显存 10G)不如用 fp16 加载运行。

  1. 保存文件后,将文件后缀名改成.bat(最后变成run.bat,不要给改成类似run.bat.txt了)
  2. 一些启动参数的例子

python webui.py --model "model/RWKV-4-Claude-CHNtuned-7B-v1.pth" --strategy "cuda fp16i8"
# int8量化加载模型,本地使用

Bash

Copy

python webui.py --model "model/RWKV-4-Claude-CHNtuned-7B-v1.pth" --strategy "cuda fp16i8" --listen --port 7899
# int8量化加载模型,连接0.0.0.0网卡,同局域网可访问,网页端口为机器IP:7899

Bash

Copy

python webui.py --model "model/RWKV-4-Claude-CHNtuned-7B-v1.pth" --cuda_on 1 --share --strategy "cuda fp16i8"
# cuda加速,int8量化加载模型,生成gradio链接

Bash

Copy

python webui.py --model F:gitRWKVmodelsRWKV-4-World-CHNtuned-7B-v1-20230709-ctx4096 --strategy "cuda fp16i8 *0+ -> cpu fp32 *1"
# 几乎全部用CPU运算,显存占用最小的一种方式了。

Bash

Copy

python webui.py --model F:gitRWKVmodelsRWKV-4-World-CHNtuned-7B-v1-20230709-ctx4096 --strategy "cpu fp32"
# 全部用CPU运算,大概需要电脑有32GB内存

Bash

Copy

  1. 以上示例的文件路径写法均为 win 下写法,如果在 Linux (WSL)里跑,请自行改一下,可以参照 Colab 运行里的代码。

开始使用基于 RWKV 的 AI角色扮演 WebUI

  1. 双击上一步的run.bat,等待程序运行,最后CMD窗口显示类似下边这样的代码时,就说明项目已经好了



    点那个https://XXXXXXX.gradio.live链接,或者http://127.0.0.1:7860,打开浏览器

  2. 先在右侧区域选择你需要的角色,然后点【载入角色】

  3. 开始聊天吧

    • 重新生成:让 AI 重新考虑对你的回复
    • 提词:让 AI 提示一下你该说什么
    • 清除上一条:清除上一轮对话,你可以重新输入你想对 AI 说的话
    • 重置角色:将 AI 角色重置到初始状态,重新开始。
    • 勾选替角色说:将AI最后的回复,修改为你输入的内容。可以修正AI偶尔出现的身份混乱,逻辑混乱问题。

RWKV 怎么调参

  1. 最小/最大回复长度:设置AI回复的最小/最大长度,可以强制AI长回复或短回复,不过设置太大太小AI都会开始乱说话。
  2. top_p:值越低,答案越准确而真实。更高的值鼓励更多样化的输出;
  3. top_k:值越低,答案越准确而真实。更高的值鼓励更多样化的输出。top_k 会先于 top_p 生效,即先根据 top_k 值确定所选 token 范围,然后根据 top_p 值在上述范围内,再确定最终所选 token 的范围。
  4. temperature:值越低,结果就越确定,因为总是选择概率最高的下一个词/token,拉高该值,其他可能的token的概率就会变大,随机性就越大,输出越多样化、越具创造性。
  5. Presence Penalty:值越大,AI越会避免重复话题,但也别太大,AI就会不停的试图开始新话题,一般不要超过0.5
  6. Frequency Penalty:值越大,AI越会避免使用重复的句子(可以让AI别总是复读,最后和最开始的内容)。
  7. 强制输出动作:强制AI对每次回复都带上动作心理环境等描写。

RWKV 怎么增加角色

在左上角切换到角色选项卡
 

基本一目了然
– 示例对话里你可以用<user>指代上边设置的你的名字
– 示例对话里你可以用<bot>指代上边设置的角色名字
– 大概有个5~6轮对话就行,不知道怎么写,可以从小说里抄嘛
– 角色性格可以下载一个Glow,然后到上面去找智能体,直接把它们的性格和对话抄过来用。
– 官方模型可能偶尔会因为善恶观思想钢印,拒绝继续话题,一般重新生成即可。Claude 和 Noval 模型就基本没任何限制了,你可以随便聊。
– 示例对话和开场白的格式请参照默认角色“小雪”的格式。文章附图里的这个不一定还是最新的格式。