見出し画像

Lora dreamboothでは fp16かfp32かそれが問題だ

fp16の勧めが多いわけ

色々なサイトやハウツーを見ると大体fp16を設定して実行している。
ってのも無料のクラウドGPUを使っていたり、ローカルPCでもちょっと良いゲーミングPCくらいのスペックだからだろうと。
それで実行している人が説明を書き、それを読んんでまた誰かが説明を書くのでfp16がいいよとなる。

Loraを省いて検索すると、、、

って事で、単純にfp16とfp32を比較検索すると

  • fp16は16ビット、fp32は32ビットで数値を表します。ビット数が多いほど、表現できる数値の範囲や精度が高い。

  • fp16はfp32に比べてメモリや計算時間を節約できる利点があるが、精度が低いという欠点がある。

  • 機械学習のタスクやモデルによっては、fp16でも十分な精度が得られる場合があり、その場合は、fp16を使うことで効率的に学習できる。

  • しかし、fp16では表現できない小さな数値や大きな数値が出てくると、計算が正しく行われないことがあり、その場合は、fp32を使う必要がある。

  • まずはfp32で学習してみて、問題なければfp16に切り替えてみる。

という事らしい。

実際どうよ?

これはLora適用前の画像

fp16(上の段)、fp32(下の段)で学習させ、出力した画像

興味深いのはfp16の方が本来のLoraとしても役割(元絵を維持しつつスタイルを変える)を果たしている点だ。ただ、他のseedでも試したところ(スケベな絵なので載せられない)、fp32でもLoraとしての役割を果たす結果が5エポック(150ステップ)目で出力された。

なのでこの絵でも、もしかしたらfp32の方はもっと早い段階で目的に達成していたかもしれないが、5エポック(150ステップ)以前は保存していないのでわからない。

fp32の方が顔の学習が綺麗?

fp16とfp32を変更しただけで学習時の設定は全て同じ。画像生成の設定、シードも同じ。やはりfp32の方が、特に顔の再現において綺麗に見える? そうは言っても小さな誤差の範囲? 私が思うにfp16に方が若干過学習気味になってる気がする。

私が思うに

そもそもLoraはDreambooth単体に比べて学習範囲が限定的なので、fp16でも問題は起きない。

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