見出し画像

【画像生成AI】 Flux.1 は VRAM 6GB で快適に動く! --novram のススメ

コロンブスの航海の様子を描いた3コママンガ

はじめに

こんにちは、きまま / Easygoing です。

AI画像生成について記事を書いていて、最近は Flux.1 についての投稿がメインになっています。

Flux.1 は高品質な画像生成ができる AIモデル ですが、VRAM の使用が多いことが難点です。

今日は、低スペックの PC でも Flux.1 を快適に動かす方法を考えます。

結論:--novram オプションを使う

まず結論です。Flux.1 は、--novram オプションを使うと VRAM 6GB で快適に動作します!

コロンブスの航海前夜の母港の様子
母港

検証の環境

今回の検証は、以下の環境で行いました。

  • ComfyUI

  • システムRAM:32GB

  • GPU:RTX 4060 Ti(VRAM 16GB)

検証のワークフローの図

今回使ったのは、画像生成 → アップスケール で高画質のイラストを生成するワークフローです。

それぞれの過程の VRAM 使用量を測定して、グラフにしてみます。

実際の結果

まずは、シンプルにオリジナルの FP16 形式での VRAM 使用量を調べます。

FP16 / FP16 の条件での VRAM 使用量のグラフ

1回目の生成が青色のグラフ、2回目が緑色のグラフになります。

VRAM 使用量はいずれも 15 GB に到達しているので、VRAM 12GB 以下の環境だと生成時間が劇的に伸びて しまいます。

解像度を下げてもVRAM節約にはならない?

より少ない VRAM で画像を生成できる方法を探して、画像の解像度を下げてみます。

解像度を 128 x 128 に下げたときの VRAM 使用量のグラフ

解像度を 128 x 128 (元の64分の1のサイズ)に設定すると、画像の生成時間は短くなりますが、VRAM の使用量はほとんど変わらない 結果でした。

解像度を下げるのは、VRAM の節約にあまり効果がないことがわかります。

VRAM 利用を抑えるほかの方法を探してみます。

--lowvram と --novram オプション

ComfyUI には、VRAM が少ないときに VRAM の利用を効率化する 2つのオプションがあります。

--lowvram

--lowvram は VRAM の使用を減らすために、モデルの一部を システム RAM に移すオプションです。

VRAM を節約できますが、全体の処理速度が遅くなります。

--novram

--novram は、さらにアグレッシブにVRAMを節約します。

VRAM使用量が極端に少なくなる一方で、処理速度はもっと遅くなります。

--lowvram はほとんど効果がない!

まずは、--lowvram オプションを使った時の VRAM 使用量を見てみます。

lowvram と novram の条件での VRAM 使用量のグラフ

--lowvram 設定では、VRAM 使用量はほとんど変わりませんでした。

--lowvram は SDXL で試してみると、ある程度 VRAM の節約に効果がありましたが、Flux.1 は登場から日が浅いためか、十分に最適化されていないようです。

--novram はかなり有効!

同じグラフで --novram を見てみると、VRAM の使用をかなり抑えて、全体の使用量がほぼ 6GB 以内 に収まっています。

アップスケール処理の段階のみ VRAM 利用が 6GB を超えていますが、この処理にかかる時間は短く、また解像度が 1440 x 1440 で足りている場合はアップスケール処理自体が必要ありません。

一方で、--novram は VRAM のデータを システム RAM に移して処理するため、システム RAM を 32GB フルに使って います。

システム RAM をもっと効率的に使えば、もう少し早く生成することができそうです。

チェックポイントを gguf 形式に変更

システム RAM の節約のため、ロードするチェックポイントを容量の小さい gguf 形式に変更してみます。

novram で Q_8 チェックポイントを使った VRAM 使用量のグラフ

モデル容量を小さくすることで システム RAM の利用が 32GB 以内に収まり、画像の生成が 2分 早くなりました。

生成時間は VRAM が 16GB の時とあまり変わらず、画質もほとんど劣化はありません。

大西洋を航海中の帆船のイラスト、FP16形式
FP16
大西洋を航海中の帆船のイラスト、Q_8.gguf形式
Q_8

gguf 形式は、RAM の節約に非常に有効 です。

システム RAM を 16GB に減らしてみる

今度は システム RAM が少ない条件で試してみます。

--novram の設定のまま、メインメモリを片方抜いて システム RAM を 16GB に減らしてみます。

RAMを16GBに減らしてnovram で Q_8 チェックポイントを使った VRAM 使用量のグラフ

RAM の使用量は最大値の 16GB に張り付いていて、メモリ不足から生成時間が 2分長くなっています。

これは、先ほどと同じくモデルの容量を減らせばもう少し速くなりそうです。

