わりと大事な「スケジューラ」の話

 LORAにはたくさんのオプションがあり、かつそれぞれの意味が難解なため、多くの人がデフォルト値やwikiの推薦値を「意味もわからないまま」使っているのではないでしょうか。
 僕もそうです。

 とはいえ、知らないまま放っておくのも気持ち悪いので、ちょっとずつ調べていくことにしました。

 今回取り上げるのは「スケジューラ」です。
 具体的な働きは分かりませんが、step数と学習強度をコントロールする仕組みのようです。

--lr_scheduler="constant_with_warmup"
--lr_scheduler="cosine_with_restarts"
--lr_warmup_steps=100
--lr_scheduler_num_cycles=1

 このあたりが、スケジューラ関連のオプションです。
 「--lr_scheduler=」は、どのスケジューラを使うかで、warmupやnum_cyclesはスケジューラの挙動を制御します。
 warmupは学習開始時の学習レートを制御する数値で、おもに過学習回避のために使われ、大きくするほど序盤の学習レートが下がります。
 num cycleはcosine restartのリスタート頻度の指定らしいです(不安)。

 スケジューラの設定は、としあきwikiではcosine with restartが、easy trainingではcosineが使われており、それ以外にも「constant」や「constant with warmup」があります。

 学習効率で考えると「cosine with restart」は控えめで、constant系は全開ぶっぱ系です。
 constantはすぐ学習するので時短に向いていますが、過学習になりやすいため「収束前に過学習してしまう」なんてケースもあり、ややピーキーな印象。
 定番の「cosine with restart」は、学習率が抑えられがちなため時間がかか
りやすいが、その分過学習の心配が少ない、という特徴をもっています、

 他の人のLORAの設定を参考にするときなどは、スケジューラ次第でIRやdim・alphaの効果が大きく変わるので注意が必要です。

 この2つは覚え方がかなり違うので、一度試しておくと良い経験になると思います。

この記事が気に入ったらサポートをしてみませんか?