GLM-130B 训练日志
模型信息
- 130B:70 layers,12288 hidden size,32768 ffn hidden size, 150000 vocab size
- 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
2022-05-06 04:00 开始训练
- glm-130B-2022.05.05-19:53:15
2022-05-07 20:14 节点故障
坏掉 n30041, n30157 两个点,更改保存间隔为 100step,从 4000 step 开始训练
- glm-130B-2022.05.07-13:44:59
2022-05-10 00:00 提升 alpha
加入 --shrink-embedding-gradient-steps 6000 500
从 6000 step 开始训练
- glm-130B-2022.05.09-16:02:04
2022-05-11 12:13 节点故障
坏掉 n30115 节点,从 7300 step 开始训练
- glm-130B-2022.05.11-05:55:32
2022-05-20 00:03 节点故障
坏掉 n30066 节点,从 15400 step 开始训练
- glm-130B-2022.05.19-19:56:19
再换一批节点,从 15600 step 开始训练
- glm-130B-2022.05.20-01:58:57
2022-05-21 12:40 换节点
训练效率一直只有 127T 左右,怀疑之前加入的 n30076 存在问题,踢出后从 16600 step 开始训练,似乎不解决问题。
2022-05-22 19:27 节点故障
n30126 失联
- glm-130B-2022.05.22-14:15:41
2022-05-26 04:30 节点故障
n30039 掉卡
- glm-130B-2022.05.25-22:23:12
2022-05-28 11:50 更换中英多任务数据(废除)
从 22800 开始训练,换中英多任务数据
- glm-130B-2022.05.28-03:52:26
- events.out.tfevents.1653709957.9droa42ltcad5-0.1858.0(移除)
2022-05-28 16:50 更换英文多任务数据(废除)
换新的多任务数据 22900 左右出现 nan,挂掉训练,检查发现中文多任务数据噪声极大,从 22800 换成平衡后的 t0 原始数据开始训练
- glm-130B-2022.05.28-09:18:12
- events.out.tfevents.1653729502.9droa42ltcad5-0.5648.0(移除)
2022-05-28 20:50 加入 warmup(废除)
换上平衡后且不泄漏的 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(移除)
2022-05-29 01:30 再次爆炸,换纯文本(废除)
- warmup 以后还是炸了,分析可能是 distribution 变动仍然太过剧烈,先换纯文本 + reshuffle 尝试训练,从 22800 加载
- glm-130B-2022.05.28-18:05:33
- events.out.tfevents.1653761143.9droa42ltcad5-0.9744.0(废除)
- global_step23200_text
2022-05-29 逐渐修改数据分布(废除)
文本似乎能稳定,那么尝试逐渐平滑修改数据分布, 从 22800 开始,逐渐修改数据分布到 t0 平衡数据
- glm-130B-2022.05.29-05:17:06
- events.out.tfevents.1653801436.9droa42ltcad5-0.13868.0(废除)
2022-05-29 22:40 逐渐修改数据分布并全面 warmup
- 又挂了,分析可能是换新分布学习率也需要 warmup
- 从 22800 开始训练,数据和 lr 都 warmup 2000 步,shrink embbeding graident 从 0.2 warmup 6000 步到 1
- glm-130B-2022.05.29-17:35:45
2022-05-30 14:00 挂节点
更改了一下参数配置,发现之前 shrink embedding 的步数写错了(26850 步),现在改成 6000 步。升级了一下 lr auto warmup 的逻辑,写成绝对 samples 数量。从 global_step23200 开始
我们发现这次训练卡在了数据加载,排查后发现是 Lustre 文件系统的故障,导致 2.3T 文本数据读不出来,且工程师无法修复;最终重新从移动硬盘拷贝了一次数据
- glm-130B-2022.05.31-02:18:24
2022.05.03 20:00 加 DeepStruct 数据
- 维持原有 transform 过程不变,但直接加入 DeepStruct 数据,从 23500 开始
2022-06-01 22:22 换清洗数据
之前的多任务数据 t0 和 deepsturct 各有一个任务的 target 异常,重新清洗后更换,从 24500 开始
- glm-130B-2022.06.01-14:24:33
2022-06-02 12:00 节点故障
- n30145 CPU 故障,从 25000 重启训练,lr 和 数据集已经 transfromer 完毕,所以配置直接去掉 warmup
- glm-130B-2022.06.02-04:35:05
2022-06-02 09:30 加入 multitask loss 打印
25800steps 开始,加入 multitask loss 打印
- glm-130B-2022.06.03-01:40:12
2022-06-02 15:00 降低学习率,加入 gpt/bert loss 打印
loss 降低比较慢,讨论可能是学习率太大了,26000steps 开始,学习率砍半
- glm-130B-2022.06.03-07:26:16
2022-06-06 17:00 集群维护
集群从 9 点到 5 点升级驱动,从 开始训练
- glm-130B-2022.06.06-10:00:39
PS:观察到共享文件系统读取速度显著改善,现在加载 ckpt 几乎只需要 1 分钟
2022-06-08 08:00 坏点
- glm-130B-2022.06.08-00:00:37
2022-06-09 13:30 训练卡住
23100 开始恢复
- glm-130B-2022.06.09-05:27:54
2022-06-12 10:00 loss 爆炸
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
2022-06-14 03:00 loss 爆炸
35250 loss 又炸了,和 33700 的表现几乎一样,都是完全没有征兆突然爆炸
tensorboard 记录:glm-130B-35250
- 从 35200 开始加载,shrink embedding gradient 0.5 → 0.1
- glm-130B-2022.06.14-02:28:21
2022-06-19 00:10 节点故障
n30085 挂了,从 39600 恢复
- glm-130B-2022.06.18-17:49:53
2022-06-20 09:10 loss 爆炸
- tensorboard 记录:glm-130B-40800
--skip-train-iteration-range 40701-40900
- 从 40700 开始重新加载并跳过 40701-40900 数据
- glm-130B-2022.06.20-03:36:13
2022-06-22 10:40 梯度 spike
- grad 有点小 spike,看起来后续恢复了,但 loss 似乎遇到了比较大的波动
--skip-train-iteration-range 40701-40900
- 从 42400 开始重新加载并跳过 42401-42600 数据
- glm-130B-2022.06.22-02:38:20
2022-06-22 21:00 梯度 spike
- 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
2022.06.26 16:00 节点故障
- 节点 NVLink Error,重启训练
- glm-130B-2022.06.26-13:13:51
2022.06.29 00:00 恢复 position_id
- 48100 从原先配置开始训练
- glm-130B-2022.06.29-13:53:21