searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

llama2-70b模型spike问题验证

2024-05-07 01:53:52
139
0

llama2-70b模型spike问题验证

1.方法调研

1.1 loss spike

loss spike指的是预训练过程中,尤其容易在大模型(100B以上)预训练过程中出现的loss突然暴涨的情况。

1.2 Adam优化器导致尖刺问题出现

在理论层面上,本文对随机事件的叠加进入单峰的正态分布的必要条件进行了研究和解释。可以通过道尔顿板实验来更好地理解这一点。文章指出,要满足这一条件,各个随机事件之间应该是相互独立的。然而,梯度变化和参数更新的变化并不能很好地满足独立性条件。事实上,这正是导致参数更新振荡、出现loss spike以及loss不收敛的重要原因之一。在训练过程中,loss spike的出现与梯度更新幅度、ε的大小以及批处理大小这三个条件密切相关。

1.3 论文结论

浅层网络的梯度更新幅度和ε的大小与loss spike的出现密切相关,而与batch大小的相关性问题则不太明显。实际上,当浅层网络的参数突然进入之前长时间未达到的状态时,与当前深层参数的状态相互作用会导致连锁反应,使得模型进入非稳态。通常情况下,即使出现loss spike,模型也会自动恢复到正常状态,但也有可能永远无法恢复。

2.进行实验

128机,1024卡完成复现以及问题解决。

2.1 系统配置

  • 机器:昇腾910B
  • can­n版本:7.0.1
  • torch版本:2.1.0
  • python版本:3.8
  • dri­ver版本:23.0.1

2.2 训练参数配置

AdamW参数设置

实验组数

LR

beta1

beta2

eps

论文参数

1.5e-4

0.9

0.95

1e-5

lossspike复现参数

1.5e-4

0.9

0.999

1e-8

2.3数据集使用

选取部分Wan­juan的EN数据集,转换后共144G

2.4 论文参数结果(未发现尖刺)

完整训练参数:

----------------------- arguments ------------------------
  accumulate_allreduce_grads_in_fp32 .............. True
  adam_beta1 ...................................... 0.9
  adam_beta2 ...................................... 0.95
  adam_eps ........................................ 1e-05
  add_bias_linear ................................. False
  add_gate ........................................ True
  adlr_autoresume ................................. False
  adlr_autoresume_interval ........................ 1000
  aml_data_download_path .......................... None
  apply_layernorm_1p .............................. False
  apply_query_key_layer_scaling ................... False
  apply_residual_connection_post_layernorm ........ False
  async_tensor_model_parallel_allreduce ........... False
  attention_dropout ............................... 0.0
  attention_softmax_in_fp32 ....................... True
  auto_recompute_device_size ...................... -1
  auto_recompute_profiling_step ................... 10
  barrier_with_L1_time ............................ True
  bert_binary_head ................................ True
  bert_load ....................................... None
  bf16 ............................................ True
  bias_dropout_fusion ............................. True
  bias_gelu_fusion ................................ False
  biencoder_projection_dim ........................ 0
  biencoder_shared_query_context_model ............ False
  block_data_path ................................. None
  checkpoint_activations .......................... False
  checkpoint_block_layer .......................... 25
  checkpoint_in_cpu ............................... False
  checkpoint_num_layers ........................... 1使用论文参数进行训练,进行到1543个step,训练因为hc­cl通信问题出现中断,其中的loss曲线如图所示:

可以看到出现两个较为明显的尖刺。

梯度曲线如图所示:

总结分析

根据实验复现了相应的结果并进行了解决。

  1. 现阶段进行的训练如果出现尖刺后loss恢复正常,那么对模型最终结果不会产生较大影响。
  2. 修改AdamW优化器参数,单独降低ep­s,或者适当调整ep­s以及减小­be­ta2参数,会避免产生loss spike。
  3. 其他解决方法还包括:
  • PaLM和GLM130B提到的出现loss spike后更换­batch样本的方法(常规方法,但是成本比较高)
  • 减小learn­ing rate,这是个治标不治本的办法,对更新参数的非稳态没有做改进。
  • GLM130B采取的是把浅层梯度直接乘以缩放系数 alph来减小浅层梯度更新值。
