训练时间一长,结论会翻:2 分钟要快,10 分钟要大

44 种 4–12 层结构,每种在 2 分钟和 10 分钟各跑 4 个种子。加宽 MLP 在 2 分钟时变差约 0.02,在 10 分钟时变好约 0.01;最好的 8 层在 2 分钟时比 4 层差 0.014,在 10 分钟时好 0.034。不随预算变的是层的分工:开头用局部混合,后段要有全注意力。

前 4 层:开头放全注意力差 0.057,只放 MLP 差约 0.09;加宽 MLP 在 2 分钟变差、10 分钟变好

层用字母表示:C 短卷积,A 全注意力,G 为 GDN,I 表示跳过混合。后 4 层固定为 G·A·G·A(MLP ×12),前 4 层换 17 种排法。中心模型是 C·A·G·A·G·A·G·A,120 秒 2.7020,600 秒 2.5298。前 4 层全用全注意力,两种预算都明显更差(+0.057 / +0.039)。前 4 层全用短卷积在 120 秒最好(-0.017),到 600 秒优势消失。10 分钟时的第一名是 “MLP 加宽到 ×24”(120 秒 2.7209,600 秒 2.5220)。

全注意力(A)GDN(G)短卷积(C)跳过(I)120 秒600 秒
各层,左边是第 1 层 比中心模型差多少(负数更好) MLP 加宽到 ×24 +0.019 -0.0077 第 1 层 MLP ×48 +0.020 -0.0074 2 短卷积 + 2 注意力 -0.0094 -0.0007 中心 C·A·G·A 120 秒 2.7020(基准) 600 秒 2.5298(基准) GDN/注意力交替 +0.0074 +0.0023 短卷积 + 3 GDN +0.0011 +0.0023 全短卷积 -0.017 +0.0029 全 GDN +0.011 +0.0045 跳过注意力,MLP ×24 +0.0052 +0.0045 短卷积 + 3 注意力 +0.0049 +0.0055 注意力/GDN 交替 +0.019 +0.015 先混合、后 MLP +0.014 +0.027 全注意力 +0.057 +0.039 前 2 层只有 MLP +0.048 +0.039 去掉 MLP +0.026 +0.060 前 4 层全空 +0.021 +0.070 只有 MLP,跳过混合 +0.098 +0.091
每行 4 个种子,按 600 秒的结果从好到差排。差值按种子配对计算;粗体数字超过 3 个标准误。灰底是这一组在变的 4 层。

后 4 层:要有全注意力(全换 GDN 差 0.029);去掉 MLP 在 10 分钟时代价翻倍

前 4 层固定为 C·A·G·A,后 4 层换 14 种排法。后 4 层只要有全注意力,排法差别不大,不一定要放在最后一层。去掉后 4 层的 MLP:120 秒差 +0.030,600 秒差 +0.066。10 分钟时的第一名是 “MLP 加宽到 ×24”(120 秒 2.7199,600 秒 2.5197)。

全注意力(A)GDN(G)短卷积(C)跳过(I)120 秒600 秒
各层,左边是第 1 层 比中心模型差多少(负数更好) MLP 加宽到 ×24 +0.018 -0.010 最后一层 MLP ×48 +0.022 -0.0088 最后一层 MLP ×24 +0.0047 -0.0068 最后 2 层只有 MLP +0.0040 -0.0051 全注意力 -0.0007 -0.0033 2 GDN + 2 注意力 -0.0003 -0.0017 以 GDN 结尾 +0.0046 -0.0015 跳过 GDN,MLP ×24 +0.0079 -0.0015 中心 G·A·G·A 120 秒 2.7020(基准) 600 秒 2.5298(基准) 短卷积/注意力交替 -0.0047 +0.0036 3 GDN + 注意力 +0.0055 +0.0047 全 GDN,结尾无注意力 +0.029 +0.019 只有 MLP,跳过混合 +0.031 +0.022 去掉 MLP +0.030 +0.066
每行 4 个种子,按 600 秒的结果从好到差排。差值按种子配对计算;粗体数字超过 3 个标准误。灰底是这一组在变的 4 层。

整体:10 分钟时最好的 8 层比 4 层最好好 0.034,2 分钟时反而差 0.014

10 分钟第一是 “中心,首尾 MLP ×24”(120 秒 2.7066,600 秒 2.5182),2 分钟第一的 8 层是 “全短卷积”(120 秒 2.6851,600 秒 2.5327),4 层最好的是 “4 层最好”(120 秒 2.6715,600 秒 2.5522)。加宽 MLP(前 4 层 / 后 4 层):120 秒 +0.019 / +0.018,600 秒 -0.008 / -0.010。短预算下步数更重要,长预算下容量更重要。

