这是一个使用 Gradio 制作的基于 RWKV 的 AI 角色扮演对话的 WebUI,7B参数int8量化下仅需要7.6GB显存即可完美运行。配合N卡最新驱动的显存内存融合,基本一个10XX系以上的N卡就能扮演一个不错的AI对象。也不知道是模型特点还是设定问题,AI总是在勾引用户做羞羞的事情。即使你电脑贼垃圾,甚至只有一个手机,也可以白嫖谷歌的 Google Colab,每个账号每天大概可以免费使用3~12小时。
??????白嫖 Google Colab 运行 RWKV
- 步骤1:注册一个谷歌账号,然后根据情况选择步骤
- 你的账号 Google Drive剩余空间大于8GB,则跳到 步骤2
- 你的账号 Google Drive剩余空间小于8GB,则跳到 步骤5
- 步骤2:点击这个链接 【rwkv_role_playing环境初始化】进入项目初始化代码。
这段代码的目的是下载预转换为 fp16i8 的模型文件,web UI 的配置,角色人格,对话存档,并存入你的谷歌网盘,因为 Google Colab 一旦断开运行,并不会保存状态,所以需要把数据存在自己的谷歌网盘里。下次使用的时候才能继续上次的状态出来。 -
步骤3:运行项目初始化代码
- 点击左上角的【连接】按钮,连接CPU或GPU,这里可能会问你使用什么运行时,选CPU或者GPU都可以啊,建议选CPU,节约GPU运行时。
- 当你把鼠标放到灰色的代码块上去的时候,左侧会出现一个类似播放按钮的东西,点击它就可以运行这一部分代码。当按钮周围有环绕的虚线时说明代码正在运行中,运行完会在左侧出现一个对勾并写上运行时长,如下图所示。
- 第二步点击运行后会弹出一个窗口让你授权连接你的谷歌网盘。
- 第三步无脑点击运行即可。
- 第四步请选择其中一个运行,选一个就行,不用都运行。这三个模型的区别就是:
> Claude 模型:这个模型是使用shareClaude进行微调的,相对更擅长对话;
> Novel 模型:使用大量的小说进行微调,更擅长对话时环境动作描写;
> 原始CHNtuned模型,更加均衡。
- 运行项目
- 点击这个链接 【运行项目】
- 点击又上方的小三角将运行时改为 python3 + (T4)GPU
- 无脑从 4-1 开始,依次点击运行按钮,运行代码到 4-6 ,当你看到下边这样的代码时,就说明项目已经好了
- 点那个
https://XXXXXXX.gradio.live 链接,和你的赛博 AI 对象尽情畅玩吧。
- 如果你的 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分钟都可能。尽量让代码从谷歌云盘里下,这样模型的下载速度非常稳定。几分钟就可以完成。
- 当你玩完了准备走的时候,先点击运行按钮,停止 4-6 的运行后,然后运行 4-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多版本切换,具体可以自己百度谷歌解决。
- 访问 Python3.10.6 下载页面
-
把页面拉到底,找到【Windows installer (64-bit)】点击下载
-
安装是注意,到这一步,需要如下图这样勾选 Add Python to PATH
然后再点上边的 Install Now
python -
安装完成后,命令行里输入
Python -V ,如果返回Python 3.10.6 那就是成功安装了。 -
命令行里输入
python -m pip install --upgrade pip 安装升级pip到最新版。
安装 Git
-
访问 Git 下载页面
-
点击【Download for Windows】,【64-bit Git for Windows Setup】点击下载
-
一路下一步安装
-
命令行运行
git --version ,返回git version 2.XX.0.windows.1 就是安装成功了。
安装 Git Large File Storage
-
点击 git-lfs.github.com 并单击“Dowdload”。
-
在计算机上,找到下载的文件。
-
双击文件 git-lfs-windows-3.X.X.exe , 打开此文件时,Windows 将运行安装程序向导以安装 Git LFS。
-
命令行运行
git lfs install ,返回Git LFS initialized. 就是安装成功了。
安装 CUDA
-
命令行运行
nvidia-smi ,看下自己显卡支持的 CUDA版本
(最好先升级以下显卡驱动,5月之后的的驱动支持了内存显存融合,对小显存显卡有提升) -
接下来前往英伟达 CUDA 官网,下载对应版本。
注意请下载,你对应的版本号最高的版本,比如我的是11.7的,那就下11.7.1(这里最后的.1意思是,11.7版本的1号升级版) -
选你自己的操作系统版本,注意下个离线安装包【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 模型
- 在 RWKV_Role_Playing 文件夹内新建一个文本文件
run.txt - 在文件里写
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改成你模型存放位置
- 各种启动参数解释如下:
参数 | 解释 |
---|---|
–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 加载运行。
- 保存文件后,将文件后缀名改成.bat(最后变成
run.bat ,不要给改成类似run.bat.txt 了) -
一些启动参数的例子
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
- 以上示例的文件路径写法均为 win 下写法,如果在 Linux (WSL)里跑,请自行改一下,可以参照 Colab 运行里的代码。
开始使用基于 RWKV 的 AI角色扮演 WebUI
- 双击上一步的run.bat,等待程序运行,最后CMD窗口显示类似下边这样的代码时,就说明项目已经好了
点那个https://XXXXXXX.gradio.live 链接,或者http://127.0.0.1:7860 ,打开浏览器 -
先在右侧区域选择你需要的角色,然后点【载入角色】
-
开始聊天吧
- 重新生成:让 AI 重新考虑对你的回复
- 提词:让 AI 提示一下你该说什么
- 清除上一条:清除上一轮对话,你可以重新输入你想对 AI 说的话
- 重置角色:将 AI 角色重置到初始状态,重新开始。
- 勾选
替角色说 :将AI最后的回复,修改为你输入的内容。可以修正AI偶尔出现的身份混乱,逻辑混乱问题。
RWKV 怎么调参
- 最小/最大回复长度:设置AI回复的最小/最大长度,可以强制AI长回复或短回复,不过设置太大太小AI都会开始乱说话。
- top_p:值越低,答案越准确而真实。更高的值鼓励更多样化的输出;
- top_k:值越低,答案越准确而真实。更高的值鼓励更多样化的输出。top_k 会先于 top_p 生效,即先根据 top_k 值确定所选 token 范围,然后根据 top_p 值在上述范围内,再确定最终所选 token 的范围。
- temperature:值越低,结果就越确定,因为总是选择概率最高的下一个词/token,拉高该值,其他可能的token的概率就会变大,随机性就越大,输出越多样化、越具创造性。
- Presence Penalty:值越大,AI越会避免重复话题,但也别太大,AI就会不停的试图开始新话题,一般不要超过0.5
- Frequency Penalty:值越大,AI越会避免使用重复的句子(可以让AI别总是复读,最后和最开始的内容)。
- 强制输出动作:强制AI对每次回复都带上动作心理环境等描写。
RWKV 怎么增加角色
在左上角切换到角色选项卡
基本一目了然
– 示例对话里你可以用
– 示例对话里你可以用
– 大概有个5~6轮对话就行,不知道怎么写,可以从小说里抄嘛
– 角色性格可以下载一个Glow,然后到上面去找智能体,直接把它们的性格和对话抄过来用。
– 官方模型可能偶尔会因为善恶观思想钢印,拒绝继续话题,一般重新生成即可。Claude 和 Noval 模型就基本没任何限制了,你可以随便聊。
– 示例对话和开场白的格式请参照默认角色“小雪”的格式。文章附图里的这个不一定还是最新的格式。