FlashAttention-2で画像生成はどの程度高速になるのか?(答: 約10%程度)
※この時間は「CPUのスレッド数は生成速度に影響するのか?」をお送りする予定でしたが、予定を変更して「FlashAttention-2」についてお送ります。
ここ数日で、「FlashAttention-2」の導入が比較的容易になりました。
詳細な手順は、後日、某wikiの「最近の主な出来事」に書く予定です(追記: 翌日書きました)が、大まかには次の通りです。
venvに入る
pip installで(windows用の)FlashAttention-2を入れる(10/26追記: post7から不要になりました)pip installでtorch 2.1.0+cu121を入れる
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)
--xformersToMe OFF
Live previews OFF
GPU温度30℃から生成開始
まあとりあえずアスカベンチからですよね。
テスト1: アスカベンチ10枚
要するに512x512, 28steps, Euler, ってことです。
FA2の導入前と導入後で5回ずつ計測しましたが……
こりゃあ誤差の範囲ですねェ。有意な差とはちょっと言えません。あと1回計測したらもうそれで平均値もひっくり返ってしまうかもしれません。
アスカベンチは所要時間が短いですから、明確な差が出ないのも仕方ない。
より現実的な解像度でも計測してみます。
テスト2: 512x768, Hires.fix x2 (=1024x1536), 5枚
ちもろぐちゃんで言う
1024×1532:神里綾華(LoRA + アップスケーリング)
ですね。
なるほど……? こちらは10%程度、高速化されているようです。
仮にデメリットなし(どころか省VRAM効果もあり)で10%の高速化を得られるなら、導入しとくのが一応お得だと言えましょう。「めっちゃお得!」とまでは言えませんが……。
結論
完全に同一の結果……とまではいきませんが、ほぼほぼ同一の内容を得られています。今のところ、品質低下等の悪影響は見受けられません。
速度にして10%ですからねェ。うーんちょっと微妙な気もするなー。
まあ、導入時の手間以外にデメリットがなさそうなのは良いことです。
バッチファイルぽちー。だけで導入できるようなバッチファイルを作れたら良いのですが……。残念ながら私はそこまで詳しくないので、いつもの様に「venv\Scripts\activate」とかそういう手順を書くつもりです(追記: 翌日書きました)。
次回は、CPUのスレッド数が画像生成速度に与える影響について調べます。