同事 spec 的三个 A/M 参照,各 12 个子层(A 是只有全注意力的子层,M 是只有 MLP ×12 的子层):AMAMAMAMAMAM 2.7227 / 2.5534;MAAMAMAMAMAM 2.7390 / 2.5719;MAAMAMAMMAAM 2.7398 / 2.5745(120 秒 / 600 秒)。这里 AMAMAMAMAMAM 最好,MAAMAMAMAMAM 比它差 0.016 / 0.018,和同事 pilot 里“首对交换更好”的结论相反。一个可能的原因:M 开头等于第 1 层没有任何混合。为了检验,又跑了两种:第一个子层换成短卷积 2.7133 / 2.5540;M 开头、再接短卷积 2.7305 / 2.5734。第一个子层换成短卷积,600 秒和 AMAM… 只差 +0.0006;M 开头再接短卷积,仍差 +0.020。所以关键是第一个子层要做混合,用全注意力还是短卷积不重要。

全注意力(A)GDN(G)短卷积(C)跳过(I)120 秒600 秒
各层,左边是第 1 层 比中心模型差多少(负数更好) 中心,首尾 MLP ×24 +0.0046 -0.012 4 层最好 ×2 +0.013 -0.0090 普通 Transformer +0.0056 -0.0042 短卷积 + 7 注意力 +0.0041 -0.0003 短卷积 + 3:1 +0.0017 +0.0022 GDN/注意力交替 +0.0074 +0.0023 GDN:注意力 3:1 +0.013 +0.0055 注意力/GDN 交替 +0.026 +0.017 4 层最好 -0.031 +0.022 A/M 参照 AMAMAMAMAMAM +0.021 +0.024 4 层最好拆成 A/M -0.0023 +0.033 A/M 参照 MAAMAMAMAMAM +0.037 +0.042 A/M 参照 MAAMAMAMMAAM +0.038 +0.045 全 GDN +0.087 +0.047 4 层普通 Transformer -0.0094 +0.062
每行 4 个种子,按 600 秒的结果从好到差排。差值按种子配对计算;粗体数字超过 3 个标准误。灰底是这一组在变的 4 层。

120 秒的排名只能部分预测 600 秒(名次相关 0.43),深而宽的模型后来居上

44 个不同模型,每个点是一个模型 4 个种子的均值。120 秒第一是“4 层最好”,600 秒第一是“中心,首尾 MLP ×24”。600 秒运行里第 120 秒的检查点和单独跑 120 秒的结果平均只差 0.0007(相关 1.00),所以以后一次 600 秒运行就能同时给出两种预算的分数。

4 层8 层12 子层(A/M)
2.51 2.52 2.53 2.54 2.55 2.56 2.57 2.58 2.59 2.60 2.67 2.68 2.69 2.70 2.71 2.72 2.73 2.74 2.75 2.76 训练 120 秒的 loss 训练 600 秒的 loss 中心,首尾 MLP ×24 普通 Transformer 4 层最好 4 层普通 Transformer
少数很差的模型超出范围,画在边上。

6 个注意力子层 + 6 个 MLP 子层怎么排:严格交错最好,夹心越大越差,M 开头更差

A 是只有全注意力的子层,M 是只有 MLP(×12)的子层。同一组里各种次序的参数量和每步耗时都相同(10 分钟都跑约 4502 步),差别只来自每一步学到多少。夹心 k 指底部多放 k 个 A、顶部多放 k 个 M(Press 等人 2020 年提出的 sandwich 排法),k = 0 就是严格交错。

和严格交错打平的只有夹心 1 和两两成块。从夹心 2 开始越夹越差:夹心 2 +0.014,夹心 3 +0.031,夹心 4 +0.049,夹心 5 +0.076。M 开头都更差,同事 pilot 里最好的 MAAMAMAMAMAM 差 +0.016。

AAMAMAMAMAMM(夹心 1) -0.0012 AAMMAAMMAAMM +0.0033 AAAMAMAMAMMM(夹心 2) +0.014 MAAMAMAMAMAM +0.016 AAAMMMAAAMMM +0.023 MAMAMAMAMAMA +0.023 AAAAMAMAMMMM(夹心 3) +0.031 MMAMAMAMAMAA +0.049 AAAAAMAMMMMM(夹心 4) +0.049 AAAAAAMMMMMM(夹心 5) +0.076 MMMMMMAAAAAA +0.325
宽 256,600 秒,和严格交错 AMAMAMAMAMAM(2.5550)按种子配对,4 个种子。负数是更好。超出 0.08 的画在边上。

换成宽 512 或 16 个子层,次序的结论不变;更大的代价是把注意力和 MLP 拆开,差 0.047

宽 512、4 A + 4 M(MLP ×16,学习率用 10 分钟的最优值):交错、夹心 1、两两成块仍在噪声内,夹心 2 差 +0.024,M 开头差 +0.028,完全分开(夹心 3)差 +0.065。第一个 A 换成短卷积好 0.021。不拆开的普通块 C16·A16·A16·A16 比拆开的交错好 0.047:拆开后层数翻倍,每层的固定开销让 10 分钟的步数从 2795 降到 2282。

宽 256、8 A + 8 M 时,两两成块 -0.0016 ± 0.0008,夹心 1 +0.0010,夹心 2、3 分别 +0.0080、+0.016:子层多了,夹心也没有变好。

