Flux Schnellは、テキストのプロンプトから高品質な画像を生成できる強力な画像生成モデルです。この記事では、MacBook Pro with M3 Maxチップ上でローカルにFlux Schnellをセットアップして実行する手順を説明します。要件、インストール手順、最初の画像の生成の手順について説明します。
MacでローカルにFlux Schnellを実行するための要件
始める前に、システムが以下の要件を満たしていることを確認してください:
- M3 Maxチップを搭載したMacBook Pro
- 少なくとも40 GBの利用可能なRAM
- macOS Sonoma以降のバージョン
- Xcode Command Line Toolsがインストールされている
- Homebrewパッケージマネージャー
ローカルFlux Schnellのインストール手順
インストールプロセスを管理可能なステップに分解しましょう:
ステップ1:Minicondaのインストール
まず、Python環境を管理するためにMinicondaをインストールします:
- ターミナルを開く
- 次のコマンドを実行してMinicondaインストーラーをダウンロードします:
curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh
- Minicondaをインストールします:
sh Miniconda3-latest-MacOSX-arm64.sh
- 指示に従ってインストールを完了します
- 変更を適用するためにターミナルを閉じて再度開きます
ステップ2:Conda環境の作成とアクティベート
次に、Fluxのための専用の環境を作成します:
conda create -n flux python=3.11 -y
conda activate flux
ステップ3:PyTorchのインストール
MPS(Metal Performance Shaders)対応のPyTorchをインストールします:
pip install torch==2.3.1
ステップ4:Diffusersと依存関係のインストール
必要なライブラリをインストールします:
pip install git+https://github.com/huggingface/diffusers.git
pip install transformers==4.43.3 sentencepiece==0.2.0 accelerate==0.33.0 protobuf==5.27.3
ローカルでFlux Schnellを実行しましょう!
すべてをインストールしたので、Flux Schnellを実行して画像を生成するプロセスを説明します。
ステップ1:スクリプトの準備
新しいPythonファイル「flux_generate.py」を作成し、次のコードを追加します:
import torch
from diffusers import FluxPipeline
import diffusers
# ロープ関数をMPSデバイスに対応できるように変更
_flux_rope = diffusers.models.transformers.transformer_flux.rope
def new_flux_rope(pos: torch.Tensor, dim: int, theta: int) -> torch.Tensor:
assert dim % 2 == 0, "The dimension must be even."
if pos.device.type == "mps":
return _flux_rope(pos.to("cpu"), dim, theta).to(device=pos.device)
else:
return _flux_rope(pos, dim, theta)
diffusers.models.transformers.transformer_flux.rope = new_flux_rope
# Flux Schnellモデルをロード
pipe = FluxPipeline.from_pretrained("black-forest-labs/FLUX.1-schnell", revision='refs/pr/1', torch_dtype=torch.bfloat16).to("mps")
# 画像生成のためのプロンプトを設定
prompt = "猫が「こんにちは、世界」と書かれた看板を持っている"
# 画像を生成
out = pipe(
prompt=prompt,
guidance_scale=0.,
height=1024,
width=1024,
num_inference_steps=4,
max_sequence_length=256,
).images[0]
# 生成した画像を保存
out.save("flux_image.png")
ステップ2:スクリプトの実行
ターミナルで、flux_generate.py
が含まれるディレクトリに移動し、次のコマンドを実行します:
python flux_generate.py
このプロセスはおよそ30秒かかり、MacBook Pro M3 Maxの最大40 GBのRAMを利用します。
コードの理解
スクリプトの主要なコンポーネントを確認しましょう:
ライブラリのインポート:PyTorchとDiffusersから必要なモジュールをインポートします。
ROPE関数の変更:new_flux_rope
関数はMPSデバイス(AppleのMetal Performance Shaders)を扱うための回避策です。これにより、M3 Maxチップとの互換性が確保されます。
モデルのロード:FluxPipeline.from_pretrained()
を使用してFlux Schnellモデルをロードします。モデルリポジトリとリビジョンを指定します。
プロンプトの設定:生成する画像を説明するテキストプロンプトを定義します。
画像の生成:pipe()
関数がさまざまなパラメータとともに呼び出されます:
prompt
:画像のテキスト説明guidance_scale
:この例では0に設定height
とwidth
:画像のサイズ(1024x1024ピクセル)num_inference_steps
:ノイズ除去のステップ数(この場合は4)max_sequence_length
:入力シーケンスの最大長さ(256)
画像の保存:生成された画像は同じディレクトリに「flux_image.png」として保存されます。
ローカルFlux Schnellのパフォーマンスの最適化
MacBook Pro M3 MaxでFlux Schnellのパフォーマンスを最大限に活かすには:
- 不要なアプリケーションを終了して、RAMとCPUリソースを解放します。
- 十分な換気を確保し、サーマルスロットリングを防止します。
num_inference_steps
を調整:この値を増やすと画像の品質が向上しますが、生成時間も増加します。max_sequence_length
を調整:より長いシーケンスはより詳細なプロンプトを可能にしますが、より多くのメモリと処理時間が必要です。
ローカルFlux Schnellのトラブルシューティング
問題が発生した場合:
- CUDAエラー:M3 MaxはCUDAをサポートしていないため、MPSバックエンド(
to("mps")
)を使用していることを確認してください。 - メモリエラー:メモリが不足している場合は、画像サイズや
max_sequence_length
を減らしてみてください。 - モジュールが見つからないエラー:conda環境に必要なすべてのパッケージがインストールされていることを確認してください。
ローカルでFlux Schnellを実行できるようになったので、次にいくつかのアイデアを試してみましょう:
- プロンプトの試行:モデルがそれらをどのように解釈するかを確認するために、異なるテキストの説明を試してみてください。
- パラメータの調整:
guidance_scale
、num_inference_steps
、画像のサイズなどを調整し、出力に与える影響を見てください。 - バッチ処理:スクリプトを変更して、プロンプトのリストから複数の画像を生成するようにしてください。
- 統合:Flux Schnellを独自のアプリケーションやワークフローに統合することを検討してください。
結論
MacBook Pro M3 MaxでローカルにFlux Schnellを実行することで、創造的な可能性が広がります。驚くほどのスピードと品質を備えているため、自分のマシンで見事な画像を生成することができます。モデルとその作成者にクレジットを与えることを忘れずに、AIによる画像を使用する際には著作権と倫理的な考慮事項を尊重してください。