![見出し画像](https://assets.st-note.com/production/uploads/images/137814468/rectangle_large_type_2_d9918178c60a9721821f0fc1127a330e.png?width=1200)
StableDiffusionのLoRAのOptimizerの速度比較
どのOptimizerが学習が最も速いか比較。
簡易的な比較である上、人によって理想の成果が異なるため参考程度にとどめてください。
Lossの降下で比較(SD1.5)
Optimizerの種類については画像左下の凡例を確認してください。
wd●●はweight_decayの値を示します。
設定など
512x512(SD1.5),画像6枚,Batch size3
AdamW,LionのLRは0.0001、DAdaptLion(betas=0.9,0.999,eps=1e-06,d0=1e-06)とProgidy(betas=0.9,0.99,eps=1e-08,d0=1e-06)のLRは1、AdaFactorのLR(initial_lr)は0.001
![](https://assets.st-note.com/img/1713519744049-GYvkUrtNAI.png?width=1200)
DAdaptLionとProdigyは計算が遅いがlossの降下は早い(過学習も早い)。手動系はLionが早い。なお、SGDNesterov(LR=10)はLionとAdamWの中間の速度だった。
AdaFactorが(lossの降下と学習時間の双方が)最も遅い。
lossの降下速度
Prodigy>>DAdaptLion>>>Lion>SGDNesterov>AdamW>AdaFactor
計算速度
SGDNesterov=>AdamW=Lion>>>Prodigy>DAdaptLion>>AdaFactor
総評
総合的に見てProdigyが優勝。計算が遅い代わりに収束がかなり早いので、計算の早い手動系より短時間で終わらせることができます。
AdaFactorは…LoRAのような小規模学習じゃいらない子かなw
Lion vs Prodigy(SDXL)
データセットが大きい分Lossの変化が小さいためtensorboardの画像は省略。実際の出力で確認します。
共通設定:cosine_with_restarts,batch_size=2
Lion(LR=0.0001)
![](https://assets.st-note.com/img/1713520226394-KwdcPQgi4w.jpg?width=1200)
2328ステップ以上で十分な結果になった。
Lion(LR=0.0002)
![](https://assets.st-note.com/img/1713520321781-7EKTNFvb3l.jpg?width=1200)
776ステップから再現している。LRが高いためか少し粗い。
Prodigy
eps=1e-08,d0=1e-06,weight_decay=0,betas=0.9,0.99
![](https://assets.st-note.com/img/1713520475181-iHORUvOPWP.jpg?width=1200)
1552ステップで十分な結果になった。粗さもない。
総評
実際の出力もProdigyが速く見えます。プロ爺優勝!
ただ癖のある結果になる場合がある気がします。そのときはLionでよいと思います。
この記事が気に入ったらサポートをしてみませんか?