🎨

ローカル環境でFLUX.1を動かしてみる

2024/08/04に公開

はじめに

どんな人向けの記事?

  • 画像生成AI、特にFLUX.1に興味がある方
  • ローカル環境でFLUX.1を動かしたい方(Macを含む)
  • M2 UltraとRTX3060の生成速度を知りたい方
環境
1. Mac Studio(M2 Ultra 128GB)
2. Windows 10 (メインメモリ 96GB + RTX 3060 12GB)

内容

今回の記事では、Black Forest Labsが発表した最新の画像生成AIモデルであるFLUX.1を実際に使ってみようと思います。FLUX.1の概要についてはnpakaさんの下記の記事が参考になります。

https://note.com/npaka/n/n4ca3fae6ce31

本記事では、主に下記についてまとめたいと思います。

  • ComfyUIでFLUX.1を動かす方法
  • Mac環境でFLUX.1を動かす方法
  • M2 UltraとRTX3060の生成速度比較

導入手順

FLUX.1の動かし方は色々あると思いますが、この記事ではComfyUIを用いてローカル環境で動かす手順を備忘録的に書き留めておきます。

できるだけWindows,Mac,Ubuntuに対応した書き方にしますが、CUDAまわりは各自の環境に合わせて修正してください。特に環境の明記がないところは、基本的に環境に依存しない共通の手順だと思ってください。

ComfyUIの導入

  • リポジトリのクローン〜python仮想環境作成
$ git clone https://github.com/comfyanonymous/ComfyUI.git
$ cd ComfyUI
$ python3 -m venv venv
  • 仮想環境のactivate
Mac or Ubuntu環境
$ source venv/bin/activate
Windows環境
$ .\venv\Scripts\activate
  • 必要モジュールのインストール
Apple Silicon環境
$ pip3 install --pre torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/nightly/cpu
$ pip install -r requirements.txt
CUDA環境
$ pip install -r requirements.txt
$ python -m pip install torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 --index-url https://download.pytorch.org/whl/cu121 # 必要に応じてバージョンは修正してください

以上でComfyUIの導入は完了です。あとは下記のコマンドを実行すれば、ブラウザでGUIアクセスできるようになります。

  • 起動
$ python main.py --listen 

私の場合は、別の端末からアクセスしたかったので--listenをオプション引数として渡しています。無事に起動できたら、下記のようなメッセージが出てくるので、http://[サーバのIPアドレス]:8188/にアクセスすればComfyUIのGUI画面が表示されます。

Starting server

To see the GUI go to: http://0.0.0.0:8188

下記はデフォルトのワークフローではないですが、見た目としてこんな感じの画面が表示されるはずです。
Alt text

FLUX.1使用に必要なファイルの格納

ComfyUIを使えるようになっても、まだFLUX.1を使用することはできません。使用するためには、必要なファイルを然るべき場所に格納し、ワークフローを書き換える必要があります。ここではまずFLUX.1使用に必要なファイルの格納について説明します。

と思ってましたが、すでにMakiさんがその手順を記事にまとめられていました。圧倒的感謝!というわけで、ファイルの配置までを下記の記事の通りに進めてください。

https://zenn.dev/sunwood_ai_labs/articles/using-flux-ai-with-comfyui-detailed-guide

いざ画像生成!

以上でFLUX.1モデルをComfyUIで使う準備が整いました。早速画像生成をしたいところですが、そのためにはFLUX.1に対応したワークフローが必要です。

ここで、何かをインポートすれば使えるようになるだろうということは予想していたのですが、なんとComfyUIでは画像をインポートすることでワークフローをコピーできるようです。実は私もComfyUIを使ったのは初めてだったので、ここが一番の驚きでした。

ワークフロー(画像)の保存

用いたワークフローは下記のFlux under 12GB VRAMです。12GB以下のVRAMでも動くそうなので、M2 Ultra(128GB)だけでなくRTX 3060でも動かせそうです。ただし、メインメモリが少ないとまともに動かない可能性があるので注意してください。

https://civitai.com/posts/5006398

このアヒルの画像を保存してください。

ワークフロー(画像)のインポート

ComfyUIの右端のWindowのLoadボタンをクリックし、先ほど保存した画像を選択することでワークフローのインポートができます。
Alt text

画像生成は、Queue Promptをクリックすることで可能なのですが、デフォルト設定のままでは動きません。下記のようにunet_nameweight_dtypeclip_name1を修正してください。

  • デフォルト設定
    Alt text

  • 修正後(schnell,fp16を利用する場合)
    Alt text

https://x.com/gosrum/status/1819567242486657361

改めてQueue Promptをクリックすると、数十秒後にワークフローの最後で下記のような画像が生成されました(一例です)。出力結果はComfyUI/output/flux/ComfyUI_000XX_.pngという形で保存されます。
Alt text

プロンプトは下記のブロックで修正可能です。
Alt text

参考までに、プロンプトを変えたときの画像生成例です。

https://x.com/gosrum/status/1819739876042105083

RTX3060とM2 Ultraの生成速度比較

せっかく両方の環境で画像生成できるようにしたので、生成速度を比較します。一枚目の画像生成時はモデルのロードに多少時間がかかるので、それは除外して、解像度をデフォルトの1024x576で固定し、10枚生成したときの平均値を計算したものが下記のとおりです。

モデル RTX 3060 M2 Ultra
flux1-schnell (4steps) 19.86秒 20.93秒
flux1-dev (16steps) 70.13秒 80.24秒

表からわかることとしては下記のとおりでしょうか。

  • 生成速度は、ほぼstep数に比例する(モデルのサイズが同じなので当たり前かも)
  • schnellならM2 UltraとRTX 3060の差はほとんどない。

意外だったのは2つ目で、SDXLではM2 Ultraの方がRTX3060よりも60%ぐらい遅かったのですが、これだと5%ぐらいなのでほとんど気にならないレベルですね。

モデルの選定としては、遅くても良いからとにかく高品質画像が欲しいならflux1-dev、とにかくガチャを引きたいならschnellという感じでしょうか。

まとめ

今回はローカル環境でFLUX.1を動かすというタイトルで、ローカル環境でFLUX.1を動かす手順についてまとめました。Apple Siliconは画像生成が苦手なのですが、Flux.1に関してはRTX3060と同程度の速度で画像生成ができることがわかりました。

ローカルLLMと連携すれば、日本語で雑に指示を与えて画像を作れるようになる、つまりローカル環境で動くDALL-E 3みたいな感じで使えるんじゃないかと思ってます。時間があれば、そのあたりも挑戦してみようと思います。

ここまで見ていただきありがとうございました。次回もぜひ、よろしくお願いします。

Discussion