🌟 State 微调是什么?
RWKV 是纯 RNN,因此可以做 transformer 难以做到的事情。例如,作为 RNN 有固定大小的 state,所以,微调 RWKV 的初始 state,就相当于最彻底的 prompt tuning,甚至可以用于 alignment,因为迁移能力很强。
本文的 State tuning 方法来自 RWKV 社区微调项目 RWKV-PEFT 。
开始之前,请确保你拥有一个 Linux 工作区,以及支持 CUDA 的 NVIDIA 显卡,具体显存可参考下表:
模型参数 | State tuning 需要的显存 |
---|---|
RWKV6-1.6B | 6.4GB GPU |
RWKV6-3B | 9.4GB GPU |
RWKV6-7B | 18.1GB GPU |
收集训练数据
你需要使用收集更适合训练 RWKV 的 binidx 数据,具体方法可参考:https://rwkv.cn/RWKV-Fine-Tuning/FT-Dateset 。
需要注意的是,训练 state 的 JSONL 数据集需要先用 make_data.py脚本重复生成 10 遍,再转成 binidx 数据:
python make_data.py novel.jsonl 10 512
在这条命令中,novel.jsonl
需要改成你的 JSONL 数据文件路径,10 则是数据重复的次数,512 则是你训练的 CXT 长度。
💡 Tips: 在社区的实验中,State tuning 的 cxt 应当尽可能小,建议从 512 开始尝试。
配置训练环境
要训练 RWKV 模型,首先要配置训练环境。
1. 配置虚拟环境(conda)
RWKV 默认训练虚拟环境为 conda ,以下是一个简单的Miniconda的安装方法:
# 下载最新的 MiniConda 安装包
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
# 运行 MiniConda 安装包的安装脚本# 安装期间一定要注意进度,及时输入 yes !
sh Miniconda3-latest-Linux-x86_64.sh -u
# 重启环境变量~/.bashrc
2. 安装 state tuning 所需的软件
要获得 RWKV 模型的最佳训练性能ÿ