离域代号 ID 触发 CUDA 设备侧维护, 而不是验证错误
作者: piotrmaciejbednarski创建于 2026年7月24日更新于 2026年7月26日
□ 说明
在模型词汇之外向运行在CUDA上的RWKV-7模型传递一个代号ID会导致低水平的"device-side profile". 然后 CUDA 上下文仍然处于无效状态,所以 Python/Jupyter 进程必须重新启动.
运行时间目前直接索引嵌入式矩阵而不首先验证符号ID:
[Python] x = z ["emb. weight" [idx] (中文(简体) ).
这在使用与检查站不相容的活化剂时可能会不慎发生. 就我而言,这是在把65 536个托起的RWKV World 标语器与一个Pile 检查站(其词汇尺寸为50 304个)合并时发生的。
标致器不匹配是一个集成错误,但由此产生的故障模式可以通过运行时间安全处理.
□ 环境
* `rwkv==.31'
* Python 3.12 (英语).
* PyTorch 2.8.0+cu128 维基语录链接:名人名言 - 文学作品 - 谚语 - 谚语
* 团结与民主联盟 12.8
* NVIDIA L40S (英语).
* 乌邦图24.04
* 型号:`RWKV-x070-Pile-421M-20241127-ctx4096'
* 战略:`cuda fp16'
环境变量:
```(Python)
os.environ ["RWKV V7 ON"]="1" (韩语).
os.environ ["RWKV JIT ON"]="1" (韩语).
os.environ ["RWKV CUDA ON"]="1" (韩语).□ 最小复制
导入 Os
os.environ ["RWKV V7 ON"]="1" (韩语).
os.environ ["RWKV JIT ON"]="1" (韩语).
os.environ ["RWKV CUDA ON"]="1" (韩语).
从rwkv.model导入 RWKV
型号 = RWKV(
型号="/path/to/RWKV-x070-Pile-421M-20241127-ctx4096",.
战略="cuda fp16",
(中文(简体) ).
打印 (“ 词汇大小 : ” , model. args.vocab small)
第一个无效的代号:
无效 token=int(model.args.vocab size)
model.forward([无效 token],无)□ 实际行为
无效的索引到达了 CUDA 嵌入式搜索,并触发类似以下的断言:
页:1 /pytorch/aten/src/ATen/native/cuda/IndexKernelUtils.cu:16: 向量化 gather 内核 : 缩写 : "超限的集合内核指数"失败.
运行时错误: CUDA 错误: 设备侧面声明被触发
由于CUDA操作是同步的,Python回溯可能指向后期在RWKV前行通道内无关的操作.
在断言后,后续的CUDA操作也失败了,必须重启Jupyter内核或Python进程.
□ 预期行为
运行时间应在启动任何CUDA操作前验证代号,并提出描述性Python例外,例如:
页:1
价值 Error:token ID 50304不在模型词汇范围 [0, 50303].
这可能表示符号/检查点不匹配 。CUDA的上下文在例外之后仍然可以使用。
□ 建议修正
在“RWKV.forward”开头验证标尺和列出输入,然后拨打“forward 1”或“forward seq”:
def 前进( 自, idx, 状态, 完全 输出=虚假 ) :
order ids = idx if isintance(idx, list) 其它 [idx]
如果不是符号( ID):
提高值Error( “ 切入序列不能为空 ” )
最小 = 分( token ids)
最大值 = 最大值 (token ids)
vocab 大小 = int(self.args.vocab 大小)
如果最小 < 0 或最大 > vocab 大小:
提高值错误( R)
(f) 数据是:
. . . . . . .内容来源: BlinkDL/RWKV-LM