- 130B:70 layers,12288 hidden size,32768 ffn hidden size, 150000 vocab size
- MP = 4, PP = 8
- GLM + Rotary Positional Embedding + GeGLU + DeepNorm
- FP32 softmax with QKV scaling(no PB-Relax)
- Shrink embedding gradient with
$\alpha=0.1$ - Global batch size: 4224
- PyTorch 1.11 / CUDA 11.3
- LargeScale@400893da37bb5cbe22c29e41c02a052369cc72ce
- DeepSpeed 0.6.1
- apex@master
- 96 nodes, BSZ=176 * 24=4224
- glm-130B-2022.05.05-19:34:16:134TFLOPS, 88.5s/iter, 48samples/s,
- 96 nodes, BSZ=256 * 24=6144
- glm-130B-2022.05.05-19:43:13:141TFLOPS, 122.5s/iter, 50samples/s
- glm-130B-2022.05.05-19:53:15
坏掉 n30041, n30157 两个点,更改保存间隔为 100step,从 4000 step 开始训练
- glm-130B-2022.05.07-13:44:59
加入 --shrink-embedding-gradient-steps 6000 500
从 6000 step 开始训练
- glm-130B-2022.05.09-16:02:04
坏掉 n30115 节点,从 7300 step 开始训练
- glm-130B-2022.05.11-05:55:32
坏掉 n30066 节点,从 15400 step 开始训练
- glm-130B-2022.05.19-19:56:19
再换一批节点,从 15600 step 开始训练
- glm-130B-2022.05.20-01:58:57
训练效率一直只有 127T 左右,怀疑之前加入的 n30076 存在问题,踢出后从 16600 step 开始训练,似乎不解决问题。
n30126 失联
- glm-130B-2022.05.22-14:15:41
n30039 掉卡
- glm-130B-2022.05.25-22:23:12
从 22800 开始训练,换中英多任务数据
- glm-130B-2022.05.28-03:52:26
- events.out.tfevents.1653709957.9droa42ltcad5-0.1858.0(移除)
换新的多任务数据 22900 左右出现 nan,挂掉训练,检查发现中文多任务数据噪声极大,从 22800 换成平衡后的 t0 原始数据开始训练
- glm-130B-2022.05.28-09:18:12
- events.out.tfevents.1653729502.9droa42ltcad5-0.5648.0(移除)
换上平衡后且不泄漏的 t0 原始数据开始训练仍然有问题,推测是平衡后一些任务占比变大,其实等价于加入新任务的情况,加入参数 --warmup-samples-after-loading 2112000
warmup 500 步从 22800 开始训练
- glm-130B-2022.05.28-12:57:24
- events.out.tfevents.1653742654.9droa42ltcad5-0.7942.0(移除)
- warmup 以后还是炸了,分析可能是 distribution 变动仍然太过剧烈,先换纯文本 + reshuffle 尝试训练,从 22800 加载
- glm-130B-2022.05.28-18:05:33
- events.out.tfevents.1653761143.9droa42ltcad5-0.9744.0(废除)
- global_step23200_text
- 配置文件
文本似乎能稳定,那么尝试逐渐平滑修改数据分布, 从 22800 开始,逐渐修改数据分布到 t0 平衡数据
- glm-130B-2022.05.29-05:17:06
- events.out.tfevents.1653801436.9droa42ltcad5-0.13868.0(废除)
- 又挂了,分析可能是换新分布学习率也需要 warmup
- 从 22800 开始训练,数据和 lr 都 warmup 2000 步,shrink embbeding graident 从 0.2 warmup 6000 步到 1
- glm-130B-2022.05.29-17:35:45
更改了一下参数配置,发现之前 shrink embedding 的步数写错了(26850 步),现在改成 6000 步。升级了一下 lr auto warmup 的逻辑,写成绝对 samples 数量。从 global_step23200 开始
我们发现这次训练卡在了数据加载,排查后发现是 Lustre 文件系统的故障,导致 2.3T 文本数据读不出来,且工程师无法修复;最终重新从移动硬盘拷贝了一次数据
- glm-130B-2022.05.31-02:18:24
- 维持原有 transform 过程不变,但直接加入 DeepStruct 数据,从 23500 开始
之前的多任务数据 t0 和 deepsturct 各有一个任务的 target 异常,重新清洗后更换,从 24500 开始
- glm-130B-2022.06.01-14:24:33
- n30145 CPU 故障,从 25000 重启训练,lr 和 数据集已经 transfromer 完毕,所以配置直接去掉 warmup
- glm-130B-2022.06.02-04:35:05
25800steps 开始,加入 multitask loss 打印
- glm-130B-2022.06.03-01:40:12
loss 降低比较慢,讨论可能是学习率太大了,26000steps 开始,学习率砍半
- glm-130B-2022.06.03-07:26:16
集群从 9 点到 5 点升级驱动,从 开始训练
- glm-130B-2022.06.06-10:00:39
PS:观察到共享文件系统读取速度显著改善,现在加载 ckpt 几乎只需要 1 分钟
- glm-130B-2022.06.08-00:00:37
23100 开始恢复
- glm-130B-2022.06.09-05:27:54
33700 开始 loss 炸了,loss-scale 在 33710 左右突然下跌然后 loss 在 33740 左右爆炸
- tensorboard 记录:glm-130B-33700
- 从 33600 开始加载,shrink embedding gradient 1 → 0.5
- glm-130B-2022.06.12-02:20:49
35250 loss 又炸了,和 33700 的表现几乎一样,都是完全没有征兆突然爆炸
tensorboard 记录:glm-130B-35250
- 从 35200 开始加载,shrink embedding gradient 0.5 → 0.1
- glm-130B-2022.06.14-02:28:21
n30085 挂了,从 39600 恢复
- glm-130B-2022.06.18-17:49:53
- tensorboard 记录:glm-130B-40800
--skip-train-iteration-range 40701-40900
- 从 40700 开始重新加载并跳过 40701-40900 数据
- glm-130B-2022.06.20-03:36:13
- grad 有点小 spike,看起来后续恢复了,但 loss 似乎遇到了比较大的波动
--skip-train-iteration-range 40701-40900
- 从 42400 开始重新加载并跳过 42401-42600 数据
- glm-130B-2022.06.22-02:38:20
- grad 又有 spike,但是 loss-scale 没有一降到底,推测应该可以恢复
- 这几天的反复 spike,我们分析可能是后期 learning rate 降低太慢,将 min-lr 从 8e-6 调整到 4e-6
--min-lr 4e-6
- 从 42700 加载开始训练
- glm-130B-2022.06.22-13:03:53
- 节点 NVLink Error,重启训练
- glm-130B-2022.06.26-13:13:51
- 48100 从原先配置开始训练
- glm-130B-2022.06.29-13:53:21