モデルをさらに軽量化する

システム RAM の利用を抑えるため、モデルをさらに軽くしてみます。

T5xxl-Q_5_K_M.gguf 3.4GB(-6.2 GB)
blue_pencil-flux1_v001-Q_4_K_M.gguf 6.8GB(-5.7 GB)

RAMを16GBに減らしてnovram で Q_5 と Q_4 のモデルを使った VRAM 使用量のグラフ

モデルを軽量化すると、画像の生成は元と同じ時間になりました。

ただし、Q_4 まで軽量化すると生成した画像は細部の描き込みが減っています。

Q_8 の湾内に帆船が停泊するイラスト
Q_8
Q_4_K_M の湾内に帆船が停泊するイラスト
Q_4_K_M

システム RAM が 16 GB の環境では、普段は Q_4 を使い、画質を上げるときは Q_8 という使い分けが良いのではないかと思います。

検証結果のまとめ

今回の検証結果を表にまとめます。

VRAM 使用量をまとめた表
VRAM 使用量

Flux.1 は --novram と gguf 形式を利用すれば、VRAM 6 GB で十分に使えます

システム RAM は 16GB あれば画像は生成できますが、画質と速度を両立するには 32GB が欲しいところです。

今回の検証で分かったのが、--novram はメリットが大きい一方で デメリットがほとんどない ということです。

--novram を使って適切にモデルの容量を調節すれば、ほぼ元の速さを維持できます。

オススメの設定は?

検証結果をもとに、おすすめの設定をご紹介します。

VRAM 16GB 以上

  • T5xxl-fp16

  • チェックポイント fp16

VRAM 6GB ~ 12GB

  • --novram 設定

  • T5xxl-fp16

  • チェックポイント Q_8.gguf

システムRAM 16GB 以下

  • T5xxl-Q_5_K_M.gguf

  • チェックポイント Q_4.gguf

コロンブスの船団が母港に帰還したイラスト
帰還

--novram の設定方法

私が利用している Stability Matrix での --novram の設定方法です。

Stability Matrix を起動して、ComfyUI の設定ボタンを押して下にスクロールすると、--novram のチェックボタンがあります。

Stability Matrix の ComfyUI の設定画面の開き方のスクリーンショット
Stability Matrix の --novram オプションのチェックボタンのスクリーンショット

これにチェックを入れて ComfyUI を起動すれば OK です。

注意点

今回の検証はあくまで VRAM の使用量を測定したものであり、実際にGPU を差し替えて測定したわけではありません。

手元の GTX 1660Ti 6GB で試してみたところ、--novram をつけても VRAM 使用量がもっと多かったので、GPU の世代によって最適化がだいぶ進んでいるのだと思います。

しかし --novram を試すことに何もデメリットは無い ので、VRAM 使用量が超過する場合はまず試してみて良いと思います。

Forge には --novram 設定は無いの?

Stable Diffusion webUI Forge は VRAM の管理を自動化しているので、手動で --novram を設定することはできません。

代わりに Forge には VRAM 使用を抑える --always-offload-from-vram オプションがありますが、私の環境ではこれを利用しても VRAM使用量 は変わりませんでした。

今のところ、ComfyUI の方が細かく VRAM の設定ができるので低スペックの PC に有利ですが、Forge はかなり先進的な VRAM 管理 を行っているので、今後のアップデートで VRAM 運用 が改善する可能性もあると思います。

ComfyUI の導入は難しいんでしょう?

そんなことはありません。

2024.9.14 に Zuntan さんが、ComfyUI を 1クリックで導入するツール を公開されました!

(正確には、1クリックで Forge と ComfyUI の両方を導入するツール)

2024/09/14
EasyForge に ComfyUI をワンクリックで追加して、日本語 LLM による指示(英訳でなく)で Flux Dev の画像を生成する『日本語 LLM で Flux』に対応しました。
モデルや LoRA などのファイルは Forge 用にダウンロードしたものをそのまま利用できます。

何てこった!
日本語で簡単に使える!

これから ComfyUI を使う場合は、この EasyForge + ComfyUI の導入をオススメ します。

これについては、次回の記事で詳しく紹介します。

まとめ

  • Flux.1 は VRAM 16GB で快適に動作

  • --novram 設定で VRAM 6GB あれば動く

  • システム RAM はできれば 32GB

最後までお読みいただきありがとうございます!


参考記事

FP16 / Q_8 / Q_4 形式の画質の比較

今回 ComfyUI で --novram が効果があることを知ったのは、こちらの GJL さんの記事がきっかけです。

大変参考になる情報をありがとうございます!


English Page



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

この記事が参加している募集