0条评论
0 / 1000
1****m
11文章数
0粉丝数
1****m
11 文章 | 0 粉丝
1****m
11文章数
0粉丝数
1****m
11 文章 | 0 粉丝
原创

llama2-70b模型spike问题验证

2024-05-07 01:53:52
139
0

llama2-70b模型spike问题验证

1.方法调研

1.1 loss spike

loss spike指的是预训练过程中,尤其容易在大模型(100B以上)预训练过程中出现的loss突然暴涨的情况。

1.2 Adam优化器导致尖刺问题出现

在理论层面上,本文对随机事件的叠加进入单峰的正态分布的必要条件进行了研究和解释。可以通过道尔顿板实验来更好地理解这一点。文章指出,要满足这一条件,各个随机事件之间应该是相互独立的。然而,梯度变化和参数更新的变化并不能很好地满足独立性条件。事实上,这正是导致参数更新振荡、出现loss spike以及loss不收敛的重要原因之一。在训练过程中,loss spike的出现与梯度更新幅度、ε的大小以及批处理大小这三个条件密切相关。

1.3 论文结论

浅层网络的梯度更新幅度和ε的大小与loss spike的出现密切相关,而与batch大小的相关性问题则不太明显。实际上,当浅层网络的参数突然进入之前长时间未达到的状态时,与当前深层参数的状态相互作用会导致连锁反应,使得模型进入非稳态。通常情况下,即使出现loss spike,模型也会自动恢复到正常状态,但也有可能永远无法恢复。

2.进行实验

128机,1024卡完成复现以及问题解决。

2.1 系统配置

  • 机器:昇腾910B
  • can­n版本:7.0.1
  • torch版本:2.1.0
  • python版本:3.8
  • dri­ver版本:23.0.1

2.2 训练参数配置

AdamW参数设置

实验组数

LR

beta1

beta2

eps

论文参数

1.5e-4

0.9

0.95

1e-5

lossspike复现参数

1.5e-4

0.9

0.999

1e-8

2.3数据集使用

选取部分Wan­juan的EN数据集,转换后共144G

2.4 论文参数结果(未发现尖刺)

完整训练参数:

----------------------- arguments ------------------------
  accumulate_allreduce_grads_in_fp32 .............. True
  adam_beta1 ...................................... 0.9
  adam_beta2 ...................................... 0.95
  adam_eps ........................................ 1e-05
  add_bias_linear ................................. False
  add_gate ........................................ True
  adlr_autoresume ................................. False
  adlr_autoresume_interval ........................ 1000
  aml_data_download_path .......................... None
  apply_layernorm_1p .............................. False
  apply_query_key_layer_scaling ................... False
  apply_residual_connection_post_layernorm ........ False
  async_tensor_model_parallel_allreduce ........... False
  attention_dropout ............................... 0.0
  attention_softmax_in_fp32 ....................... True
  auto_recompute_device_size ...................... -1
  auto_recompute_profiling_step ................... 10
  barrier_with_L1_time ............................ True
  bert_binary_head ................................ True
  bert_load ....................................... None
  bf16 ............................................ True
  bias_dropout_fusion ............................. True
  bias_gelu_fusion ................................ False
  biencoder_projection_dim ........................ 0
  biencoder_shared_query_context_model ............ False
  block_data_path ................................. None
  checkpoint_activations .......................... False
  checkpoint_block_layer .......................... 25
  checkpoint_in_cpu ............................... False
  checkpoint_num_layers ........................... 1使用论文参数进行训练,进行到1543个step,训练因为hc­cl通信问题出现中断,其中的loss曲线如图所示:

可以看到出现两个较为明显的尖刺。

梯度曲线如图所示:

总结分析

根据实验复现了相应的结果并进行了解决。

  1. 现阶段进行的训练如果出现尖刺后loss恢复正常,那么对模型最终结果不会产生较大影响。
  2. 修改AdamW优化器参数,单独降低ep­s,或者适当调整ep­s以及减小­be­ta2参数,会避免产生loss spike。
  3. 其他解决方法还包括:
  • PaLM和GLM130B提到的出现loss spike后更换­batch样本的方法(常规方法,但是成本比较高)
  • 减小learn­ing rate,这是个治标不治本的办法,对更新参数的非稳态没有做改进。
  • GLM130B采取的是把浅层梯度直接乘以缩放系数 alph来减小浅层梯度更新值。
文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0