在代码中找到学习率的设置通常取决于使用的深度学习框架和优化器。以下是几种常见的方法:
- 查找学习率超参数:首先查看代码中是否有明确指定学习率的超参数。可以搜索代码中的变量名,例如"learning_rate"、“lr”、"eta"等,或者查看配置文件中的学习率参数。
- 查找优化器设置:深度学习框架通常提供了多种优化器(如SGD、Adam、RMSprop等),这些优化器会自动管理学习率。检查代码中优化器的初始化部分或者模型训练的主循环中,找到对优化器进行设置的代码。学习率往往作为优化器的参数之一进行设置。
- 动态学习率调整:有些代码可能使用了动态学习率调整的策略,例如学习率衰减、学习率多项式衰减、学习率余弦退火等。这些策略会随着训练的进行而调整学习率。在代码中搜索学习率更新的部分,查看是否有类似lr_scheduler这样的变量或者函数,以及相关的调用和参数设置。
学习率可视化或记录:有些代码会将学习率记录在训练过程中的日志或者可视化图表中,以便于分析和调试。查看代码中是否有将学习率记录下来的部分,并检查是否有相关的可视化函数或者日志输出。
T5的预训练进行了2^19 = 524,288 steps, warmup_steps=10^4
warmup steps一般占所有训练steps的4%-6%,直接按10^4常量lr训练可能不太合适
一般比较常见的token prediction预训练loss大约是2
现有的8张A100拆成4组两张,每两张跑一组实验,搜索合适的超参设置
第一项实验:确认lr schedule和lr rate
(第0组实验:当前已经跑出的结果,常量lr_scheduler,lr=0.01, bs=512)
第1组:inverse square root scheduler with linear warmup, lr=0.01, bs=128
持inverse square root scheduler,按总epoch的4%或6%设置warm up步长,0-warmup_steps期间lr线性增长(从0到设置的lr),随后指数衰减
epoch可以设置最大值为10,样本装载保持现有的装载方式。
第2组:inverse square root scheduler with linear warmup(与第1组一样), lr=0.005, bs=128
第3组:inverse square root scheduler with linear warmup(与第1组一样), lr=0.005, bs=128,滑动更小样本
样本装载改为每个epoch增加512*1/3的滑动步长,相当于每个样本较上一个epoch改变1/3的context
第4组:使用跟fine-tuning一样的constant learning rate scheduler, lr=0.001, bs=128 (sequence length=512)进行训练