“RWKV模型”的版本间的差异

来自集智百科 - 复杂系统|人工智能|复杂科学|复杂网络|自组织
跳到导航 跳到搜索
第71行: 第71行:
  
  
−
* '''Toekn-Shift'''
+
* '''Token-Shift'''
 
Token-Shift 是 RWKV 模型中为解决并行训练效率而引入的关键机制。由于 RWKV 的结构天然具有时间递归特性,严格按时间步依赖前一个 token 的信息,这使得其在推理时效率极高,但也造成训练过程难以并行。为此,Token-Shift 技巧通过将序列输入向右平移一位(即“看到”前一个 token),并对当前 token 和上一个 token 的特征进行加权混合,模拟出时间依赖关系。这个过程通过广播和矩阵操作实现,使得模型可以像 Transformer 一样高效并行训练,又不会打破因果结构。Token-Shift 的引入使 RWKV 在保持低延迟推理优势的同时,兼顾了训练阶段的速度与效率,是其架构设计中的一项关键创新。
 
Token-Shift 是 RWKV 模型中为解决并行训练效率而引入的关键机制。由于 RWKV 的结构天然具有时间递归特性,严格按时间步依赖前一个 token 的信息,这使得其在推理时效率极高,但也造成训练过程难以并行。为此,Token-Shift 技巧通过将序列输入向右平移一位(即“看到”前一个 token),并对当前 token 和上一个 token 的特征进行加权混合,模拟出时间依赖关系。这个过程通过广播和矩阵操作实现,使得模型可以像 Transformer 一样高效并行训练,又不会打破因果结构。Token-Shift 的引入使 RWKV 在保持低延迟推理优势的同时,兼顾了训练阶段的速度与效率,是其架构设计中的一项关键创新。
 
[[文件:Tokenshift.png|缩略图|居中|rwkv-architecture-for-language-modeling]]
 
[[文件:Tokenshift.png|缩略图|居中|rwkv-architecture-for-language-modeling]]
第849行: 第849行:
 
|6.919
 
|6.919
 
|}
 
|}
−
这些雷达图全面展示了RWKV系列模型在不同参数量级别(从1.5B到14B)与其他主流大型语言模型(如Llama、Mistral、Qwen等)在多个评估维度上的性能对比,清晰地表明RWKV模型无论在小规模还是大规模应用中都具备强大竞争力,其不同版本持续演进,在通用文本理解、科学文本分析及编程能力等各类任务中均展现出卓越表现,尤其在特定领域更是突出,有力证明了RWKV作为一种创新架构,在效率和多任务性能上均能与主流模型匹敌,彰显了其在广泛应用场景中的巨大潜力。
+
这图标全面展示了RWKV系列模型在不同参数量级别(从1.5B到14B)与其他主流大型语言模型(如Llama、Mistral、Qwen等)在多个评估维度上的性能对比,清晰地表明RWKV模型无论在小规模还是大规模应用中都具备强大竞争力,其不同版本持续演进,在通用文本理解、科学文本分析及编程能力等各类任务中均展现出卓越表现,尤其在特定领域更是突出,有力证明了RWKV作为一种创新架构,在效率和多任务性能上均能与主流模型匹敌,彰显了其在广泛应用场景中的巨大潜力。
 
----
 
----
 
== RWKV 与其他模型对比 ==
 
== RWKV 与其他模型对比 ==

2025年6月8日 (日) 20:27的版本

RWKV(Receptance Weighted Key Value)是一种创新性的语言模型架构,旨在结合 Transformer 和 RNN 的优势,解决传统模型在推理效率和扩展性上的瓶颈。RWKV 的核心思想是将注意力机制中的 Key-Value 操作以时间步的方式分解,借助类 RNN 的顺序结构,实现 Transformer 水平的建模能力,同时显著降低计算复杂度和内存占用。与传统 Transformer 在每一步生成中都需要处理整个上下文不同,RWKV 模型以类似 RNN 的方式逐步处理序列,每一步的计算依赖于前一步的状态,因此在推理阶段具有常数时间和常数内存的优势。

RWKV 支持并行训练,兼容 Transformer 的预训练范式,但在推理过程中具备近乎 RNN 的低延迟特性,使其特别适合部署在资源受限设备上,例如边缘计算设备或移动终端。RWKV 模型的设计还充分考虑了可扩展性,已发展出多个版本(如 RWKV-4、RWKV-5),在多个自然语言处理任务中展现出与主流 Transformer 模型相媲美的性能。由于其开源、轻量、高效的特性,RWKV 也正在成为一种受开发者社区关注的替代性语言模型架构。


RWKV结构示意图
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 概念

核心特点:

  • 拥有 Transformer 的并行训练能力
  • 拥有 RNN 的线性推理效率

RWKV 模型结构

