基于:https://github.com/shengxia/RWKV_Role_Playing 添加了GPT-SoVITS语音对话
没有显卡?显存不足?内存不足?环境不会配置?现在都不用怕了,直接白嫖Google Colab吧!
## [点击这里快速到达](https://colab.research.google.com/drive/19cKRLE6WBVoVK1cHPNuc3KvmeQ9TO19G#scrollTo=t4daxu3L1Rbi)
如果需要给角色加头像的话,可以把头像命名为"角色名.png"放在char目录下,至于头像去哪儿找嘛……用sd生成一个就好了。
该项目虽然是个webui,但是不适合多人同时使用,如果需要多用户的话,可以参考这个项目
https://github.com/shengxia/RWKV_Role_Playing_API
## 一个基于RWKV的角色扮演玩具
![图片1](./pic/1.png)
就是这么一个玩意儿,连抄带编的弄出来了一个玩具,所以代码质量吗……请各位不要吐槽太多,但是也算是能玩吧。
另外,如果不知道人物性格怎么设定的话,我建议你可以下载一个Glow,这是[官网地址](https://glowapp.vip/),然后到上面去找智能体,直接把它们的性格粘过来用是完全没问题的。
这段时间我到[Chub](https://www.chub.ai)上面翻了翻角色卡,找了一些高质量的角色卡测试了一下,虽然上面的内容英文的比较多,但是稍微整理一下格式,放进去用还是没啥问题的,虽然我知道模型有语言迁移的能力,但是亲自尝试一下还是觉得挺神奇的,就是我可以用中文来回复,然后模型说话的时候用英文,而且上下文还搭能得上,我也不知道是因为RWKV英文能力更强还是这角色卡写得好,回复的还挺带感的,至少比我自己写的中文角色卡好上不少,感兴趣的话,大家也可以试试这种玩儿法,反正对我来说,看英文比写英文要简单多了。
目前我不再支持Raven系列的模型,而是改用World系列的模型了,这个模型在角色扮演上好太多了,另外我在FAQ中也推荐了一些其他的模型,他们同样也非常适合角色扮演,如果你使用的是老版本的话,可能还需要更新一下RWKV库
```
pip install rwkv --upgrade
```
如果更新拉取代码后,运行起来发现会报错,请更新一下gradio
```
pip install gradio --upgrade
```
最近的更新中我又把角色的初始状态保存在了`save/init_state/`下面,在切换模型后,除了要删除save文件夹下的.sav文件,记得也把这里的.sav文件删除一下,不然会报错。
### 安装方法:
先安装依赖
```
pip install torch==1.13.1 --extra-index-url https://download.pytorch.org/whl/cu117 --upgrade
pip install -r requirements.txt
```
启动:
```
python webui.py --listen --model model/path
```
以下是一个例子:
```
python webui.py --listen --model model/RWKV-x060-World-3B-v2-20240228-ctx4096
```
各种启动参数解释如下:
| 参数 | 解释 |
| --- | --- |
| --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 | 是否自动保存对话进度,目前默认是不自动保存了,因为RWKV5之后的state变大了好多,如果需要的话记得把这个参数加上 |
模型的加载方式(--strategy)我默认使用的是"cuda fp16i8",如果想使用其他的加载方式可以自行调整该参数,具体有哪些值可以参考[这个文章](https://zhuanlan.zhihu.com/p/609154637)或者这张图![图片](./pic/4.jpg)
## FAQ
### 1. 能让AI生成文字的速度再快一点吗?
当然可以,在启动命令中加入--cuda_on 1,例子:
```
python webui.py --listen --model model/RWKV-x060-World-3B-v2-20240228-ctx4096 --cuda_on 1
```
但是你的机器必须安装Visual C++生成工具,以及Nvidia的CUDA以及CUDNN,CUDA和CUDNN比较好解决,去官网下载就行了,建议安装11.7版本,这个Visual C++生成工具可以参考[这个链接](https://learn.microsoft.com/zh-cn/training/modules/rust-set-up-environment/3-install-build-tools)装好之后还需要配置一下环境变量,如下图:
![图片3](./pic/3.png)
我这里配置的值是C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64,你们根据实际情况进行配置,主要是找到cl.exe这个文件所在的文件夹,当然也要注意架构,不过一般来说,大家都是64位的系统了吧。这样就算是完成了,然后再运行脚本,你会发现文字的生成速度提高了很多。
### 2. 我在哪里可以下载的到模型呢?
当然是在[这里](https://huggingface.co/BlinkDL)或者[使用镜像](https://hf-mirror.com/BlinkDL),这里推荐rwkv5和rwkv6的模型(其实我更推荐rwkv6,别看这玩意儿现在最大只有3B,但是效果是真的不错)。
另外也推荐Xiaol发布的模型,地址在[这里](https://huggingface.co/xiaol),[镜像地址](https://hf-mirror.com/xiaol),这里有12B的模型,很适合有大显存(24G)的玩家尝试。
还有一些比较好的模型,比如EleutherAI的[Hermes-RWKV-v5-7B](https://huggingface.co/EleutherAI/Hermes-RWKV-v5-7B),[镜像地址](https://hf-mirror.com/EleutherAI/Hermes-RWKV-v5-7B),但是这个模型我这套程序没办法支持,因为需要改对话格式,如果你有编程能力的话可以自己在我代码的基础上进行更改,主要就是拼字符串,反正也不难。
不太推荐a686d380的rwkv-5-h-world系列模型,倒不是这个模型不好(它使用的数据集算是一座宝库),主要是他的那个模型是主打小说续写,不适合角色扮演。
### 3. top_p、top_k, temperature、重复惩罚这几个参数有什么设置技巧吗?
- top_p值越低,答案越准确而真实。更高的值鼓励更多样化的输出。
- top_k值越低,答案越准确而真实。更高的值鼓励更多样化的输出。top_k会先于top_p生效,即先根据top_k值确定所选token范围后再根据top_p值确定所选token范围。
- temperature值越低,结果就越确定,因为总是选择概率最高的下一个词/token,为 0 将始终产生几乎完全相同的输出。拉高该值,其他可能的token的概率就会变大,随机性就越大,输出越多样化、越具创造性。
- 重复惩罚值不建议太高,一般在0.1到0.3之间就行了,太高容易出问题(我看论文中说0.2就不错)。
- 上下文惩罚,这个参数是用来惩罚聊天记录中出现次数过多的内容(比如聊着聊着就发现无论和剧情有没有关系,都会输出“xx听到了你的话,”这种内容),本来我是在代码中写死值为3,但是后来发现,中文和英文需要的惩罚值可能不一样,于是就把这个作为参数让玩家自己调整了,这个词如果调的太大,可能会出现降智或者说话不利索的情况(毕竟太大了相当于把这个词给ban掉了,导致无词可用),所以请酌情调整,如果想禁用该功能,请将值设置为0。
RWKV目前的迭代速度非常快,而且每次更新提升都很大,所以模型尽量用新的。
这里建议使用如下配置:
```
{
"top_p": 0.6,
"top_k": 0,
"temperature": 2,
"presence": 0.2,
"context": 3,
}
```
如果感觉输出的内容比较长,可以降低top_p和temperature。
### 4. 模型会在输出回答后,又输出一大堆乱七八糟的内容。
我增加了一个调试页面,可以查看当前的token内容,一般输出乱七八糟的内容都是对话格式有误,正确的对话格式是这样的:
```
用户名: xxxxxxxxx
角色名: xxxxxxxx
用户名: xxxxxxxxxxxxxxx
```
其中冒号是英文冒号
没有合适的资源?快使用搜索试试~ 我知道了~
基于 RWKV_Role_Playing 项目接入GPT-SoVITS语音对话项目.zip
共22个文件
py:5个
json:5个
png:3个
需积分: 5 0 下载量 35 浏览量
2024-05-11
20:49:58
上传
评论
收藏 830KB ZIP 举报
温馨提示
GPT, 通常指的是“Generative Pre-trained Transformer”(生成式预训练转换器),是一个在自然语言处理(NLP)领域非常流行的深度学习模型架构。GPT模型由OpenAI公司开发,并在多个NLP任务上取得了显著的性能提升。 GPT模型的核心是一个多层Transformer解码器结构,它通过在海量的文本数据上进行预训练来学习语言的规律。这种预训练方式使得GPT模型能够捕捉到丰富的上下文信息,并生成流畅、自然的文本。 GPT模型的训练过程可以分为两个阶段: 预训练阶段:在这个阶段,模型会接触到大量的文本数据,并通过无监督学习的方式学习语言的结构和规律。具体来说,模型会尝试预测文本序列中的下一个词或短语,从而学习到语言的语法、语义和上下文信息。 微调阶段(也称为下游任务训练):在预训练完成后,模型会被应用到具体的NLP任务中,如文本分类、机器翻译、问答系统等。在这个阶段,模型会使用有标签的数据进行微调,以适应特定任务的需求。通过微调,模型能够学习到与任务相关的特定知识,并进一步提高在该任务上的性能。 GPT模型的优势在于其强大的生成能力和对上下文信息的捕捉能力。这使得GPT模型在自然语言生成、文本摘要、对话系统等领域具有广泛的应用前景。同时,GPT模型也面临一些挑战,如计算资源消耗大、训练时间长等问题。为了解决这些问题,研究人员不断提出新的优化方法和扩展模型架构,如GPT-2、GPT-3等,以进一步提高模型的性能和效率。
资源推荐
资源详情
资源评论
收起资源包目录
基于 RWKV_Role_Playing 项目接入GPT-SoVITS语音对话项目.zip (22个子文件)
content
pic
3.png 70KB
1.png 53KB
4.jpg 206KB
webui.py 2KB
chars
潘金莲.json 344B
小雪.png 255KB
小雪.json 626B
language
en.json 2KB
zh.json 2KB
LICENSE 34KB
modules
model_utils.py 3KB
chat.py 17KB
ui.py 16KB
role_info.py 2KB
css
chat.css 2KB
启动cuda算子加速角色扮演客户端 - 副本.bat 106B
requirements.txt 72B
output_audio.wav 398KB
.gitignore 47B
README.md 12KB
启动纯gpu角色扮演客户端.bat 106B
config
config_role.json 91B
共 22 条
- 1
资源评论
生瓜蛋子
- 粉丝: 3809
- 资源: 4660
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功