| 第1行: |
第1行: |
| − | '''RWKV'''(Receptance Weighted Key Value)是一种创新性的语言模型架构,旨在'''结合 [[Transformer架构|Transformer]] 和 [[循环神经⽹络]](Recurrent Neural Network, RNN)的优势''',解决传统模型在推理效率和扩展性上的瓶颈。RWKV 的核心思想是将注意力机制中的 Key-Value <ref>Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[J]. Advances in neural information processing systems, 2017, 30.</ref>操作以时间步的方式分解,借助类 RNN 的顺序结构,实现 Transformer 水平的建模能力,同时显著降低计算复杂度和内存占用。与传统 Transformer 在每一步生成中都需要处理整个上下文不同,RWKV 模型以类似 RNN 的方式逐步处理序列,每一步的计算依赖于前一步的状态,因此在推理阶段具有常数时间和常数内存的优势。 | + | '''RWKV'''(Receptance Weighted Key Value)是一种创新性的语言模型架构,旨在'''结合 [[Transformer架构|Transformer]] 和 [[循环神经⽹络]](Recurrent Neural Network, RNN)的优势''',解决传统模型在推理效率和扩展性上的瓶颈。RWKV 的核心思想是将注意力机制中的 [[Key-Value]] <ref>Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[J]. Advances in neural information processing systems, 2017, 30.</ref>操作以时间步的方式分解,借助类 [[RNN]] 的顺序结构,实现 Transformer 水平的建模能力,同时显著降低计算复杂度和内存占用。与传统 Transformer 在每一步生成中都需要处理整个上下文不同,RWKV 模型以类似 RNN 的方式逐步处理序列,每一步的计算依赖于前一步的状态,因此在推理阶段具有常数时间和常数内存的优势。 |
| | | | |
| − | RWKV 支持并行训练,兼容 Transformer 的预训练范式,但在推理过程中具备近乎 RNN 的低延迟特性,使其'''特别适合部署在资源受限设备上''',例如边缘计算设备或移动终端。RWKV 模型的设计还充分考虑了可扩展性,已发展出多个版本(如 RWKV-6、RWKV-7),在多个自然语言处理任务中展现出与主流 Transformer 模型相媲美的性能。由于其开源、轻量、高效的特性,RWKV 也正在成为一种受开发者社区关注的替代性语言模型架构。 | + | RWKV 支持并行训练,兼容 Transformer 的预训练范式,但在推理过程中具备近乎 [[RNN]] 的低延迟特性,使其'''特别适合部署在资源受限设备上''',例如边缘计算设备或移动终端。RWKV 模型的设计还充分考虑了可扩展性,已发展出多个版本(如 RWKV-6、RWKV-7),在多个自然语言处理任务中展现出与主流 Transformer 模型相媲美的性能。由于其开源、轻量、高效的特性,RWKV 也正在成为一种受开发者社区关注的替代性语言模型架构。 |
| | ----[[文件:RWKV-7 架构图.png|缩略图|替代=RWKV结构示意图|649x649像素|RWKV结构示意图<ref name=":0" />]] | | ----[[文件:RWKV-7 架构图.png|缩略图|替代=RWKV结构示意图|649x649像素|RWKV结构示意图<ref name=":0" />]] |
| | | | |
| 第8行: |
第8行: |
| | === RWKV: === | | === RWKV: === |
| | | | |
| − | * 近年来,基于Transformer架构的大规模语言模型在自然语言处理领域取得了显著成功,但其自[[注意力机制]]存在内存和计算复杂度随序列长度平方级增长的问题,限制了其在长序列任务中的效率。同时,传统RNN虽然具有线性复杂度,但在训练并行性和长程依赖建模方面存在不足。在此背景下,RWKV架构(Receptance Weighted Key-Value)最初由彭博、BlinkDL提出,旨在结合Transformer的高效训练能力(可并行化)和RNN的推理效率。 | + | * 近年来,基于Transformer架构的大规模语言模型在自然语言处理领域取得了显著成功,但其自[[注意力机制]]存在内存和计算复杂度随序列长度平方级增长的问题,限制了其在长序列任务中的效率。同时,传统[[RNN]]虽然具有线性复杂度,但在训练并行性和长程依赖建模方面存在不足。在此背景下,RWKV架构(Receptance Weighted Key-Value)最初由彭博、BlinkDL提出,旨在结合Transformer的高效训练能力(可并行化)和[[RNN]]的推理效率。 |
| − | * 正式发布的最新版本是RWKV-7,⽬前RMKV-8仍处于实验阶段。RWKV-7 "Goose"作为该系列的最新进展,通过恒定内存占用和每token恒定推理时间的设计,解决了传统Transformer的长序列处理瓶颈。 | + | * 正式发布的最新版本是RWKV-7,⽬前RMKV-8仍处于实验阶段。RWKV-7 "Goose"作为该系列的最新进展,通过恒定内存占用和每token恒定推理时间的设计,解决了传统 [[Transformer架构|Transformer]] 的长序列处理瓶颈。 |
| | * 2023 年 9 月 20 日,RWKV 开源项目正式加入 Linux 开源基金会。如今的 RWKV 项目是一个开源的非盈利组织,隶属于 Linux 基金会,部分算力曾由赞助商支持。 | | * 2023 年 9 月 20 日,RWKV 开源项目正式加入 Linux 开源基金会。如今的 RWKV 项目是一个开源的非盈利组织,隶属于 Linux 基金会,部分算力曾由赞助商支持。 |
| | | | |
| 第19行: |
第19行: |
| | | | |
| | === 核心特点: === | | === 核心特点: === |
| − | RWKV 模型结合了 Transformer 与 RNN 的优点,具备以下几个显著特性: | + | RWKV 模型结合了 [[Transformer架构|Transformer]] 与 [[RNN]] 的优点,具备以下几个显著特性: |
| | | | |
| − | *线性推理效率:RWKV 采用类 RNN 的时间递推结构,每一步仅依赖前一状态,推理时无需处理整个上下文,具备常数内存与线性时间复杂度,适合实时和资源受限场景,'''提高线性推理效率'''。 | + | *线性推理效率:RWKV 采用类 [[RNN]] 的时间递推结构,每一步仅依赖前一状态,推理时无需处理整个上下文,具备常数内存与线性时间复杂度,适合实时和资源受限场景,'''提高线性推理效率'''。 |
| | *并行训练能力:尽管具有递归结构,RWKV 引入了 Token-Shift与 Time-Mix<ref name=":1">Peng B, Alcaide E, Anthony Q, et al. Rwkv: Reinventing rnns for the transformer era[J]. arXiv preprint arXiv:2305.13048, 2023.</ref> 等机制,使其训练过程可以像 Transformer 一样实现高度并行,显著提升训练效率。 | | *并行训练能力:尽管具有递归结构,RWKV 引入了 Token-Shift与 Time-Mix<ref name=":1">Peng B, Alcaide E, Anthony Q, et al. Rwkv: Reinventing rnns for the transformer era[J]. arXiv preprint arXiv:2305.13048, 2023.</ref> 等机制,使其训练过程可以像 Transformer 一样实现高度并行,显著提升训练效率。 |
| | *兼容 Transformer 的训练范式:RWKV 可无缝使用 Transformer 社区常见的预训练与微调方法(如语言建模、指令微调、LoRA 等),便于迁移与应用。 | | *兼容 Transformer 的训练范式:RWKV 可无缝使用 Transformer 社区常见的预训练与微调方法(如语言建模、指令微调、LoRA 等),便于迁移与应用。 |
| 第77行: |
第77行: |
| | | | |
| | TimeMix 模块通过对当前输入和上一时刻输入进行线性加权融合,并引入时间衰减因子,实现了模拟 Transformer 注意力中“历史上下文影响”的能力。这种设计既保证了 RWKV 在推理时能保持序列的因果性,又能在训练时支持并行计算,是 RWKV 能够兼顾效率与表现力的关键。 | | TimeMix 模块通过对当前输入和上一时刻输入进行线性加权融合,并引入时间衰减因子,实现了模拟 Transformer 注意力中“历史上下文影响”的能力。这种设计既保证了 RWKV 在推理时能保持序列的因果性,又能在训练时支持并行计算,是 RWKV 能够兼顾效率与表现力的关键。 |
| | + | <syntaxhighlight lang="python"> |
| | decay = exp(-exp(time_decay)) | | decay = exp(-exp(time_decay)) |
| | k = x_k * time_mix_k + x_k_prev * (1 - time_mix_k) | | k = x_k * time_mix_k + x_k_prev * (1 - time_mix_k) |