M3 Max MacBook ProでFlux Schnellをローカルで使用する方法

M3 Max MacBook ProでMaster Flux Schnellを使って、素早く美しい画像を作成しましょう。セットアップガイド付き!

Anakin AIを無料で利用開始

M3 Max MacBook ProでFlux Schnellをローカルで使用する方法

Start for free
目次
追加の手間なくFLUXをオンラインで試してみませんか?

Anakin AIでFLUX.1 Pro、Schnell、Devを今すぐ実行できます!

Flux Schnellは、テキストプロンプトから高品質の画像を生成する能力を持つ堅牢なテキストから画像への生成モデルです。このチュートリアルでは、M3 Max MacBook ProでFlux Schnellをローカルにセットアップして実行する手順を案内します。この構成により、最大40GBのRAMを活用した効率的な画像生成が可能で、各画像の生成に約30秒かかります。

MacでFlux.1 Proをローカルに実行するための要件

始める前に、システムが以下の要件を満たしていることを確認してください:

  • M3 Maxチップを搭載したMacBook Pro
  • macOS(最新バージョン推奨)
  • 利用可能なRAMが少なくとも40GB
  • AnacondaまたはMinicondaがインストールされている
  • 依存関係をダウンロードするためのインターネット接続

MacでFlux.1 Proをローカルに実行するためのステップバイステップチュートリアル

MacでFlux.1 Proをローカルに実行するためのステップバイステップチュートリアル

ステップ1:環境のセットアップ

まず、新しいConda環境を作成し、それをアクティブにします:

conda create -n flux python=3.11
conda activate flux

ステップ2:依存関係のインストール

次に、必要なパッケージをインストールします:

pip install torch==2.3.1
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

ステップ3:Pythonスクリプトの準備

flux_schnell.pyという名前の新しいPythonファイルを作成し、次のコードを追加します:

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, "次元は偶数でなければなりません。"
   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")

ステップ4:スクリプトを実行

Pythonスクリプトを実行します:

python flux_schnell.py

これにより、「こんにちは世界と書かれた看板を持つ猫」というプロンプトに基づいて画像が生成され、「flux_image.png」として同じディレクトリに保存されます。

コードの理解

スクリプトの重要なコンポーネントを分解してみましょう:

依存関係のインポート

import torch
from diffusers import FluxPipeline
import diffusers

これらの行は、テンソル操作にPyTorchを、Flux Schnellモデルを使用するためにdiffusersライブラリからFluxPipelineを、追加ユーティリティのためのdiffusersモジュールをインポートします。

ロープ関数の修正

_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, "次元は偶数でなければなりません。"
   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

このセクションでは、Apple Siliconチップで使用されるMPS(Metal Performance Shaders)デバイスを処理するためにロープ(Rotary Position Embedding)関数を修正しています。必要に応じてテンソルをCPUに移動させることで、M3 Maxチップとの互換性を確保しています。

モデルのロード

pipe = FluxPipeline.from_pretrained(
   "black-forest-labs/FLUX.1-schnell",
   revision='refs/pr/1',
   torch_dtype=torch.bfloat16
).to("mps")

このコードは、Hugging FaceモデルハブからFlux Schnellモデルをロードします。モデルのバージョンを指定し、効率のためにデータ型をbfloat16に設定し、モデルをMPSデバイスに移動します。

画像の生成

prompt = "こんにちは世界と書かれた看板を持つ猫"out = pipe(
   prompt=prompt,
   guidance_scale=0.,
   height=1024,
   width=1024,
   num_inference_steps=4,
   max_sequence_length=256,
).images[0]

ここでは、プロンプトを定義し、ロードしたモデルを使用して画像を生成します。パラメータは生成プロセスのさまざまな側面を制御します:

  • guidance_scale:無条件生成のために0に設定します。
  • heightおよびwidth:出力画像のサイズを1024x1024ピクセルに設定します。
  • num_inference_steps:デノイジングステップの数を制御します(この場合、より早い生成のために4)。
  • max_sequence_length:入力シーケンスの最大長を制限します。

画像の保存

out.save("flux_image.png")

最後に、この行は生成された画像を「flux_image.png」という名前のPNGファイルとして現在のディレクトリに保存します。

パフォーマンスの最適化

M3 Max MacBook Proを最大限に活用し、約30秒の生成時間で最大40GBのRAMを使用して生成するために、次のヒントを考慮してください:

  1. 不要なアプリケーションを閉じる:他のリソース集約型アプリケーションを閉じてRAMとCPUリソースを解放します。
  2. 画像のサイズを調整する:より速い生成時間が必要な場合は、heightおよびwidthパラメータを減らすことができます。逆に、高品質を求めるには、それらを増やすことができますが、生成時間が長くなります。
  3. num_inference_stepsを試す:この値を増やすと、より高品質の画像が得られますが、生成時間が増加します。減少させることでプロセスを加速できますが、画像の質が低下する可能性があります。
  4. bfloat16精度を使用する:スクリプトですでに実装されているように、torch.bfloat16データ型を使用することでメモリ使用量が削減され、品質の大幅な損失なくスピードが向上する可能性があります。
  5. バッチ処理:複数の画像を生成する必要がある場合、GPUをより効率的に使用するためにバッチ処理を実装することを検討してください。

トラブルシューティング

M3 Max MacBook ProでFlux Schnellを実行中に問題が発生した場合は、次のことを試してください:

  1. 依存関係を更新する:特にPyTorchやdiffusersを最新に保ちます。
  2. CUDAの互換性を確認する:M3 MaxはMPSを使用していますが、一部のCUDA関連のエラーが発生する可能性があります。お使いのシステムに正しいバージョンのPyTorchおよび関連ライブラリを使用していることを確認してください。
  3. リソース使用状況を監視する:アクティビティモニターを使用してRAMとCPUの使用状況を確認します。リミットに頻繁に到達する場合は、モデルパラメータを調整するか、さらにシステムリソースを解放する必要があります。
  4. キャッシュをクリアする:メモリ関連のエラーが発生した場合は、PyTorchのキャッシュをクリアしてみてください:

torch.cuda.empty_cache()

5. カーネルの再起動:Jupyterノートブックや類似の環境を使用している場合、持続的なエラーが発生した場合はカーネルを再起動してみてください。

結論

M3 Max MacBook ProでFlux Schnellをローカルに実行すると、強力なテキストから画像への生成機能が得られます。このチュートリアルで説明したセットアップを使えば、最大40GBのRAMを使用して、テキスト説明から約30秒で高品質の画像を作成できます。パフォーマンスはハードウェアやプロンプトの複雑さによって異なる場合があることを考慮してください。

さまざまなパラメータを試して、速度と画像品質の最適なバランスを達成してください。AIモデルとハードウェアが進化し続ける中、さらに印象的な結果が待っています。生成を楽しんでください!