旋转嵌入预先分配了比实际需要多 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