[ PROMPT_NODE_22730 ]
rwkv7
[ SKILL_DOCUMENTATION ]
# RWKV-7: 最新改进 (2025 年 3 月)
## 概述
RWKV-7 是 2025 年 3 月发布的最新版本,引入了多模态能力并改进了 14B+ 参数的扩展性。
**论文**: https://arxiv.org/abs/2503.14456 (2025 年 3 月)
## 相比 RWKV-6 的关键改进
### 1. 增强的数值稳定性
**RWKV-6 中的问题**:
python
# 指数运算在大型模型中可能溢出
att_aa = exp(w) * att_aa + k * v # 溢出风险!
**RWKV-7 解决方案**:
python
# 使用安全指数运算的对数空间计算
log_att_aa = log_softmax([log(k * v), log_w + log(att_aa)])
att_aa = exp(log_att_aa)
**结果**:训练稳定性提升至 14B 参数 (RWKV-6 在超过 7B 时表现吃力)
### 2. 改进的时间衰减初始化
**RWKV-6**:
python
# 简单的对数间距
time_decay[i] = -5.0 + 8.0 * (i / n_layers)
**RWKV-7**:
python
# 具有更好范围的自适应逐头衰减
for layer in range(n_layers):
for head in range(n_heads):
# 不同头专注于不同的时间尺度
alpha = (layer / n_layers) ** 0.7 # 非线性递进
beta = (head / n_heads) * 0.5
time_decay[layer, head] = -6.0 + 9.0 * alpha + beta
# 结果:更好的长/短期记忆平衡
**影响**:长上下文任务的困惑度 (perplexity) 提升 15-20%
### 3. 多头 Time-Mixing 细化
**RWKV-6 多头**:
python
# 简单拼接
heads = [head_i(x) for head_i in heads]
output = concat(heads)
**RWKV-7 多头**:
python
# 注意力风格的输出投影
heads = [head_i(x) for head_i in heads]
concat_heads = concat(heads)
output = output_proj(concat_heads) # 可学习的混合
# 加上:逐头层归一化
for i, head in enumerate(heads):
heads[i] = head_norm[i](head) # 每个头独立的归一化
**结果**:更好的头专业化,质量提升 8-12%
### 4. 旋转位置编码 (RoPE) 集成
**RWKV-7 新特性**:
python
class RWKV7_TimeMix(nn.Module):
def __init__(self, d_model, n_heads):
super().__init__()
self.rope = RotaryEmbedding(d_model // n_heads)
def forward(self, x):
k = self.key(x) # (B, T, d_model)
v = self.value(x)
# 对 key 应用 RoPE
k = self.rope.rotate_queries_or_keys(k)
# 带有位置感知 key 的 WKV
wkv = self.wkv(k, v)
return wkv
**用途**:在不破坏 O(n) 复杂度的前提下提升位置感知能力
### 5. RWKV-7 块结构
``