🧑🎨
Macのローカル環境でSDXL Turboを実行する
この記事について
この記事ではM1/M2/M3のMacのローカルでSDXL Turboを実行する方法を解説します。
公式のコードはMac環境では使えないため、Mac用に改変しています。
現状はMac環境の方が効率が悪いとはいえ、
筆者の環境(M1-Pro 32GB)の環境でもtext to imageで1秒、image to imageで2秒なのでかなり未来感があります。
公式のURL
この記事は公式のコードや実行環境をベースに記載しています。
詳細な技術情報は公式のサイトに記載がありますので、ぜひ公式のサイトも見てみてください。
環境構築
細かい部分は別の記事を参考にしてください。
HuggingFaceの設定が必要になりますので、未設定の場合はこちらの記事を参考にしてください。
仮想環境を作る
ターミナルで以下を実行
python -m venv env
仮想環境を起動
. ./env/bin/activate
仮想環境に必要なライブラリをインストール
最後は公式のコードそのままです。
pip install --upgrade pip
pip install jupyter notebook
pip install diffusers transformers accelerate --upgrade
notebook環境を起動
vscodeやブラウザなどでnotebook環境を構築してください。
実行コード
text to imageの場合
初回起動時のみファイルのダウンロードなどに時間がかかります。
一度ファイルやモデルのロードが終わったら2回目以降は最終行だけ実行すればOKです。
from diffusers import AutoPipelineForText2Image
import torch
pipe = AutoPipelineForText2Image.from_pretrained("stabilityai/sdxl-turbo", torch_dtype=torch.float32, variant="fp32")
pipe.to("mps")
prompt = "A cinematic shot of a baby racoon wearing an intricate italian priest robe."
image = pipe(prompt=prompt, num_inference_steps=1, guidance_scale=0.0).images[0]
アウトプット
1秒でこのクオリティは本当にすごいですね。
image to imageの場合
インプット画像は公式のものをお借りしています。
from diffusers import AutoPipelineForImage2Image
from diffusers.utils import load_image
import torch
pipe = AutoPipelineForImage2Image.from_pretrained("stabilityai/sdxl-turbo", torch_dtype=torch.float32, variant="fp32")
init_image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/cat.png").resize((512, 512))
prompt = "cat wizard, gandalf, lord of the rings, detailed, fantasy, cute, adorable, Pixar, Disney, 8k"
image = pipe(prompt, image=init_image, num_inference_steps=2, strength=0.5, guidance_scale=0.0).images[0]
アウトプット
こちらは2秒で完成。もう少しコードを加工して、手書きの画像と連動させると手書き画像をリアルタイムで反映していくこともできそうです。
まとめ
いかがだったでしょうか?SDXL-Turboの、あまりの速さに私は感動しました!
SDXLは環境を整えたもののスペック不足で出力が遅く使えていなかったのですが、ここまで来るとSDXL移行が見えてきますね!
私のTwitterではLLMに限らず、AIを活用した業務改善情報の発信をしておりますのでご興味のある方は是非フォローをお願いします。
Discussion