RWKV(全称 Receptance Weighted Key Value)是一种结合 Transformer 与 RNN 特点的模型架构。其核心思路是:训练时可像 GPT 那样并行计算,推理时则像 RNN 那样逐 token 顺序处理。资料称其具备 O(n) 线性时间推理、无 KV 缓存、每 token 恒定内存占用以及不受固定窗口限制的长上下文能力。
用途与主要能力 该架构主要用于需要高效推理和长序列处理的场景。资料列出其关键优势:线性时间复杂度(O(n),而 Transformer 为 O(n²))、无 KV 缓存、每 token 内存恒定、可无限上下文、训练可并行化、推理顺序执行。与 Transformer 对比时,资料给出示例:处理 100 万 token 序列时,Transformer 的 KV 缓存约需 400GB,而 RWKV 的状态仅约 400KB;推理时 Transformer 第 1000 个 token 需 1000 次计算,RWKV 每个 token 均只需 1 次计算。
使用方式 资料提供安装命令:先安装 PyTorch(pip install torch --upgrade --extra-index-url https://download.pytorch.org/whl/cu121),再安装依赖(pip install pytorch-lightning==1.9.5 deepspeed wandb ninja --upgrade),最后安装 RWKV(pip install rwkv)。基础用法中,通过 rwkv.model.RWKV 加载模型并指定策略(如 'cuda fp16'),设置环境变量 RWKV_JIT_ON='1' 和 RWKV_CUDA_ON='1' 启用 CUDA 加速。model.forward 支持两种模式:传入 None 状态时并行处理整个序列(GPT 模式),或在多次调用间传递 state 逐段处理(RNN 模式),两者结果一致。
资料还给出四个常见工作流:一是流式文本生成,使用 rwkv.utils.PIPELINE 和分词器文件,逐 token 生成并采样;二是长上下文处理,分块流式传入超长文档,state 累积全部信息且内存为 O(1);三是微调,示例使用 pytorch_lightning 的 Trainer 配合 deepspeed_stage_2、bf16 精度等进行训练;四是与 Transformer 的内存和速度对比说明。
适用场景 资料建议在以下情况使用 RWKV:需要超长上下文(10 万 token 以上)、希望内存占用恒定、构建流式应用、需要 RNN 效率同时保持 Transformer 性能、内存受限部署。若追求绝对最佳性能且有充足算力,可考虑 Transformer;若需要状态空间模型可考虑 Mamba,需要保留机制可考虑 RetNet,需要卷积方法可考虑 Hyena。
硬件要求与限制 资料列出 FP16 下的显存需求:169M 模型约 1GB,430M 约 2GB,1.5B 约 4GB,3B 约 8GB,7B 约 16GB,14B 约 32GB。GPU 需 NVIDIA(CUDA 11.6+),也可用 CPU。训练时若显存不足,可使用梯度检查点和 DeepSpeed(如 deepspeed_stage_3);推理慢可启用 RWKV_CUDA_ON;RNN 模式下必须在 forward 调用间持续传递 state,否则会丢失上下文。资料还提到 RWKV-7 的架构改进(2025 年 3 月)与多模态能力,以及相关论文、GitHub、文档和模型地址。