Open1
Transformers
DFT作ろうとして失敗した
何をまちがえていたか。
- gradient accumlationに対応できてなかった。
- num_items_in_batchでlossを割るべきだった
loss = loss.sum() / num_items_in_batch
- 自分は、もともとの実装通り
num_activate_elements
で割っている
- num_items_in_batchでlossを割るべきだった
- となると、もともとのSFTって、gradient accumlationあっているのか??
- なぜなら、SFTが
- SFT-TrainerはTrainerのcoupute_lossをつかっている
- Trainerのcompute_lossはcoupute_loss_funcを入れない限り、CausalLMではLabelSmootherを使う
- LabelSmootherは、num_items_in_batchを受け取らない。
- なぜなら、SFTが