Skip to content

Latest commit

 

History

History
251 lines (143 loc) · 9.52 KB

main-log.md

File metadata and controls

251 lines (143 loc) · 9.52 KB

GLM-130B 训练日志

模型信息

  • 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

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(废除)

Image.png

换上平衡后且不泄漏的 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 再次爆炸,换纯文本(废除)

Image.png

  • 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 逐渐修改数据分布(废除)

Image.png

Image.png

文本似乎能稳定,那么尝试逐渐平滑修改数据分布, 从 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

Image.png

  • 从 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

Image.png

Image.png

  • 从 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 爆炸

Image.png

Image.png

  • 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

Image.png

Image.png

  • 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

Image.png

Image.png

  • 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