我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。
既然要執行模型訓練,就必須要談到 Optimizer,然而為了避免 Overfitting,通常會排程 Decay Rate,也正因如此,需要區隔哪些 Optimizer 中的參數不被 Decay Rate 排程納管 (也就是不 Decay),程式為:
param_optimizer = list(model.named_parameters())
no_decay = ['bias', 'LayerNorm.weight']
optimizer_grouped_parameters = [{'params': [p for n, p in param_optimizer if not any(nd in n for nd in no_decay)], 'weight_decay_rate': 0.1}, {'params': [p for n, p in param_optimizer if any(nd in n for nd in no_decay)], 'weight_decay_rate': 0.0}]