RWKV 是 RNN(循环神经网络) 的一个变体。在深入探讨 RWKV 之前,我们有必要先了解 RNN 的基本原理,特别是其 隐藏状态(Hidden State) 的概念。

RNN 架构与隐藏状态

循环神经网络(RNN, Recurrent Neural Network) 是一种广泛应用于序列数据(如文本、语音、时间序列等)的深度学习模型。

RNN 的核心机制:隐藏状态

RNN 在运行过程中会维护一个 隐藏状态(Hidden State),可以将其类比为 RNN 的“记忆”或“心理状态”。

  • 就像人类在思考时,大脑会保留与当前任务最相关的“关键信息”一样,RNN 的隐藏状态存储了网络在处理序列时的上下文信息。
  • 每当 RNN 处理一个新的输入(如一个 token),它会结合 当前隐藏状态 计算输出,并更新自身的隐藏状态,以便影响后续的计算。

RNN 的工作流程

  1. 输入处理:RNN 依次接收序列中的每个 token(如单词或字符)。
  2. 状态更新:对于每个 token,RNN 结合 当前隐藏状态 计算输出,并生成 新的隐藏状态。
  3. 循环反馈:更新后的隐藏状态会被传递到下一步,用于处理下一个 token。
  4. 输出预测(可选):如果有任务需求(如语言建模),RNN 可以在每一步生成预测结果(如下一个可能的 token)。

这一过程不断循环,直到整个序列处理完毕或达到终止条件,如下图所示:

RNN结构示意图
RNN结构示意图

RWKV Block(基本结构)

  • LayerNorm
  • TimeMix
    • 输入:x
    • 拆分为:[math]\displaystyle{ x_k, x_v, x_r }[/math]
    • 加入时间加权参数(Python代码):
decay = exp(-exp(time_decay))
k = x_k * time_mix_k + x_k_prev * (1 - time_mix_k)
  • 数学公式形式:
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,公式如下:

[math]\displaystyle{ \mathrm{output} = \mathrm{ReLU}(W_1 \times x + b_1) \times W_2 + b_2 }[/math]


  • Token-Shift

Token-Shift 是 RWKV 模型中为解决并行训练效率而引入的关键机制。由于 RWKV 的结构天然具有时间递归特性,严格按时间步依赖前一个 token 的信息,这使得其在推理时效率极高,但也造成训练过程难以并行。为此,Token-Shift 技巧通过将序列输入向右平移一位(即“看到”前一个 token),并对当前 token 和上一个 token 的特征进行加权混合,模拟出时间依赖关系。这个过程通过广播和矩阵操作实现,使得模型可以像 Transformer 一样高效并行训练,又不会打破因果结构。Token-Shift 的引入使 RWKV 在保持低延迟推理优势的同时,兼顾了训练阶段的速度与效率,是其架构设计中的一项关键创新。

rwkv-architecture-for-language-modeling
  • 注意力层简化表达

[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]

  • 核心机制代码
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

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

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

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

这图标全面展示了RWKV系列模型在不同参数量级别(从1.5B到14B)与其他主流大型语言模型(如Llama、Mistral、Qwen等)在多个评估维度上的性能对比,清晰地表明RWKV模型无论在小规模还是大规模应用中都具备强大竞争力,其不同版本持续演进,在通用文本理解、科学文本分析及编程能力等各类任务中均展现出卓越表现,尤其在特定领域更是突出,有力证明了RWKV作为一种创新架构,在效率和多任务性能上均能与主流模型匹敌,彰显了其在广泛应用场景中的巨大潜力。


RWKV 与其他模型对比

特性 Transformer RNN RWKV
并行训练能力 ✅ ❌ ✅
推理内存效率 ❌ (O(n)) ✅ (O(1)) ✅ (O(1))
长序列建模能力 中等 较弱 强
上下文可控性 较强 差 中-强
参数共享压缩性 中等 强 强

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 架构总结

优势

  • 资源效率高:运行和训练时对 VRAM、CPU、GPU 的需求显著低于 Transformer 架构。
  • 计算量低:相较于处理较大上下文的 Transformer,RWKV 的计算需求低 10 倍到 100 倍。
  • 线性扩展性强:上下文长度可线性扩展,Transformer 则为二次扩展([math]\displaystyle{ O(n^2) }[/math])。
  • 答案质量高:在文本生成质量和泛化能力方面可媲美 Transformer 架构。
  • 多语言能力优异:训练数据覆盖中文、日文等多种语言,在多语言任务中表现优于多数开源模型。

不足

  • 提示词格式敏感:生成效果对 prompt 的格式非常敏感,稍微不同的提示可能导致结果差异很大。
  • 任务顺序依赖性强:由于架构本身的递归特性,对于需要回顾历史信息的任务较弱,需要合理组织输入顺序(例如先给任务,再给内容)。