見出し画像

FlashAttention-2で画像生成はどの程度高速になるのか?(答: 約10%程度)

※この時間は「CPUのスレッド数は生成速度に影響するのか?」をお送りする予定でしたが、予定を変更して「FlashAttention-2」についてお送ります。

Bingちゃんに描いてもらったけど「Flash」の部分が稲妻に化けがち。ぐぬぬ

ここ数日で、「FlashAttention-2」の導入が比較的容易になりました。
詳細な手順は、後日、某wikiの「最近の主な出来事」に書く予定です(追記: 翌日書きました)が、大まかには次の通りです。

  1. venvに入る

  2. pip installで(windows用の)FlashAttention-2を入れる
    (10/26追記: post7から不要になりました)

  3. pip installでtorch 2.1.0+cu121を入れる

  4. pip installでxformers 0.0.22.post7を入れる

(あともちろんwebui-user.batに「--xformers」を書いておくこと)

これにより、画像生成時の速度向上、および使用VRAM量の低減が期待できる……と聞いています。あるいは学習時でも?

さてそれでは具体的に何%程度の速度向上効果を得られるのでしょうか。
記事タイトルにもう書いてありますが早速検証していきましょう!


テスト環境

  • INTEL Core i3-12100F
    第12世代、TB時4.3GHz、4コア8スレッド

  • RTX 4070 (12GB) power limit 100%
    ドライバー 531.79 (2023/5/2)

  • Automatic 1111 v1.6.0 (2023/8/31)
    --xformers

  • ToMe OFF

  • Live previews OFF

  • GPU温度30℃から生成開始


まあとりあえずアスカベンチからですよね。

テスト1: アスカベンチ10枚

要するに512x512, 28steps, Euler, ってことです。

赤が5回の平均値。
あんま変わんないなー

FA2の導入前と導入後で5回ずつ計測しましたが……
こりゃあ誤差の範囲ですねェ。有意な差とはちょっと言えません。あと1回計測したらもうそれで平均値もひっくり返ってしまうかもしれません。
アスカベンチは所要時間が短いですから、明確な差が出ないのも仕方ない。


より現実的な解像度でも計測してみます。

テスト2: 512x768, Hires.fix x2 (=1024x1536), 5枚

ちもろぐちゃんで言う
1024×1532:神里綾華(LoRA + アップスケーリング)
ですね。

私はフィッシュル推しです

なるほど……? こちらは10%程度、高速化されているようです。
仮にデメリットなし(どころか省VRAM効果もあり)で10%の高速化を得られるなら、導入しとくのが一応お得だと言えましょう。「めっちゃお得!」とまでは言えませんが……。

結論

FA2導入前
FA2導入後

完全に同一の結果……とまではいきませんが、ほぼほぼ同一の内容を得られています。今のところ、品質低下等の悪影響は見受けられません。

速度にして10%ですからねェ。うーんちょっと微妙な気もするなー。
まあ、導入時の手間以外にデメリットがなさそうなのは良いことです。
バッチファイルぽちー。だけで導入できるようなバッチファイルを作れたら良いのですが……。残念ながら私はそこまで詳しくないので、いつもの様に「venv\Scripts\activate」とかそういう手順を書くつもりです(追記: 翌日書きました)。

お休みの間 悪魔に肉体を
乗っ取られぬよう お気をつけて……

次回は、CPUのスレッド数が画像生成速度に与える影響について調べます。


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