概要
M1 Macでwaifu-diffusionを動かした。
※2022.10.30時点:下記の手順がうまく動作しなくなってしまったので調査中。
環境
- MacBook Pro (M1): macOS 13.3.1 Build 22E772610a
- Python: 下記サイトからMiniforge3-MacOSX-arm64.shをダウンロードしてインストール
準備
conda環境を作って、必要なパッケージをインストールする。
$ conda create --name waifudiffusion python=3.10 -y
$ conda activate waifudiffusion
$ conda install pytorch-nightly::pytorch torchvision torchaudio -c pytorch-nightly -y # MPS acceleration is available on MacOS 12.3+
$ conda install transformers ftfy -y
$ conda install diffusers -y
$ conda install accelerate -y
PyTorchのインストールは、Start Locallyのページで、
Item | Value |
---|---|
PyTorch Build | Preview(Nightly) |
Your OS | Mac |
Package | Conda |
Language | Python |
Compute Platform | Default |
を選んで、Run this Commandのところに示されたコマンドを実行する。
実行
パッケージをインポートする。
>>> import torch
>>> import diffusers
>>> torch.__version__ # バージョン確認
'2.1.0.dev20230504'
>>> diffusers.__version__ # バージョン確認
'0.16.1'
>>> torch.backends.mps.is_available() # MPSデバイス確認
True
StableDiffusionパイプラインを作る。デバイスにmpsを設定する。
>>> pipe = diffusers.StableDiffusionPipeline.from_pretrained(
... 'hakurei/waifu-diffusion',
... torch_dtype=torch.float32
... ).to('mps') # MPS(Metal Performance Shaders)
テキストから画像を生成する。
>>> prompt = "masterpiece, 1girl, aqua eyes, baseball cap, blonde hair, closed mouth, earrings, green background, hat, hoop earrings, jewelry, looking at viewer, shirt, short hair, simple background, solo, upper body, yellow shirt"
>>> image = pipe(prompt, guidance_scale=6).images[0] # 画像を生成
>>> image.save("output.png") #画像を保存
補足
accelerate
がインストールされていないと、StableDiffusionPipeline.from_pretrained()
を実行したときに下記のエラーが発生する。
Cannot initialize model with low cpu memory usage because
accelerate
was not found in the environment. Defaulting tolow_cpu_mem_usage=False
. It is strongly recommended to installaccelerate
for faster and less memory-intense model loading.
参考情報
- Accelerated PyTorch training on Mac
- PyTorch 1.13 release, including beta versions of functorch and improved support for Apple’s new M1 chips.
- Introducing Accelerated PyTorch Training on Mac