RWKV模型
RWKV(Receptance Weighted Key Value)是一种创新性的语言模型架构,旨在结合 Transformer 和 RNN 的优势,解决传统模型在推理效率和扩展性上的瓶颈。RWKV 的核心思想是将注意力机制中的 Key-Value 操作以时间步的方式分解,借助类 RNN 的顺序结构,实现 Transformer 水平的建模能力,同时显著降低计算复杂度和内存占用。与传统 Transformer 在每一步生成中都需要处理整个上下文不同,RWKV 模型以类似 RNN 的方式逐步处理序列,每一步的计算依赖于前一步的状态,因此在推理阶段具有常数时间和常数内存的优势。
RWKV 支持并行训练,兼容 Transformer 的预训练范式,但在推理过程中具备近乎 RNN 的低延迟特性,使其特别适合部署在资源受限设备上,例如边缘计算设备或移动终端。RWKV 模型的设计还充分考虑了可扩展性,已发展出多个版本(如 RWKV-6、RWKV-7),在多个自然语言处理任务中展现出与主流 Transformer 模型相媲美的性能。由于其开源、轻量、高效的特性,RWKV 也正在成为一种受开发者社区关注的替代性语言模型架构。
RWKV 模型简介
RWKV:
- 近年来,基于Transformer架构的大规模语言模型在自然语言处理领域取得了显著成功,但其自注意力机制存在内存和计算复杂度随序列长度平方级增长的问题,限制了其在长序列任务中的效率。同时,传统RNN虽然具有线性复杂度,但在训练并行性和长程依赖建模方面存在不足。在此背景下,RWKV(Receptance Weighted Key-Value)架构被BlinkDL提出,旨在结合Transformer的高效训练能力(可并行化)和RNN的推理效率。
- RWKV-7 "Goose"作为该系列的最新进展,通过恒定内存占用和每token恒定推理时间的设计,解决了传统Transformer的长序列处理瓶颈。
- 2023 年 9 月 20 日,RWKV 开源项目正式加入 Linux 开源基金会。如今的 RWKV 项目是一个开源的非盈利组织,隶属于 Linux 基金会,部分算力曾由赞助商支持。
名称含义:
- R:Receptance,作为过去信息的接受程度的接受向量
- W:Weight,位置权重衰减向量,可训练的模型参数
- K & V:类似传统注意力机制中的 Key 和 Value 概念
核心特点:
RWKV 模型结合了 Transformer 与 RNN 的优点,具备以下几个显著特性:
- 线性推理效率:RWKV 采用类 RNN 的时间递推结构,每一步仅依赖前一状态,推理时无需处理整个上下文,具备常数内存与线性时间复杂度,适合实时和资源受限场景。
- 并行训练能力:尽管具有递归结构,RWKV 引入了 Token-Shift 与 Time-Mix 等机制,使其训练过程可以像 Transformer 一样实现高度并行,显著提升训练效率。
- 兼容 Transformer 的训练范式:RWKV 可无缝使用 Transformer 社区常见的预训练与微调方法(如语言建模、指令微调、LoRA 等),便于迁移与应用。
- 更低的部署成本:推理过程中不需要全序列缓存和大规模注意力计算,相比传统 Transformer 更轻量,适合部署在边缘设备或移动端。
- 良好的开源生态与可扩展性:RWKV 项目高度开源,已有多个版本(如 RWKV-4、RWKV-5)和大规模中文/多语种预训练模型,社区活跃,便于研究与应用拓展。
这些特点使 RWKV 成为 Transformer 架构的有力替代方案之一,尤其适合需要高效推理与轻量部署的自然语言处理任务。
RWKV 模型结构
RWKV 是 RNN(循环神经网络) 的一个变体。在深入探讨 RWKV 之前,我们有必要先了解 RNN 的基本原理,特别是其 隐藏状态(Hidden State) 的概念。
RNN 架构与隐藏状态
循环神经网络(RNN, Recurrent Neural Network) 是一种广泛应用于序列数据(如文本、语音、时间序列等)的深度学习模型。
RNN 的核心机制:隐藏状态
RNN 在运行过程中会维护一个 隐藏状态(Hidden State),可以将其类比为 RNN 的“记忆”或“心理状态”。
- 就像人类在思考时,大脑会保留与当前任务最相关的“关键信息”一样,RNN 的隐藏状态存储了网络在处理序列时的上下文信息。
- 每当 RNN 处理一个新的输入(如一个 token),它会结合 当前隐藏状态 计算输出,并更新自身的隐藏状态,以便影响后续的计算。
RNN 的工作流程
- 输入处理:RNN 依次接收序列中的每个 token(如单词或字符)。
- 状态更新:对于每个 token,RNN 结合 当前隐藏状态 计算输出,并生成 新的隐藏状态。
- 循环反馈:更新后的隐藏状态会被传递到下一步,用于处理下一个 token。
- 输出预测(可选):如果有任务需求(如语言建模),RNN 可以在每一步生成预测结果(如下一个可能的 token)。
这一过程不断循环,直到整个序列处理完毕或达到终止条件,如下图所示:
RWKV Block(基本结构)
- LayerNorm
- TimeMix
- 输入:
x
- 拆分为:[math]\displaystyle{ x_k, x_v, x_r }[/math]
- 加入时间加权参数(Python代码):
- xk:用于 Key;
- xv:用于 Value;
- xr:用于 Receptance(门控);
time_decay
是一个可学习的参数,用于控制历史信息的衰减;time_mix_k
是控制当前和前一个 token 特征混合比例的系数(同样是可学习的);x_k_prev
表示前一个 token 的特征;k
是融合后的 Key 值,用于参与后续注意力(递推)计算。
- 输入:
decay = exp(-exp(time_decay))
k = x_k * time_mix_k + x_k_prev * (1 - time_mix_k)
作用: 融合当前时刻和上一个时刻的信息,引入时间动态权重。
TimeMix 模块通过对当前输入和上一时刻输入进行线性加权融合,并引入时间衰减因子,实现了模拟 Transformer 注意力中“历史上下文影响”的能力。这种设计既保证了 RWKV 在推理时能保持序列的因果性,又能在训练时支持并行计算,是 RWKV 能够兼顾效率与表现力的关键。
- 数学公式形式:
- Decay定义:
[math]\displaystyle{ \mathrm{decay} = e^{-e^{\mathrm{time\_decay}}} }[/math]
- k计算:
[math]\displaystyle{ k = x_k \times \mathrm{time\_mix\_k} + x_k^{\mathrm{prev}} \times \left(1 - \mathrm{time\_mix\_k}\right) }[/math]
- ChannelMix
- 类似 Transformer 的 FFN 模块。
- 激活函数通常使用 ReLU,公式如下:
- x:当前输入向量;
- W1,W2:权重矩阵;
- b1,b2:偏置项;
- ReLU:常用的非线性激活函数。
[math]\displaystyle{ \mathrm{output} = \mathrm{ReLU}(W_1 \times x + b_1) \times W_2 + b_2 }[/math]
ChannelMix 模块在 RWKV 中承担的是特征变换的职责,它不涉及时间递推,仅作用于当前 token 的维度方向。通过堆叠多个 RWKV Block(包含 TimeMix 和 ChannelMix),模型可以逐步构建复杂的时间和特征层级信息。该模块的设计让 RWKV 能够在保持推理效率的同时,具备强大的特征建模能力。
- Token-Shift
Token-Shift 是 RWKV 模型中为解决并行训练效率而引入的关键机制。由于 RWKV 的结构天然具有时间递归特性,严格按时间步依赖前一个 token 的信息,这使得其在推理时效率极高,但也造成训练过程难以并行。为此,Token-Shift 技巧通过将序列输入向右平移一位(即“看到”前一个 token),并对当前 token 和上一个 token 的特征进行加权混合,模拟出时间依赖关系。这个过程通过广播和矩阵操作实现,使得模型可以像 Transformer 一样高效并行训练,又不会打破因果结构。Token-Shift 的引入使 RWKV 在保持低延迟推理优势的同时,兼顾了训练阶段的速度与效率,是其架构设计中的一项关键创新。
- 注意力层简化表达
- xt:当前时间步的输入向量;
- xt+1:下一时间步的输出;
- R,K,V:分别表示 RWKV 中的 Receptance(门控)、Key、Value 投影矩阵;
- W:时间衰减常数,是可学习参数,用于模拟历史的指数衰减;
- at,bt:前一时刻累积的加权值与归一化因子,用于递归地保留历史信息;
- σ(Rxt):Receptance 门控函数,控制信息是否更新,相当于 LSTM 的门结构;
- 分数部分(分子/分母):模拟了注意力加权求和的效果,只不过是用递推形式累积,而非对整段序列做自注意力计算。
[math]\displaystyle{ x_{t+1} = \sigma(Rx_t) \cdot \frac{\exp(Kx_t) \cdot (Vx_t) + \exp(W) \cdot a_t}{\exp(Kx_t) + \exp(W) \cdot b_t} }[/math]
这个表达式体现的是 RWKV 用递推的方式模拟注意力机制。不同于 Transformer 的全局注意力(需要对所有 token 做乘积和归一化),RWKV 在每一个时间步只更新当前与历史的加权平均值,用指数衰减模拟注意力分布,极大地提高了推理效率。
- 核心机制代码
def ref_fwd(r, w, k, v, a, b):
r = r.view(B, T, H, N)
k = k.view(B, T, H, N)
v = v.view(B, T, H, N)
a = a.view(B, T, H, N)
b = b.view(B, T, H, N)
w = torch.exp(-torch.exp(w.view(B, T, H, N)))
out = torch.zeros((B, T, H, N), device=DEVICE)
state = torch.zeros((B, H, N, N), device=DEVICE)
for t in range(T):
kk = k[:, t, :]
rr = r[:, t, :]
vv = v[:, t, :]
aa = a[:, t, :]
bb = b[:, t, :]
sab = torch.einsum('bhik,bhk,bhj->bhij', state, aa, bb)
state = state * w[: , t, :, None, :] + sab + torch.einsum('bhj,bhi->bhij', kk, vv)
out[:, t, :] = torch.einsum('bhj,bhij->bhi', rr, state)
return out.view((B, T, C))
- Delta Rule
RWKV-7 中的 广义 Delta Rule 是其架构的核心创新之一,是对传统神经网络中 Delta Rule 的扩展和优化。以下是其核心要点:
传统 Delta Rule 的基础 Delta Rule 是神经网络中的经典学习规则,通过计算目标输出与实际输出的差异(即误差 delta),调整模型参数以减少误差 。这一规则通常用于监督学习中的梯度下降优化。 广义 Delta Rule 的扩展 RWKV-7 将 Delta Rule 从标量形式推广到向量形式,并引入动态状态演化机制。具体来说: 向量化门控(Vector-Valued State Gating) :原始 Delta Rule 中的衰减系数 a 被定义为向量而非标量,允许每个状态通道独立控制信息的保留与更新,从而增强模型对状态信息的精细操控能力 。 动态状态调整 :通过结合输入序列的历史状态与当前误差信号,广义 Delta Rule 能够更高效地调整状态表示,实现长序列依赖建模 。
RWKV架构特性
推理
- 类似 RNN,每步只依赖上一步状态
- 推理内存 O(1),不需上下文缓存
训练
- 并行训练兼容 Transformer-style 训练器
- 对时间参数稳定性要求高(需梯度裁剪、精调)
RWKV 架构由一系列堆叠的残差块组成,每个残差块由具有循环结构的时间混合(timemixing)和通道混合(channel-mixing)子块组成,该循环通过将当前输入和上一时间步的输入之间进行线性插值来实现(在 RWKV-4 架构论文中,这一过程被称为 token shift)。RWKV 6 通过借鉴 LoRA 技术优化了 token shift 过程,使其 RWKV4/5 的简单线性插值(lerp)变成了数据依赖的、动态的线性插值(ddlerp)。
根据对不同模型的推理复杂度进行比较,Transformer 的时间复杂度为:O (T^2)、空间复杂度为:O (T^2),因此推理速度将会越来越慢,也越来越耗内存。而 RWKV 的时间复杂度为:O(T)、空间复杂度为 O(1)。RWKV 大模型通过对计算流程的优化,实现了恒定的推理速度,极大地减少了推理过程中的时间消耗。
此外,RWKV 架构设计显著降低了显存占用,使得模型即使在标准配置的 CPU 或非专业级的 GPU上也能高效运行,无需依赖昂贵或高端的计算硬件。这一突破性的进展使得大规模深度学习模型不再受限于特定的硬件平台,拓宽了应用范围。
RWKV 架构演进时间线
版本 | 时间 | 核心特性/改进 | 备注 |
---|---|---|---|
v1 | 2021 年底 | 初代结构,融合 Attention 和 RNN | 实验性版本,训练不稳定 |
v2 | 2022 年初 | TimeMix 和 ChannelMix 雏形 初步支持并行训练 |
性能有明显提升 |
v3 | 2022 年中 | 明确使用 time_decay 机制引入 time_mix_k 等精细控制 |
架构逐渐稳定,接近 Transformer 效果 |
v4 | 2023 年初 | 优化 ChannelMix(ReLU 替换 SiLU) 更强的泛化能力 |
支持更大规模模型训练 |
v5 | 2023 底 / 2024 初 | 正式提出 “Transformer as RNN” 理念 可用标准 Transformer 训练器 性能与效率大幅提升 |
当前主力架构,广泛用于 RWKV-LM 系列 |
v6 | 2024 年初 | 引入动态时间衰减机制(Dynamic Time Decay) 增强对长上下文的记忆能力 |
进一步提升语言建模的表现 |
v7 | 2024 年中 | 模块化设计 支持多模态任务(文本、图像、音频等) 更高效的推理优化 |
扩展应用场景,迈向通用 AI |
RWKV 的评测数据
以下是 RWKV 和其他模型的 Uncheatable Eval 评分对比:
14B 参数模型
Name | Params (B) | Average (lower=better) | ao3 english | bbc news | wikipedia english | arxiv computer science | arxiv physics | github cpp | github python |
---|---|---|---|---|---|---|---|---|---|
Mistral-Nemo-Base-2407 | 12.248 | 7.107 | 10.07 | 8.081 | 7.954 | 7.419 | 7.656 | 4.203 | 4.368 |
RWKV-6-14B-v2.1 | 14.069 | 7.609 | 10.188 | 8.518 | 8.343 | 7.916 | 8.04 | 4.93 | 5.33 |
Llama-2-13b-hf | 13.016 | 7.676 | 10.524 | 8.279 | 8.187 | 8.075 | 8.311 | 4.929 | 5.426 |
Qwen1.5-14B | 14.167 | 7.697 | 10.88 | 8.884 | 9.102 | 7.752 | 7.862 | 4.665 | 4.736 |
pythia-12b-v0 | 11.846 | 8.356 | 11.285 | 9.19 | 9.527 | 8.535 | 8.398 | 5.43 | 6.125 |
本图为五种14B参数模型的性能对比,通过“Average (lower=better)”指标以及在ao3 english、bbc news、wikipedia english、arxiv computer science、arxiv physics、github cpp和github python等不同数据集上的具体表现来衡量。突出RWKV-6-14B-v2.1,其参数量为14.069B,在所有模型中处于中等水平。RWKV的平均性能为7.609,优于Llama-2-13b-hf、Qwen1.5-14B和pythia-12b-v0,但略逊于Mistral-Nemo-Base-2407,这表明其整体表现良好。在特定数据集上,RWKV在英文文本数据集的表现通常优于其他几款,但略逊于Mistral-Nemo-Base-2407;在科学文献数据集上,RWKV的性能与Llama-2-13b-hf和Qwen1.5-14B接近,但仍不及Mistral-Nemo-Base-2407;在代码数据集上,RWKV的表现相对较好,尤其在github python上,其性能为5.33,优于Llama-2-13b-hf和Qwen1.5-14B,但不及Mistral-Nemo-Base-2407。总的来说,RWKV-6-14B-v2.1在14B参数级别的模型中,展现出较好的综合性能,尤其在英文文本和代码相关任务上具有竞争力,仅次于榜首的Mistral-Nemo-Base-2407。
7B 参数模型
Name | Params (B) | Average (lower=better) | ao3 english | bbc news | wikipedia english | arxiv computer science | arxiv physics | github cpp | github python |
---|---|---|---|---|---|---|---|---|---|
Meta-Llama-3.1-8B | 8.030 | 7.227 | 10.529 | 8.201 | 7.932 | 7.549 | 7.686 | 4.204 | 4.487 |
Qwen2.5-7B | 7.616 | 7.453 | 10.931 | 8.742 | 8.815 | 7.683 | 7.991 | 3.920 | 4.091 |
Qwen2-7B | 7.616 | 7.528 | 10.814 | 8.582 | 8.709 | 7.822 | 8.249 | 4.204 | 4.317 |
Mistral-7B-v0.1 | 7.242 | 7.580 | 10.546 | 8.282 | 8.435 | 7.852 | 8.092 | 4.800 | 5.051 |
RWKV-6-World-7B-v2.1 | 7.636 | 7.817 | 10.410 | 8.740 | 8.577 | 8.107 | 8.248 | 5.122 | 5.516 |
Yi-1.5-6B | 6.061 | 7.830 | 10.926 | 8.789 | 8.948 | 8.098 | 8.410 | 4.746 | 4.890 |
OLMo-1.7-7B-hf | 6.888 | 7.881 | 11.012 | 8.647 | 8.987 | 8.004 | 8.200 | 4.966 | 5.354 |
RWKV-5-World-7B-v2 | 7.518 | 7.905 | 10.495 | 8.878 | 8.694 | 8.184 | 8.311 | 5.187 | 5.587 |
Qwen1.5-7B | 7.721 | 7.916 | 11.100 | 9.126 | 9.357 | 7.953 | 8.107 | 4.845 | 4.924 |
mpt-7b | 6.649 | 7.950 | 11.185 | 8.682 | 8.771 | 8.157 | 8.438 | 4.954 | 5.466 |
Llama-2-7b-hf | 6.738 | 7.967 | 10.842 | 8.511 | 8.521 | 8.330 | 8.630 | 5.235 | 5.703 |
Zamba-7B-v1 | 7.232 | 8.089 | 10.846 | 8.520 | 8.639 | 8.060 | 8.290 | 5.938 | 6.328 |
open_llama_7b_v2 | 6.738 | 8.103 | 11.086 | 8.839 | 9.053 | 8.404 | 8.757 | 4.887 | 5.698 |
falcon-7b | 6.922 | 8.302 | 10.756 | 8.691 | 9.147 | 8.549 | 9.060 | 5.763 | 6.149 |
pythia-6.9b-v0 | 6.857 | 8.545 | 11.495 | 9.375 | 9.757 | 8.683 | 8.572 | 5.611 | 6.321 |
mamba-7b-rw | 6.947 | 9.782 | 10.808 | 8.548 | 8.990 | 8.613 | 9.142 | 11.107 | 11.268 |
本图列出了多款7B参数模型的性能,通过“Average (lower=better)”指标及其在多个英文文本、科学和代码数据集上的表现进行全面评估。Meta-Llama-3.1-8B以其卓越的平均性能7.227位居榜首,并在所有测试类别中都展现出强大实力,尤其在代码任务上表现抢眼;Qwen2.5-7B和Qwen2-7B紧随其后,性能亦相当出色。值得关注的是,RWKV-6-World-7B-v2.1和RWKV-5-World-7B-v2两款RWKV系列模型虽然平均性能略逊于前三者,但它们在github cpp和github python等代码相关任务上展现出不俗的竞争力。相较之下,pythia-6.9b-v0和mamba-7b-rw等模型则在各项指标上表现相对较弱。总体而言,7B参数级别的模型在通用语言理解和生成能力上存在显著差异,其中Meta-Llama-3.1-8B表现最为突出,而RWKV系列则在特定领域展现了潜力。
3B 参数模型
Name | Params (B) | Average (lower=better) | ao3 english | bbc news | wikipedia english | arxiv computer science | arxiv physics | github cpp | github python |
---|---|---|---|---|---|---|---|---|---|
Llama-3.2-3B | 3.213 | 7.573 | 10.897 | 8.702 | 8.283 | 7.784 | 8.101 | 4.590 | 4.654 |
Qwen2.5-3B | 3.086 | 7.663 | 11.226 | 9.154 | 8.959 | 7.787 | 8.246 | 4.119 | 4.151 |
RWKV-x070-World-2.9B-v3-20250211-ctx4096 | 2.948 | 7.737 | 10.481 | 8.919 | 8.470 | 7.904 | 8.337 | 4.882 | 5.164 |
stablelm-3b-4e1t | 2.795 | 7.856 | 10.887 | 8.818 | 8.509 | 8.153 | 8.500 | 4.847 | 5.281 |
recurrentgemma-2b | 2.683 | 7.987 | 11.302 | 8.938 | 8.883 | 8.237 | 8.520 | 4.802 | 5.224 |
RWKV-x060-World-3B-v2.1-20240417-ctx4096 | 3.100 | 8.078 | 10.674 | 9.174 | 8.816 | 8.268 | 8.576 | 5.385 | 5.655 |
gemma-2-2b | 2.614 | 8.122 | 11.352 | 8.898 | 9.031 | 8.385 | 8.814 | 5.012 | 5.364 |
mamba2attn-2.7b | 2.698 | 8.183 | 11.126 | 9.279 | 9.263 | 8.325 | 8.287 | 5.223 | 5.780 |
RWKV-5-World-3B-v2-20231113-ctx4096 | 3.063 | 8.227 | 10.831 | 9.356 | 9.004 | 8.415 | 8.698 | 5.509 | 5.776 |
mamba2-2.7b | 2.703 | 8.292 | 11.213 | 9.370 | 9.384 | 8.427 | 8.371 | 5.343 | 5.933 |
Zamba2-2.7B | 2.662 | 8.317 | 10.970 | 8.948 | 8.743 | 8.169 | 8.699 | 6.393 | 6.295 |
mamba-2.8b-hf | 2.768 | 8.414 | 11.311 | 9.486 | 9.530 | 8.566 | 8.517 | 5.461 | 6.027 |
RWKV-4-World-3B-v1-20230619-ctx4096 | 3.063 | 8.525 | 10.898 | 9.565 | 9.301 | 8.902 | 9.274 | 5.671 | 6.065 |
pythia-2.8b-v0 | 2.775 | 8.667 | 11.664 | 9.741 | 9.815 | 8.724 | 8.729 | 5.709 | 6.288 |
granite-3.2-2b-instruct | 2.534 | 8.800 | 11.961 | 10.119 | 10.309 | 8.997 | 9.254 | 5.502 | 5.460 |
granite-3.1-2b-instruct | 2.534 | 8.837 | 12.004 | 10.169 | 10.361 | 9.043 | 9.278 | 5.519 | 5.484 |
本图展示了多款3B参数模型的性能对比,通过“Average (lower=better)”指标及其在ao3 english、bbc news、wikipedia english、arxiv computer science、arxiv physics、github cpp和github python等不同数据集上的表现进行衡量。在这些3B模型中,Llama-3.2B以3.213B的参数量和7.573的平均值表现最佳,几乎在所有数据集上都位居前列,尤其在github cpp和github python上的性能分别为4.590和4.654。紧随其后的是Qwen2.5-3B和RWKV-x070-World-2.9B-v3-20250211-ctx4096,它们的平均性能分别为7.663和7.737,表现也相当出色。值得注意的是,RWKV系列模型(如RWKV-x070-World-2.9B-v3-20250211-ctx4096、RWKV-x060-World-3B-v2.1-20240417-ctx4096和RWKV-5-World-3B-v2-20231113-ctx4096)在代码数据集上的表现普遍优于其他一些同参数量模型,显示出其在代码理解和生成方面的潜力。总体来看,在3B参数级别的模型中,Llama-3.2B目前处于领先地位,而Qwen系列和RWKV系列也在各自的优势领域表现突出。
1.5B 参数模型
Name | Params (B) | Average (lower=better) | ao3 english | bbc news | wikipedia english | arxiv computer science | arxiv physics | github cpp | github python |
---|---|---|---|---|---|---|---|---|---|
Qwen3-1.7B-Base | 1.721 | 7.915 | 11.644 | 9.761 | 9.415 | 7.816 | 8.377 | 4.177 | 4.214 |
rwkv7-g1-1.5b-20250429-ctx4096 | 1.528 | 7.975 | 10.622 | 9.269 | 8.936 | 8.069 | 8.649 | 4.973 | 5.308 |
Qwen2.5-1.5B | 1.544 | 8.058 | 11.756 | 9.576 | 9.489 | 8.118 | 8.653 | 4.396 | 4.421 |
RWKV-x070-World-1.5B-v3-20250127-ctx4096 | 1.528 | 8.160 | 10.932 | 9.337 | 8.972 | 8.250 | 8.770 | 5.288 | 5.571 |
Llama-3.2-1B | 1.236 | 8.225 | 11.693 | 9.343 | 9.066 | 8.365 | 8.762 | 5.160 | 5.184 |
SmolLM2-1.7B | 1.711 | 8.227 | 11.204 | 9.396 | 9.459 | 8.382 | 9.041 | 4.937 | 5.172 |
Index-1.9B | 2.173 | 8.301 | 11.490 | 9.510 | 9.227 | 8.344 | 8.589 | 5.292 | 5.652 |
stablelm-2-1_6b | 1.645 | 8.338 | 11.423 | 9.243 | 9.057 | 8.579 | 9.076 | 5.450 | 5.535 |
RWKV-x060-World-1B6-v2.1-20240328-ctx4096 | 1.600 | 8.491 | 11.094 | 9.569 | 9.302 | 8.619 | 8.997 | 5.798 | 6.061 |
RWKV-5-World-1B5-v2-20231025-ctx4096 | 1.578 | 8.640 | 11.247 | 9.746 | 9.499 | 8.765 | 9.106 | 5.918 | 6.196 |
mamba2-1.3b | 1.344 | 8.676 | 11.625 | 9.743 | 9.863 | 8.741 | 8.742 | 5.706 | 6.315 |
MobileLLM-1.5B | 1.562 | 8.733 | 11.588 | 9.145 | 9.215 | 8.816 | 9.292 | 6.293 | 6.785 |
mamba-1.4b-hf | 1.372 | 8.783 | 11.703 | 9.828 | 9.973 | 8.876 | 8.863 | 5.808 | 6.429 |
Zamba2-1.2B | 1.215 | 8.830 | 11.392 | 9.382 | 9.263 | 8.571 | 9.209 | 7.082 | 6.914 |
SmolLM-1.7B | 1.711 | 8.877 | 12.684 | 9.847 | 9.890 | 8.384 | 9.024 | 6.552 | 5.757 |
gemma-3-1b-pt | 1.000 | 8.903 | 12.188 | 9.364 | 9.597 | 8.874 | 9.559 | 6.591 | 6.150 |
MobileLLM-1B | 1.005 | 8.972 | 11.863 | 9.349 | 9.432 | 9.028 | 9.566 | 6.531 | 7.033 |
RWKV-4-World-1.5B-v1-fixed-20230612-ctx4096 | 1.578 | 8.999 | 11.334 | 10.000 | 9.821 | 9.344 | 9.797 | 6.158 | 6.539 |
Hymba-1.5B-Base | 1.523 | 9.125 | 11.797 | 9.446 | 9.502 | 8.497 | 9.375 | 7.714 | 7.542 |
pythia-1.4b-v0 | 1.415 | 9.154 | 12.192 | 10.200 | 10.429 | 9.122 | 9.198 | 6.149 | 6.788 |
Falcon3-1B-Base | 1.669 | 9.445 | 13.039 | 10.448 | 10.750 | 8.604 | 9.200 | 7.155 | 6.919 |
本图展示了多款1.5B参数模型的性能对比,通过“Average (lower=better)”指标及其在ao3 english、bbc news、wikipedia english、arxiv computer science、arxiv physics、github cpp和github python等不同数据集上的表现进行全面评估。在这些模型中,Qwen3-1.7B-Base以1.721B的参数量和7.915的平均值表现最为出色,几乎在所有数据集上都位居前列,尤其在github cpp和github python上的性能分别为4.177和4.214。紧随其后的是rwkv7-g1-1.5B-20250429-ctx4096和Qwen2.5-1.5B,它们的平均性能分别为7.975和8.058,表现同样优秀。值得注意的是,RWKV系列模型(如rwkv7-g1-1.5B-20250429-ctx4096、RWKV-x070-World-1.5B-v3-20250127-ctx4096和RWKV-x060-World-1B6-v2.1-20240328-ctx4096)在代码数据集上的表现普遍较好,显示出其在代码理解和生成方面的竞争力。相较之下,Falcon3-1B-Base和pythia-1b-v0等模型则在各项指标上表现相对较弱。总体而言,在1.5B参数级别的模型中,Qwen3-1.7B-Base目前处于领先地位,而RWKV系列则在特定领域(尤其是代码任务)展现了显著优势。
RWKV 与其他模型对比
特性 | Transformer | RNN | RWKV |
---|---|---|---|
并行训练能力 | ✅ | ❌ | ✅ |
推理内存效率 | ❌ (O(n)) | ✅ (O(1)) | ✅ (O(1)) |
长序列建模能力 | 中等 | 较弱 | 强 |
上下文可控性 | 较强 | 差 | 中-强 |
参数共享压缩性 | 中等 | 强 | 强 |
RWKV与Transformer的差异
RWKV (Receptance Weighted Key Value) 架构和Transformer架构都是在自然语言处理领域取得成功的深度学习模型,但它们在处理序列数据的方式上有着根本性的区别。以下是它们的详细对比:
Transformer 架构
核心思想: Transformer 架构的核心是自注意力机制(Self-Attention),它允许模型在处理序列中的每个元素时,同时考虑序列中的所有其他元素,并根据它们之间的相关性分配不同的权重。
Transformer 中的注意力机制可表示为:
- [math]\displaystyle{ \text{Attention}(Q, K, V) = \text{softmax}\left( \frac{QK^\top}{\sqrt{d_k}} \right) V }[/math]
其中:
- [math]\displaystyle{ Q }[/math]:查询(Query)
- [math]\displaystyle{ K }[/math]:键(Key)
- [math]\displaystyle{ V }[/math]:值(Value)
- [math]\displaystyle{ d_k }[/math]:Key 的维度
主要特点:
- 并行性: 自注意力机制允许对序列中的所有位置进行并行计算,这使得Transformer在训练过程中能够充分利用GPU等并行计算硬件,大大缩短了训练时间。
- 长距离依赖: 通过直接计算任意两个位置之间的注意力权重,Transformer能够有效地捕获序列中的长距离依赖关系,克服了传统RNN(循环神经网络)在处理长序列时遇到的梯度消失/爆炸问题。
- 位置编码(Positional Encoding): 由于自注意力机制本身不包含序列顺序信息,Transformer通过在输入嵌入中添加位置编码来引入位置信息,通常是使用正弦和余弦函数。
- 编码器-解码器结构: 经典的Transformer通常包含一个编码器堆栈和一个解码器堆栈,编码器处理输入序列,解码器生成输出序列。每个编码器和解码器层都包含多头自注意力机制和前馈神经网络。
- 二次复杂度: 传统的自注意力机制的计算复杂度与序列长度的平方成正比(O(L2)),这使得处理非常长的序列变得计算密集且内存消耗大。
RWKV 架构
核心思想: RWKV 旨在结合RNN的效率和Transformer的性能,它将Transformer的并行训练能力与RNN的常数时间推理能力相结合,实现了一种“线性的注意力机制”。
RWKV 模拟注意力计算的一种核心结构是 WKV(Receptance Weighted Key Value),WKV 计算可简化为如下形式:
- [math]\displaystyle{ x_{t+1} = \sigma(Rx_t) \cdot \frac{\exp(Kx_t) \cdot (Vx_t) + \exp(W) \cdot a_t}{\exp(Kx_t) + \exp(W) \cdot b_t} }[/math]
其中:
- [math]\displaystyle{ x_t }[/math]:当前输入向量
- [math]\displaystyle{ R }[/math]、[math]\displaystyle{ K }[/math]、[math]\displaystyle{ V }[/math]:线性投影矩阵
- [math]\displaystyle{ \sigma }[/math]:激活函数(如 sigmoid)
- [math]\displaystyle{ W }[/math]:时间权重参数
- [math]\displaystyle{ a_t }[/math]、[math]\displaystyle{ b_t }[/math]:递归累加的历史值
主要特点:
- 线性注意力(Linear Attention): RWKV的核心创新是其线性的WKV(Weighted Key Value)机制。与Transformer的二次复杂度注意力不同,RWKV的计算复杂度与序列长度呈线性关系(O(L))。它通过维护一个递归的隐藏状态来实现这一点,有效地聚合了历史信息。
- 并行训练与序列推理: RWKV在训练时可以像Transformer一样并行计算,但在推理时则以常数时间(O(1))进行,因为它只需要维护一个固定大小的隐藏状态,而不需要重新计算整个序列的注意力。这使得RWKV在长序列推理任务中具有显著的效率优势。
- 时间混合(Time-Mixing)和通道混合(Channel-Mixing): RWKV的每个块由时间混合和通道混合两个主要部分组成。
- 时间混合: 替代了Transformer的自注意力机制,它通过Receptance (R)、Weight (W)、Key (K) 和 Value (V) 向量的巧妙组合,以递归的方式处理序列信息,并引入了时间衰减因子来模拟信息随时间衰减的特性。
- 通道混合: 类似于Transformer中的前馈神经网络,对特征维度进行非线性变换,但可能包含额外的门控机制以控制信息流。
- Token Shifting: RWKV引入了Token Shifting机制,通过线性插值当前和前一个token的嵌入来为每个块提供时间上下文,这有助于模型更好地理解序列中的局部依赖。
- 没有位置编码: RWKV的设计使其能够通过其时间混合机制自然地处理序列顺序信息,因此不需要像Transformer那样显式添加位置编码。
优势
- 运行和训练时资源使用更低(VRAM、CPU、GPU 等)。
- 与较大上下文的 Transformer 相比,计算需求低 10 倍到 100 倍。
- 支持以线性方式扩展到任何上下文长度(Transformer 以二次方扩展)。
- 在答案质量和泛化能力方面的表现与 Transformer 架构一样好。
- RWKV 模型的训练数据包括英文以外的其他语言(例如中文、日文等),多语言能力比大多数现有的开源模型要好。
不足
- RWKV 基底模型对提示词(prompt)的格式非常敏感,提示词的格式对生成结果影响较大。
- 出于架构设计,RWKV 模型在需要回顾的任务上较弱,因此需要恰当地对提示词进行排序。比如先给模型提供任务指令,再提供需要执行任务的材料文本。
RWKV 社区与生态
主要贡献者
- BlinkDL(中国开发者,RWKV 创始人)
开源项目
- RWKV-LM:主项目
- RWKV.cpp:轻量 C++ 实现,适合本地部署
- RWKV-Runner:便捷部署和体验框架
- RWKV-Vision:拓展到图像、多模态领域
RWKV 架构总结
优势
- 推理效率高:RWKV 在推理阶段采用类 RNN 的结构,具备常数时间和常数内存开销,尤其适合流式生成和边缘设备部署。
- 训练可并行:通过 Token-Shift 和 Time-Mix 等机制,RWKV 训练过程可以并行处理整个序列,性能接近 Transformer。
- 轻量部署友好:相比传统 Transformer,RWKV 对显存和计算资源的需求更低,可在低功耗设备上运行较大规模模型。
- 开源生态活跃:RWKV 模型和工具链全面开源,已有多个版本和社区维护的微调模型,便于研究与实际应用。
- 语言建模能力强:实验证明 RWKV 在多项语言任务中表现接近主流 Transformer 模型,具备良好泛化能力。
不足
- 架构新颖,生态相对较小:尽管发展迅速,RWKV 仍处于相对早期阶段,社区资源、教程、微调工具等不如 Transformer 丰富。
- 缺乏广泛工业验证:RWKV 在学术与开源社区取得一定成果,但在大规模商业应用中的成熟度尚需验证。
- 模型兼容性问题:由于架构与 Transformer 存在根本差异,某些专为 Transformer 优化的技术(如 Attention 可视化)不再适用。
- 调参和训练技巧不够成熟:RWKV 的训练过程对时间混合系数、初始化方式等较为敏感,目前仍在不断优化与摸索中。