見出し画像

FP8(8-bit floating-point format)をsd-web-ui-forgeで適用した効果と説明:Automatic 1111と比較 2024/2

FP8について昨年の11月末に上の記事を記載しています。
先日ローンチされたSD-web-ui-forgeがFP8に対応しているということで、検証したものを先日作成しました。

FP8は結構凄いと個人的に思っているのですが、あまり話題になっていないようです。名前が短すぎるせい?
今回は前回記事より詳細かつ、その効果についての比較も記事にしました。主にしたのサイトを参考にしています。

1.FP8とは?

これはPytorch2.1.0で追加された新しいdtypeのストレージタイプのこと。
Pytorch2.1.0は2023年10月4日にリリースされていますので、比較的最近の話ということが分かります。
(PyTorch 2.1.2は2023年12月13日にリリースされています)

2. FP8の効果について

参考文献がありました。

GPTsの論文要約君を使用したものをコピペで貼っておきます。

この研究では、ディープラーニングの訓練と推論を加速するために、新しい8ビット浮動小数点(FP8)形式を提案しています。2種類のエンコーディング(E4M3とE5M2)を使用し、画像や言語タスクにおいて16ビット訓練セッションと同等の結果を達成しています。
先行研究と比べてどこがすごい?
従来の16ビットや32ビットの浮動小数点形式と比較して、FP8は計算リソースの要求を大幅に減らしながらも、モデルの精度を保持できる点がすごいです。これにより、より小さく、電力効率の高いディープラーニングの訓練と推論が可能になります。
技術や手法のキモはどこ?
FP8の核となる技術は、2つの異なるエンコーディング方式(E4M3とE5M2)を用いることです。これらの形式は、特定の値(特殊な数値やゼロ)を効率的に表現し、さまざまなニューラルネットワークアーキテクチャやタスクに適用可能です。また、FP8はIEEE 754規格からの最小限の逸脱で設計されており、既存のソフトウェアとの互換性も保っています。
どうやって有効だと検証した?
画像分類、言語翻訳、言語モデルなど、多様なニューラルネットワークモデルとタスクにFP8を適用し、その訓練と推論の結果を検証しました。16ビット形式で訓練されたモデルと比較して、FP8はほぼ同等の精度を維持できることを実証しました。
議論はある?
FP8はディープラーニングの訓練と推論における計算コストとメモリ使用量を削減できる一方で、特定のタスクやモデルによっては細かい調整が必要な場合があるとの議論があります。また、全てのニューラルネットワークアーキテクチャがFP8に適しているわけではないため、適用範囲に関するさらなる研究が必要です。

3. WebUIで使う際の恩恵はどんなものなのか

先ほどの論文では具体的な数値の記載はりませんでしたが、FP16は16ビット(2バイト)を使用し、FP8は8ビット(1バイト)を使用するため、理論上、FP8を使用することでメモリ使用量を最大で半分に削減できることが期待されるとのことです。現行のStable diffusionはFP16を使用しているので、恩恵が期待されます。
過去の記事でも数値の記載をしているものもありますが、紹介しているGithubサイトに実際のモデルによるVRAMの削減する数値が記載されています。グラフとかもあります。
①SD1.5の場合   ⇒ 0.8 ~ 0.9GB VRAMの減少
②SDXLの場合 ⇒ 2.5 ~ 2.8GB VRAMの減少

4. どうやってWebUIに導入しているのか?(私見)

素人なので、文章を読んだ印象?でこんな感じなのかなというものを記載しておきます。
モデルの重みをFP8で保存 ⇒ 結果の出力はPyTorchのautocast機能を使用し、もともとのWebUIが使用しているFP16またはBF16を使用する。

この理論でいくと、通常のcheckpointをそのまま使用して、その中からFP8の重み分だけ使用するみたいな感じととらえました。

5.不都合な点

①FP8を使用しない場合と使用した場合で、同じ条件下で画像を生成した場合に若干違う絵になる
⇒これはサイトの後半で議論されていて、Automatic1111さんがコメントされていました。
②速度が低下する
⇒5%程度低下するとのデータが提示されています。
③Loraなどの効果が弱くなる
⇒より高い重みづけをする必要がある
④Pytorchのバージョンを上げる必要がある
⇒ローカルだとforgeをパッケージでインストールすると対応出来るが、Paperspaceなどではこちらで対応する必要がある。

6.想定外の凄いメリット

LCM Loraを使用した際に、既存の状態よりも良い画像が出来るとの報告があるようです。これまでLCM Loraを入れると、ウェイトが高いと色がべたっとしていたのが改善するようです。以下はサイトから取ってきた画像です。

7.VRAM消費量の比較

最後に、SD1.5でのVRAM消費量の比較表を共有しておきます。解像度1024で作成したものです。

この表を見ると、Forgeにして、FP8にすると、SD1.5で単純に30%以上のVRAM節約が出来るということになります。
SDXLだとさらに恩恵が大きいと思われます。



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