見出し画像

【eichi】Framepackにsage-attention2を入れた話【ローカルAI動画生成】


はじめに

ローカルで動画生成を可能にするFramepack(eichi)では、最適化手法として次のものが利用可能(Linux)です。

  • xformers 0.0.29.post3

  • flash-attn 2.8.2

  • sageattention 1.0.6

すべて同時インストールする事は可能ですが、本当に利用されているかどうかは別問題です。

xformersは汎用性が高いため、一部を利用する事は可能だと思いますが、flash-attnとsageattentionは排他利用というのが筆者の理解です。(コードをチェックしたわけではなく、モージュールによって使い分けてるかもしれません)

framepackで、新しいバージョンのsageattention2(2.2.0)が利用できるという事で、実際に試してみました。

※ ただし、動作確認はWindowsではなく、WSL2(Linux)です

高速化確認

ベーススコア

前記事の画像を動画化(6秒)します。

xformers,flash-attn,sageattentionをすべてインストールしているものです。正味推論のステップログのみを抜き出すと、約4分30秒という事です。これを現状のスコアとします。

100%|█| 25/25 [04:24<00:00, 10.59s/it]
100%|█| 25/25 [04:29<00:00, 10.77s/it]
100%|█| 25/25 [04:30<00:00, 10.82s/it]
100%|█| 25/25 [04:30<00:00, 10.81s/it]
100%|█| 25/25 [04:30<00:00, 10.82s/it]

Sageattention2.2の導入

公式gitリポジトリはこちら、

READMEの指示通りに導入します。

並列数を制限する必要があるのは、ビルド時にメモリを大量に利用する可能性があるからだと思います。数分で終了し、筆者環境(WSL2/32GB)では特に問題になりませんでした。

# 筆者CUDA環境
$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2025 NVIDIA Corporation
Built on Fri_Feb_21_20:23:50_PST_2025
Cuda compilation tools, release 12.8, V12.8.93
Build cuda_12.8.r12.8/compiler.35583870_0
# READMEの指示と、並列数の制限
git clone https://github.com/thu-ml/SageAttention.git
cd SageAttention 
export EXT_PARALLEL=4 NVCC_APPEND_FLAGS="--threads 6" MAX_JOBS=16 # parallel compiling (Optional)
pip install -e .

Sageattention2.2で動作

結果

100%|█| 25/25 [04:26<00:00, 10.65s/it]
100%|█| 25/25 [04:30<00:00, 10.81s/it]
100%|█| 25/25 [04:29<00:00, 10.79s/it]
100%|█| 25/25 [04:30<00:00, 10.83s/it]
100%|█| 25/25 [04:30<00:00, 10.82s/it]

結論:動作速度は変わらず

としたいところですが、sageattentionを全く利用していないだけのように感じます。もう少し粘ります。

flash-attnとsageattentionは排他的であると仮定する

flash-attnを外し、sageattention2のみを利用します。

100%|█| 25/25 [04:21<00:00, 10.45s/it]
100%|█| 25/25 [04:26<00:00, 10.66s/it]
100%|█| 25/25 [04:26<00:00, 10.66s/it]
100%|█| 25/25 [04:25<00:00, 10.62s/it]
100%|█| 25/25 [04:26<00:00, 10.64s/it]

結論:各工程で4秒〜5秒ほど速くなりました。

まとめ

注意:この記事は定量的に信用できません。

Framepackは振れ幅が大きいので、本当に差が出ているか怪しいです。そもそも最適化手法を変えるとattentionも変わり生成物も変わるので、定量的な正しい結果を出すのは困難です。

※ 似たような困難さはPCゲームのベンチマークにも言えます。異なるGPU、ドライバを利用すると、画面の設定上同じ条件でFPSが上昇していたとしても、内部で3D効果をスキップ(やバグでスルー)しているだけの場合が多いです。最低限、定性的にも「目視では差違が確認できないほど同じ画質」である事をチェックする必要があります

少なくとも言えるのは、筆者環境では「ほとんど変わりません」です。

結論

flash-attnもsageattentionもfp8の最適化を含むので、RTX40xx以上、「High-VRAM Mode: True」でなければ効果がないのかもしれません。

また、本当に排他利用であっても、適材適所で最適化を使い分けている可能性があるので、問題がない限り、3つともインストールするのが無難だと思います。

ただし、筆者のただの主観かもしれませんが、flash-attnだけよりも、sageattention2利用時の方が若干画質が良いような「気」がします。

以下、関連する記事の【PR】です。


いいなと思ったら応援しよう!