見出し画像

FP8(8-bit floating-point format)とstablediffusionの関係について気になったので調べてみた

<追記>
色々と情報が追加されたので、こちらも参照してください。

AnimateDiffの更新内容を調べていた所、最近?(2023/11/16)の更新内容に「FP8の対応」とあったのですが、知らない内容だったので調べてみました。
FP8は、8-bit floating-point formatの略語の様です。
日本語で言うと8ビット浮動小数点フォーマット。

ちなみに下のリンクがAnimateDiffの更新内容を記載したサイトです。
新しく実装された内容などが順番に書いてあるので分かりやすいと思います。


chatGPTさんにFP8について調べてもらいました。
リンクがついている内容でしたので、間違いでないことを期待しています。

FP8とNVIDIAのホッパーアーキテクチャ

FP8(8ビット浮動小数点フォーマット)は、トランスフォーマーモデルのパフォーマンスを加速するための鍵です。これは、従来のFP32フォーマットから大きく進化したものです。NVIDIAのホッパーアーキテクチャでは、FP8は2つの異なるデータフォーマットを含んでいます。

  1. E4M3: 4つの指数ビットと3つの仮数ビットを含みます。

  2. E5M2: 5つの指数ビットと2つの仮数ビットを含みます。

これらのフォーマットの残りのビットは符号を示します。NVIDIAによると、E4M3フォーマットは前方伝播に、E5M2フォーマットは逆伝播に適しているとされています。トレーニングにFP8を使用する主な利点は、必要な帯域幅が減少することで、より高速なトレーニングが可能になることです。ただし、FP8の精度が低下することによるパフォーマンスの影響は、小規模なビジョントランスフォーマーモデルなど特定のケースを除き、顕著ではありません​​。

上の説明のみだと、Stable diffusionにどういう影響があるかよくわかりませんでした。

最初のAnimeDiffのリンクから、FP8についての説明に行くと、webuiのブランチにFP8が使用できる設定があるようです。以下にコピペ内容を置いておきます。
-----------------------------------------------------------------------------------

FP8 requires torch >= 2.1.0 and WebUI test-fp8 branch by @KohakuBlueleaf. Follow these steps to enable FP8:

  1. Switch to test-fp8 branch via git checkout test-fp8 in your stable-diffusion-webui directory.

  2. Reinstall torch via adding --reinstall-torch ONCE to your command line arguments.

  3. Goto Settings Tab > Optimizations > FP8 weight, change it to Enable

-----------------------------------------------------------------------------

さらにこのブランチのgithubに見ると、FP8についての説明とstable diffusionに導入した際の効果について記載がありました。

以下に、chatGPTに要約してもらった内容の中で、効果についての記載のみ抜き出しておきます。

パフォーマンスへの影響:
VRAM使用量: 理論上、FP8はFP16と比較してVRAM使用量を最大50%削減できます。これは、異なるモデルと解像度でのテストによって確認されています。
速度: FP8は、特に小さなバッチサイズで、推論速度をわずかに低下させます(FP16と比較して5%未満の差)。
品質: FP8の使用は、ほとんどの場合で画像品質を維持または向上させますが、LoRA/LyCORISが有効な場合、その効果を弱めることがあります。
報告された改善: FP8の使用により、特定のハードウェア構成で以前は不可能だった1024x1024の画像間変換が可能になりました。

結論: FP8の使用はVRAM使用量の大幅な改善をもたらし、最小限のデメリットしかありません。特に特定のハードウェアセットアップ(SDXLなど)のユーザーにとって有益です。ただし、この機能にはPyTorch 2.1.0が必要であり、安定性の問題がある可能性があり、LoRAへの影響についてはさらなるフィードバックが必要です。

と言うことで、FP8が使えるようになるとVRAMの使用量が劇的に減ると言うことみたいです。
AnimateDiffの使用にも大きいですね。

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