旋转嵌入预先分配了比实际需要多 10 倍的内存

作者: NJX-njx创建于 2026年3月7日更新于 2026年9月9日

□ 问题

在\GPT. init ()\中,旋转嵌入被预计算为实际序列长度为10x:

\\ ZZ self.rotary seq len = 配置.sequence len * 10 # 20480 个位置 \\

由于\MAX SEQ LEN = 2048\而训练/eval代码从未超过此长度,10x因子会将GPU内存浪费在未用cos/sin缓冲器上(比bfloat16中必要的多出10x).

□提议修补

设置为\self.rotary seq len=config.sequence len. 将回旋缓冲内存减少90%的一行变化,对培训或评价的影响为零(两者都由\MAX SEQ LEN=).

我会为此提交公关.

内容来源: karpathy/autoresearch