見出し画像

GPU買替前に...Flux1高速化の為の最終手段「novram+"--fast"」

さて、日々「暴力的」と言っていいほどの劇的な進化が止まらないAI環境において、手元にあるnVidia RTX4070 12GBの限界をこれまた日々痛感している昨今ですが、

特にFlux1においてはVRAM12GBと16GBの速度上の格差が大きく、真剣にRTX4070Ti Super 16GBへの買い替えを検討している訳ですが、その前にソフトウェア的にやれることはやっとくのが私の主義でして、

(CUDAやCuDNNで劇的なサポートでもない限り)これ以上、本当にやれることはない、思いつかない対策を突き詰めていきました。

Pytorchのセッティング一つ取っても、私が以下やってきたようなことまで本当にやっている人はなかなか少ないと思いますが。
(Pytorch2.3.1以前ならともかく、Pytorch2.4.0+cu12.4に対して以下を施工しても、どれだけ効果があるかは微妙ですが)

ともかく簡潔に結論から。

今回の措置により、ControlAiltAI(※私自身がサポートメンバーになっているグループ)製のSamplerを使う前提であれば、以下までSampler処理中のVRAM消費を削ることに成功しました。

しかも、モデルは最重量のflux1-dev.sft(※現在はsafetensors)を使い、XlabsのCotrolNetをかました上で、です。

生成時間は150秒かかってますが、Sampler処理中にVRAM消費が12GBを超えた日には150秒処の話ではないので、劇的な高速化です。

特に難しい事はしていません。

起動オプションの記述を下に変えただけです。

.\python_embeded\python.exe -s ComfyUI\main.py --novram --windows-standalone-build --fast

まさか、RTX4070 12GBを使って「no vram」を使う羽目になるとは…という処ですが、Flux1においてはRTX4070 12GB如きは下限ギリギリのローエンドと思うしかありません。

尚、この手が奏功する…のは、現時点確認した範囲ではControlAltAI製のFlux Samplerと通常のKSamplerで、XlabsのSamplerではこの手を使っても尚、flux1-dev.sftはOutOfMemoryを起こして完走しません。

ControlAltAIによるとXlabsのノードは、そもそも処理のロジックがレガシーと異なるらしく(※それがxlabs製ノードの排他性の原因と思われる)、其れもnovramでもコケる理由の一つなのでしょう。

また、ControlAltAI Flux SamplerやKSamplerであっても、ノードの組み方次第ではコケます。

尚、--fastについては先日、一応下のような情報が出ており、RTX4090での有効性は一応確認されているようです。RTX4000以上であれば、それぞれに効果があるようです。

https://www.reddit.com/r/StableDiffusion/comments/1ex3ol5/comfyui_experimental_rtx_40_series_update/s_update/

ちなみにGGUFやNF4等、量子化したモデルの場合は、novramでなくともlowvram設定で、IP-Adapterを除きControlNetをかました状態でもsampler処理も12GB未満に収まる為、novramを使う必然性はありません。

寧ろ、lowvramでは共有VRAMを使いつつも完走したノードが、novramではOutOfMemoryを起こしてコケる場合すらあります。

lowvramで起動して共有VRAMを使い、その上でschnellの4stepsを活かした方がまだマシ…という状況もいくつかありました。

起動オプションを使い分ける為のバッチファイルを複数作っておくのがお勧めです。私は3種類作成しています。

最後に余談ながら、その排他性に課題があるXlabs製のSamplerを使用したワークフローを、レガシーのLoRA Loaderを適用した形に改造しました。

更に余談。

先日公開したIP-Apater用のノードの組み方に誤りがあった為、修正し、更にLoRA Loaderを追加しています。


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