Macbook Pro で FLUX.1[dev] を使って画像生成

はじめに

無料で利用できる FLUX.1[dev] を使って画像生成するためのメモです。Macbook Pro(Apple silicon:M4 Pro & 48GBメモリー)を使ってます。1画像生成するのに、おおよそ6分程度かかります。

この投稿に書かれた手順を踏めば、以下のようにプロンプトを記述して、下記のような画像を生成できます。

プロンプト(例)

A fierce-looking Japanese mountaineer
Gazing at the summit with eyes full of strong determination to achieve his goal
Wearing a yellow winter mountaineering jacket
Wearing black mountaineering pants
Wearing sunglasses that reflect the sunlight
Carrying a 70-liter black backpack
Climbing a snow-covered winter mountain in Hokkaido
It was snowing until recently, but now the sun is shining
No one else is around, only this Japanese mountaineer is taking on the challenge of the climb

この英文は、Claude 3.5 Sonnet で日本語を元に生成したものです。日本語のままでも画像生成できるのですが、精度が低いためプロンプトは英語を使います。

精悍な、日本人登山家
目的を達成しようという強い意志を持った目で山頂を見つめている
黄色い冬山登山用のジャケットを着用している
黒い登山用ズボンをはいている
太陽の光が反射したサングラスを掛けている
70リットルの黒いリュックサックをしている
深く雪が積もった、北海道の冬山登山をしている
先ほどまでは雪が降っていたが、いまは太陽が輝いている
他に誰も人はおらず、日本人登山家だけが登山にチャレンジしている


(生成された画像例)

A. 環境構築

0. Hugging Face CLI を利用できるようにする

$ pip install --upgrade huggingface_hub
$ huggingface-cli login
Enter your token (input will not be visible): XXXXXXX
Add token as git credential? (Y/n) Y

※事前にHugging Faceのアカウントを開設し、トークンを取得しておく必要があります

1. ComfyUIをローカルにクローンする

$ git clone git@github.com:comfyanonymous/ComfyUI.git

2. Hugging Face で、FLUX.1-dev の WeightファイルとVAEをダウンロードする

black-forest-labs/FLUX.1-devからファイルをダウンロードし、先にcloneしたComfyUIのディレクトリに保存します

※ 初めての場合、black-forest-labs/FLUX.1-dev へのアクセス権限申請等が必要です

Weight: flux1-dev.safetensors

$ huggingface-cli download black-forest-labs/FLUX.1-dev flux1-dev.safetensors --local-dir ComfyUI/models/unet/

VAE: ae.safetensors

$ huggingface-cli download black-forest-labs/FLUX.1-dev ae.safetensors --local-dir ComfyUI/models/vae/

3. Hugging Face で、ComyUIでFLUXのテキストエンコードを処理するためのファイルをダウンロードする

CLIP(Contrastive Language-Image Pretraining): clip_l.safetensors

$ huggingface-cli download comfyanonymous/flux_text_encoders clip_l.safetensors --local-dir ComfyUI/models/clip/

以下、T5(Text-to-Text Transfer Transformer)のXXL(Extra Extra Large)。実際に利用するのは1ファイルだけだが比較のため3つともダウンロードしておく;

t5xxl_fp16.safetensors (9.79 GB)
十分なVRAMとRAMを持つ高性能なGPUが必要なモデル。今回のメモではこのモデルを利用

$ huggingface-cli download comfyanonymous/flux_text_encoders t5xxl_fp16.safetensors --local-dir ComfyUI/models/clip/

t5xxl_fp8_e4m3fn.safetensors (4.89 GB)
fp16モデルより精度は低下するが少ないメモリでも動作可能

$ huggingface-cli download comfyanonymous/flux_text_encoders t5xxl_fp8_e4m3fn.safetensors --local-dir ComfyUI/models/clip/

t5xxl_fp8_e4m3fn_scaled.safetensors ( 5.16 GB )
fp16モデルより精度は低下するが少ないメモリでも動作

$ huggingface-cli download comfyanonymous/flux_text_encoders t5xxl_fp8_e4m3fn_scaled.safetensors --local-dir ComfyUI/models/clip/

