RWKV state:享傻瓜式文学大师人生

原创
06/06 18:50
阅读数 520

state 是 RWKV 这类 RNN 大模型特有的状态。微调 RWKV 的初始 state,就相当于最彻底的 prompt tuning 。通过挂载不同的 state 文件,又可以使 RWKV 模型遵循特定的风格进行回答。

目前 RWKV 发布了中英文单轮对话、小说扩写、文言文对话、打油诗等多种 state 文件,其中打油诗和文言文 state 的效果兼顾了文学性和趣味性,强烈建议大家体验:

state 效果预览

中英文单轮对话

搭载中文单轮对话增强 state 之后,RWKV 模型的回复更符合人类语言习惯,而且带丰富的 Emoji 表情,无论是多奇怪的问题它都会幽默而巧妙地进行作答。

中文小说扩写

搭载中文小说扩写 state 之后,RWKV 模型会根据用户输入的大纲或情节去扩写一段短文,效果非常棒:

打油诗

打油诗 state 可以根据用户输入的 prompt 输出一段诗,非常适合在朋友圈打造文人墨客形象。

想象一下,妈妈去庐山游玩拍了一堆美照,正在苦苦构思朋友圈文案,这时你突然送上诗词一首:

又或者中了五千万彩票,打算在朋友圈发表获奖感言:

一些不着调的幻想也能作诗一首:

文言文对话

文言文 state 分为纯文言文 state 和文言文+名著混合训练的 state ,更建议使用后者,因为它更具文采:

文言文在辅助文案创作上可谓独具一格,无论是给朋友结婚的贺词,还是在朋友圈发布获奖感言:

写景区描述,写段子,都不在话下:

又或是写一段周年庆文案(拍马屁):

我要从哪里下载 state 文件 ?

可以在 官方 HF 仓库下载 pth 格式的 state 文件。

Ai00 需要使用 st/state 格式的 state 文件,可以从 此 HF 仓库下载 st/state 格式的 state 文件。

国内可以访问的 HF 镜像网站:

现在有什么 state 文件 ?

✨ 受训练语料影响,目前发布的 state 文件仅支持单轮问答,暂不支持多轮问答。未来我们会推出支持多轮问答的 state 文件。

目前 RWKV 官方发布了以下 state 文件:

  • chn_single_round:中文单轮对话增强,更符合人类语言习惯,带丰富的 Emoji 表情
  • eng_single_round:英文单轮对话增强,更符合人类语言习惯,带丰富的 Emoji 表情
  • chn_小说扩写_single_round:中文单轮对话,会根据用户输入进行小说扩写
  • chn_打油诗_single_round:中文单轮对话,会根据用户输入创作打油诗
  • chn_文言文_single_round:中文单轮对话,回答的风格会偏向文言文
  • chn_文言文和古典名著_single_round:中文单轮对话,回答的风格会偏向文言文和古典名著

下一步发布网文 state 和名著 state。

 

如何使用 state 文件 ?

state 文件需要配合基底 RWKV 模型,才能发挥其效果。

你可以在 RWKV Runner 或者 Ai00 中搭载 state 文件,二者搭载 state 文件的方法略有不同。

RWKV Runner 挂载 state 文件

在 RWKV Runner 中,你可以按照以下步骤使用 state 文件:

  • 启动一个 RWKV 模型
  • 在配置页面选择对应的 state
  • 点击保存配置按钮。

点击保存后即可实时更新 state ,无需重新启动 RWKV 模型。

在下图的示例中,我们已经启动了 RWKV-6-7B-World 模型。那么我们只需在 RWKV Runner 的配置页面,选择基于 RWKV-6 7B 的 state 文件(名称中带有 x060 * 7B 字段),然后点击 保存配置 按钮。

Ai00 挂载 state 文件

在 Ai00 中,你可以按照以下步骤使用 state 文件:

修改 config.toml 配置文件,开启 state 选项,并指定对应的 state 文件路径。

[[state]] # 开启 state 挂载功能
# default = false   # 这条保留 `#` 注释符
# id = "fd7a60ed-7807-449f-8256-bccae3246222"  # 非开发环境一般不指定 UUID,因此保留 `#` 注释符
name = "x060-7B-Chinese"  # 为此 state 文件命名为“x060-7B-Chinese”,方便在 WebUI 选择
path = "rwkv-x060-chn_single_round_qa-7B-20240516-ctx2048.state" # 存放在 model 文件夹的 state 文件名称

Ai00 支持在 config.toml 配置文件中添加多个 [[state]] 块,一次配置多个 state 文件,然后在 WebUI 中动态切换 state 文件。

在下面的 Ai00 示例中,我们一次性加载三个基于 RWKV-6-7B 模型的 state 文件,在 config.toml 中添加如下配置:

[[state]] # 挂载 state
# default = false   # 保持注释
# id = "fd7a60ed-7807-449f-8256-bccae3246222"  # 非开发环境一般不指定 UUID,因此保留 `#` 注释符
name = "x060-7B-打油诗"  # 为此 state 文件命名为“x060-7B-打油诗”,方便在 WebUI 选择
path = "x060-打油诗-7B.state" # 存放在 model 文件夹的 state 文件名称

[[state]] # 挂载第二个 state
name = "x060-7B-文言文+古典名著"  # 为此 state 文件命名为“x060-7B-打油诗”,方便在 WebUI 选择
path = "x060-文言文和古典名著-7B.state" # 存放在 model 文件夹的 state 文件名称

[[state]] # 挂载第三个 state
name = "x060-7B-小说扩写"  # 为此 state 文件命名为“x060-7B-小说扩写”,方便在 WebUI 选择
path = "x060-小说扩写-7B.state" # 存放在 model 文件夹的 state 文件名称

保存配置文件并启动 Ai00-server,在 Ai00 WebUI 右上角可以动态切换 state 。

在 Ai00 WebUI 切换 state 时,建议新建一个聊天会话或清除上一个 state 的聊天内容,以确保新的 state 文件生效。


未来会发布更多类型的 state 文件,也会发布基于 RWKV 模型训练 state 文件的教程,敬请期待!


彩蛋

实际上,现在这篇文章的标题,也是由搭载文言文 state 的 RWKV-6 7B 模型提供灵感:

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部