C16·A16·A16·A16(不拆) -0.047 A16·A16·A16·A16(不拆) -0.025 CMAMAMAM -0.021 AAMAMAMM(夹心 1) +0.0008 AAMMAAMM +0.0030 AAAMAMMM(夹心 2) +0.024 MAMAMAMA +0.028 AAAAMMMM(夹心 3) +0.065
宽 512,600 秒,和拆开的严格交错 AMAMAMAM(2.4910)按种子配对,4 个种子。

夹心 1 在 10 组设置里合计 +0.0019 ± 0.0008:没有收益,反而比严格交错略差

夹心 1(AAMAM…MM:底部多 1 个 A、顶部多 1 个 M)和严格交错按种子配对。训练程序只允许种子 42–45,所以重复在不同的宽度、子层数、MLP 宽度和学习率上做:10 组 × 4 个种子 = 40 对。夹心 1 在 3 组里略好、7 组里略差,单组在 -0.0037 到 +0.0086 之间。

训练越久,两者越接近(同一次 600 秒运行在各时刻的读数,全部配对合计):15 秒 +0.020 ± 0.0039,30 秒 +0.0058 ± 0.0035,60 秒 +0.0044 ± 0.0017,2 分钟 +0.0037 ± 0.0016,10 分钟 +0.0019 ± 0.0008。训练程序最长只允许 600 秒。

宽 256,6+6 -0.0012 宽 512,4+4,MLP ×16 +0.0008 宽 256,8+8 +0.0010 宽 192,6+6 +0.0086 宽 384,6+6 +0.0034 宽 256,4+4 +0.0070 宽 256,7+7 -0.0005 宽 256,6+6,MLP ×24 +0.0006 宽 256,6+6,学习率 0.005 -0.0037 宽 384,8+8 +0.0032 合计(40 对) +0.0019
600 秒,夹心 1 减严格交错,负数是夹心 1 更好。黑线是 ±2 个标准误。

A 和 M 不必一样多:10 分钟最好的是 4 个 A + 12 个 M,2 分钟最好的是 3 + 6

宽 256,MLP ×12,学习率 0.01。A 的个数和 M 的个数各取 2–12(总数不超过设置语言的上限 16),A 从底部均匀铺开,最上面一个子层是 M;两者相等时就是严格交错。每格 4 个种子。黑框是这一预算下最好的一格,蓝框是同样子层总数里最好的一格。

每个子层的耗时(按 600 秒的步数拟合):一个 A 约 10.2 ms,一个 M 约 11.9 ms,固定开销约 1 ms。同样总数时最好的配比:6 个子层 3:3,8 个子层 4:4,10 个子层 4:6,12 个子层 4:8,14 个子层 4:10,16 个子层 4:12。A 和 M 每个的耗时差不多,所以这不是速度的差别:注意力子层到 3–4 个就够了,再多不如把位置给 MLP。

按种子配对(600 秒,负数是前者更好):12 个子层 4:8 比 6:6 -0.0048 ± 0.0028,反过来 8:4 比 4:8 +0.031 ± 0.0017;16 个子层 4:12 比 8:8 -0.0053 ± 0.0014,反过来 12:4 比 4:12 +0.044 ± 0.0021。

训练 2 分钟 M 子层数 → 2 3 4 6 8 10 12 2 个 A 2.788 2.768 2.736 2.731 2.741 2.763 2.786 3 个 A 2.769 2.730 2.716 2.711 2.721 2.736 2.760 4 个 A 2.758 2.730 2.713 2.714 2.722 2.745 2.761 6 个 A 2.762 2.735 2.721 2.723 2.742 2.768 8 个 A 2.774 2.748 2.739 2.746 2.763 10 个 A 2.791 2.769 2.764 2.771 12 个 A 2.812 2.789 2.787 训练 10 分钟 M 子层数 → 2 3 4 6 8 10 12 2.711 2.673 2.639 2.611 2.596 2.591 2.588 2.691 2.635 2.612 2.581 2.564 2.551 2.552 2.676 2.632 2.597 2.568 2.550 2.544 2.534 2.658 2.616 2.584 2.555 2.544 2.536 2.648 2.608 2.581 2.556 2.540 2.640 2.607 2.578 2.552 2.638 2.605 2.579
每格是最后 64 步的训练 loss,越低越好。空白格的子层总数超过 16。

MLP 总宽度不变时,M 宁多勿宽:3 M × MLP 24 +0.023,9 M × MLP 8 +0.0026(比 6 个 ×12)

6 个 A 不变,M 的个数 × MLP 倍数固定为 72(6 × 12 是严格交错)。按种子配对。

6 A + 3 M × MLP 24 +0.023 6 A + 9 M × MLP 8 +0.0026
600 秒,和 6 A + 6 M × MLP 12 比,负数是更好。

还没回答的问题

学习率固定 0.01,没有为 8 层或 12 子层单独调;更深的模型可能需要更小的学习率。

600 秒时数据会重复:每步 65,536 个 token,4 层最好的模型 6667 步,约看了 2.2 遍 2 亿 token 的训练数据;8 层中心模型 3997 步,约 1.3 遍。重复对两者的影响可能不同,方向未查。

原计划是 300 秒,但这一轮 worker 只允许 10、120、600 秒三种预算,所以用了 600 秒。