其实 RWKV-7 是训练一个模型,使其可以自动训练模型中的模型。每个 RWKV-7 内有多个小模型,RWKV-7 在推理时会自动训练这些小模型。RWKV-7 的 state 就是这些小模型的参数。
例如 RWKV-7 7B 有 32 层,每层有 64 个小模型,每个小模型有 64×64 个参数。所以 RWKV-7 7B 内共有 32×64 = 2048 个小模型。
那么 RWKV-7 7B 的 state 是 2048×64×64 = 8388608 维。RWKV-7 7B 每推理一步,这 2048 个小模型都自动学习一步,更新 state 的 8388608 个参数。
因此 RWKV-7 是个很强的架构,它比 attention 更强,更优美。
下图是 RWKV-7 每个小模型的 state 更新机制。图中 4×4 的 state 仅为演示,实际每个小模型的 state 矩阵是 64×64。
下图是 attention 和 RWKV 的对比:
有关 RWKV-7 的更详细设计思路(公式、伪代码等),请查看文章:RWKV-7 as a meta-in-context learner,从第一性原理真正理解
此前我们发布了 RWKV-7 "Goose" 系列基底模型,包括 0.1B/0.4B/1.6B/2.9B 四种参数规模,基于 3.1T tokens 的 World v3 数据集训练。
现在,我们准备了更多网页、数学、代码和 reasoning 数据,构建了 World v3.5 数据集,总数据为 5.16T tokens。
我们正在基于 World v3.5 数据集继续训练 RWKV-7 "Goose" 系列模型(0.1B/0.4B/1.6B/2.9B),并命名为 RWKV7-G1("GooseOne")系列推理模型。据测试,最小的 G1 0.1B 就已能实现推理过程。
G1 系列模型的发布计划:
模型 | 发布计划 |
---|---|
G1 0.1B | 3 月 8 日 |
G1 0.4B | 3 月下旬 |
G1 1.6B | 4月 |
G1 2.9B | 5月 |
我们将观察 World v3.5 数据集的效果,同时准备更大更优的数据集 World v3.7,用于 G1 7B 训练。
基于新数据集的 G1 系列,目标是全面超越 Qwen 2.5 和 Llama 3.x 系列。
RWKV-7 架构的论文正在由全球 RWKV 社区快速撰写中,我们计划在 3 月初发布 arxiv 预印本。
我们欢迎所有感兴趣的朋友参与 RWKV-7 论文的撰写、修改和校对。参与方式:在 EleutherAI 的 Discord 搜索加入 RWKV-papers
频道。
RWKV-LM 现已更新一段代码,只需 100 行 numpy 代码,即可实现 RWKV-7 推理:https://github.com/BlinkDL/RWKV-LM/blob/main/RWKV-v7/rwkv_v7_numpy.py
其中,RWKV-7 模型在 numpy 写完只需 50 行代码:
我们准备了使用 RWKV-LM 仓库 + Minipile 数据体验预训练 RWKV-7 模型的快速教程。
提前准备:
在你的 Linux 工作区依次运行以下代码:
# 克隆 RWKV-LM 仓库
git clone https://github.com/BlinkDL/RWKV-LM
# 安装 CUDA 版本的 pytorch(如果你已经安装 pytorch,可跳过这步)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126
# 安装其他 RWKV 训练所需的软件
pip install pytorch-lightning==1.9.5 deepspeed wandb ninja --upgrade
# 进入 RWKV-LM/RWKV-v5 目录
cd RWKV-LM/RWKV-v5
# 创建一个 data 文件夹
mkdir -p data
# 下载 binidx 格式的 minipile 数据集
wget --continue -O data/minipile.idx https://huggingface.co/datasets/BlinkDL/minipile-tokenized/resolve/main/rwkv_vocab_v20230424/minipile.idx
wget --continue -O data/minipile.bin https://huggingface.co/datasets/BlinkDL/minipile-tokenized/resolve/main/rwkv_vocab_v20230424/minipile.bin
# 运行初始化脚本,初始化 RWKV 模型
sh demo-training-prepare.sh
# 运行训练脚本,使用 minipile 数据集预训练 RWKV-7 0.1B 模型
sh demo-training-run.sh
如果你此前未曾登录 WandB,运行训练脚本时 WandB 可能会提示你选择一项:
成功开始训练后应该如下图一般,命令行显示 Epoch
和训练步数进度条
(41/2520),以及时间、loss 等信息。WandB 会出现 loss 曲线等可视化图形:
从 Qwen 2.5 迁移到 RWKV-7 的 Qwerky-72B
现已由海外 RWKV 社区开源:https://huggingface.co/featherless-ai/Qwerky-72B-Preview
Qwerky-72B 基于海外 RWKV 社区提出的新颖模型迁移方法,可将使用 softmax attention (如 Qwen 和 LLaMA)的大模型用极低的成本(例如在单台 H800 训练几天)快速微调为 RWKV 模型,而无需从头开始预训练。
欢迎大家加入 RWKV 社区,可以从 RWKV 中文官网了解 RWKV 模型,也可以加入我们的 QQ 频道和群聊,一起探讨 RWKV 模型。
(文/开源中国)