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

追加の手間なしで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をローカルで実行するためのステップバイステップ

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デバイスの処理のためにrope関数を修正
_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を最大限に活用し、最大40GBのRAM使用で約30秒の生成時間を実現するために、次のヒントを考慮してください:

  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. リソース使用量を監視する:Activity Monitorを使用してRAMおよびCPU使用量を監視します。制限に一貫して達している場合、モデルパラメータを調整するか、システムリソースをさらに解放する必要があるかもしれません。
  4. キャッシュをクリアする:メモリ関連のエラーが発生した場合、PyTorchのキャッシュをクリアしてみてください:

torch.cuda.empty_cache()

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

結論

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

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