4. “pytorch nightly”のインストール

詳細は「Accelerated PyTorch training on Mac」を参照
※ Apple Mac silicon のみ動作確認済み。Intel系も対応しているらしいが未確認

インストール後の確認
以下スクリプトを実行しtensor([1.], device='mps:0')が返れば問題無し

import torch
if torch.backends.mps.is_available():
    mps_device = torch.device("mps")
    x = torch.ones(1, device=mps_device)
    print (x)
else:
    print ("MPS device not found.")

5. ComfyUI の依存ライブラリをインストール

$ pwd
/*YOUR*/*PATH*/*TO*/ComfyUI
$ pip install -r requirements.txt

6. ComfyUI 起動

python main.py

↓(下記のように表示されれればOK)

Checkpoint files will always be loaded safely.
Total VRAM 49152 MB, total RAM 49152 MB
pytorch version: 2.7.0.dev20250116
Set vram state to: SHARED
Device: mps
Using sub quadratic optimization for attention, if you have memory or speed issues try using: --use-split-cross-attention
****** User settings have been changed to be stored on the server instead of browser storage. ******
****** For multi-user setups add the --multi-user CLI argument to enable multiple user profiles. ******
[Prompt Server] web root: /*YOUR*/*PATH*/*TO*/ComfyUI/web

Import times for custom nodes:
   0.0 seconds: /*YOUR*/*PATH*/*TO*/ComfyUI/custom_nodes/websocket_image_save.py

Starting server

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

7. ComfyUI ブラウザ操作

任意のブラウザで `http://localhost:8188` にアクセス。下記のような画面が表示されればOK

B. 設定・実行

1. ComfyUIでFLUXを実行するためのサンプル設定ファイルをダウンロードする

GitHubのComfyUI_examplesページで、画像をダウンロード

2. ダウンロードした画像を、ComfyUIが表示されているブラウザ画面にドラッグ&ドロップする

3. ワークフロー内の各種設定を確認し、生成実行

  • 12: Load Diffusion odel の unet_name が flux1-dev.safetensors になっている事を確認
  • 11: DualCLIPLoader の clip_name1 が t5xxl_fp16.safetensors、clip_name2が clip_l.safetensors になっている事を確認
  • 10: Load VAE の vae_name が ae.safetensors になっている事を確認
  • 6: CLIP Text Encode (Positive Prompt) に、生成したいイメージについて英語で記述する(デフォルトの文言は、サンプルイメージのアニメ風画像を作成するための記述)

その他、生成したい画像にあわせて、width、height 等の値を設定し、画面下部中央にある「Queue」をクリック。数分後に画像生成が完了します。

今回のワークフロー(プロンプト含む)を保存するには、画面右上の「Workflow」メニューから「Export」を選択し、jsonファイルを出力します。次回からは、ComfyUIを起動した状態で、ブラウザにこのjsonファイルをドラッグ&ドロップすると、同じワークフローを利用する事が可能です。
エクスポートしたjsonは、忘れないようにComfyUIのホームディレクトリ(/*YOUR*/*PATH*/*TO*/ComfyUI)等に入れておくといいかもです。

終了。次回の起動

終了は、ComfyUIを起動させた(”python main.py”を実行した)ターミナルで、Ctrl + C します。

次回からの起動は、ComfyUIのホームディレクトリで”python main.py”を実行すればOKです

おまけ:複数の人がいる画像を生成してみた結果

上記画像は、以下のプロンプトを実行した結果です。けっこう使えるかも。

– Three young Japanese individuals (two men and one woman) are having a business meeting around a round table.
– Each person has a 14-inch MacBook Pro open. (If the screen is shown, please display something like Google search results.)
– Overall, the atmosphere is relaxed and amicable.

↓)の日本語を翻訳して使用

・3人の若い日本人(男性2人、女性1人)が、丸いテーブルを挟んで、ビジネスの打合せをしている
・各自は、Macbook Pro 14インチを開いている。(画面を見せる場合は、Googleの検索結果画面的なものを表示しておいてください)
・全体的に、和やかな雰囲気である