🎨

初心者向け: Apple Silicon MacでStable Diffusionの画像生成を行う方法

に公開

はじめに

Stable Diffusionは、高品質な画像をテキストから生成できる注目のAIモデルです。本記事では、Apple Silicon (M1/M2チップ) 搭載のMacでStable Diffusionを実行するためのステップバイステップガイドを紹介します。特に、機能が豊富なAUTOMATIC1111版のStable Diffusion Web UIを使い、Pythonの仮想環境 (venv) を用いてセットアップします。また、Apple SiliconのGPUを活用するMetal Performance Shaders (MPS)による高速化にも触れます。PythonやAI画像生成が初めての方でも分かるよう、丁寧に解説していきます。

1. Pythonのインストール

Stable Diffusionを実行するにはPython 3.xが必要です(3.10系が推奨です)。お使いのMacに適切なバージョンのPythonがインストールされていない場合、以下の方法で用意しましょう。

pyenvを使用してPythonをインストール – pyenvは複数バージョンのPythonを簡単に切り替えられるツールです。まずHomebrewがインストールされていることを確認し(後述)、ターミナルで次を実行してpyenvを導入します。

brew install pyenv
# インストールできたら、pyenv で Python 3.10 をインストールします。例:
pyenv install 3.10.12
pyenv global 3.10.12   # システム全体のPythonを3.10.12に切り替え

これでpython3コマンドでPython 3.10が実行できるようになります。

2. 開発ツールと依存パッケージの準備

続いて、Stable Diffusionの実行に必要な開発ツールやライブラリをインストールします。

  • Xcodeコマンドラインツールのインストール: 一部のPythonパッケージはコンパイルが必要になるため、Appleの開発者ツールが必要です。ターミナルで次を実行し、Xcodeのコマンドラインツールをインストールしてください。
xcode-select --install

既にインストール済みの場合は「既にインストールされています」のようなメッセージが出ます。インストールが始まった場合、完了するまで数分程度待ちましょう。

  • 必要パッケージのインストール: Homebrewが使えるようになったら、Stable Diffusion Web UIに必要な各種ツール・ライブラリをインストールします。ターミナルで以下を実行してください。
brew install cmake protobuf rust git wget

上記コマンドにより、cmake(ビルド用ツール)、protobuf(Protocol Buffersライブラリ)、rust(Rustコンパイラ, 一部のPython依存で使用)、git(Gitクライアント)、wget(ダウンロードツール)が一括でインストールされます。既にインストール済みのものがある場合はスキップされます。完了まで少し時間がかかるので待ちましょう。

3. Python仮想環境 (venv) の作成と有効化

システムにPythonを入れただけでは、他のプロジェクトとライブラリが干渉する可能性があります。そこでPythonの仮想環境 (virtual environment) を作成し、Stable Diffusion Web UI専用の環境を用意します。仮想環境を使うことで、後から環境を削除したり簡単に再現したりできるメリットもあります。

まず、ターミナルでStable Diffusion Web UIを設置したいディレクトリへ移動しましょう。例えばホームディレクトリ直下に作る場合は特に移動は不要ですが、Downloadsフォルダ下に作りたい場合は:

cd ~/Downloads

などと移動します (好きな場所で構いません)。

仮想環境の作成: 移動したら以下のコマンドで仮想環境を作成します。ここでは仮想環境の名前をsdwebui-venvとしています(任意の名前でOK)。

python3 -m venv sdwebui-venv

実行後、カレントディレクトリにsdwebui-venvというフォルダが生成され、中に独立したPython環境一式がセットアップされます。

仮想環境の有効化: 次にその環境を有効化します。以下を実行してください。

source sdwebui-venv/bin/activate

実行後、ターミナルのプロンプト行の先頭に環境名が表示されるようになります(例: (sdwebui-venv) MacBook:~ username$)。これが仮想環境に入った状態です。以降、このターミナル内で行うpipインストールやPython実行は、すべてこの仮想環境上で行われ、システムのPython環境に影響を与えません。

4. Stable Diffusion Web UI (AUTOMATIC1111) のダウンロード

環境の準備ができたら、AUTOMATIC1111版 Stable Diffusion Web UI のプログラムを入手します。これはGitHub上で公開されているリポジトリですので、Gitコマンドでクローン(ダウンロード)します。

ターミナルで以下のコマンドを入力しましょう:

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git

実行すると、現在のディレクトリ直下にstable-diffusion-webuiというフォルダが作成され、その中にWeb UIに必要なファイル一式がコピーされます。

続けて、ターミナルでそのフォルダに移動します。

cd stable-diffusion-webui

ここがStable Diffusion Web UIのホームディレクトリとなります。

5. Apple Silicon向けGPUアクセラレーション (MPS) の有効化

Apple Silicon Macでは、Metal APIを用いたGPUアクセラレーションバックエンド MPS (Metal Performance Shaders) がPyTorchによりサポートされています。AUTOMATIC1111 Web UIも内部でPyTorchを利用しており、デフォルトでMacのGPU(MPSデバイス)を使って画像生成を行います。これによりCPUのみで実行するよりも高速に画像を生成できます。

特別な設定をしなくてもWeb UIは自動的にMPSを使いますが、MPS未対応の処理が出てきた際にエラーにならないようフォールバックを許可しておくことをおすすめします。フォールバックとは、GPUで計算できない部分を自動的にCPUで処理する機能です。環境変数 PYTORCH_ENABLE_MPS_FALLBACK を有効にすることでこの機能がオンになります 。

ターミナルで仮想環境をアクティブにした状態で、以下のように環境変数を設定しておきましょう(毎回起動時に設定するのが面倒な場合は、このコマンドを~/.zprofileなどに追記して永続化しても構いません)。

export PYTORCH_ENABLE_MPS_FALLBACK=1

こうしておくと、PyTorch実行中にMetal対応していない演算があっても自動的にCPU実行に切り替わるため、エラーで停止せず最後まで画像生成が行われます。

6. Web UIの起動とテキストからの画像生成

準備が整ったら、いよいよAUTOMATIC1111 Stable Diffusion Web UIを起動しましょう。仮想環境が有効になったターミナルで、先ほど移動したstable-diffusion-webuiディレクトリにて次のコマンドを実行します。

./webui.sh

このwebui.shはWeb UIを起動するためのシェルスクリプトです。実行すると、初回は必要なPythonライブラリが自動的にダウンロード・インストールされていくため、完了までしばらく時間がかかります。インターネット接続環境にもよりますが、数分程度はかかるでしょう。途中でモデルデータのダウンロードも行われます。

インストールとセットアップ処理が完了すると、ターミナルに 「Running on local URL: http://127.0.0.1:7860」といったメッセージが表示されます。これはWeb UI用のローカルサーバーが立ち上がり、ブラウザ経由でアクセスできる状態になったことを意味します。上記のURL(通常はhttp://localhost:7860/ と同等)をWebブラウザで開いてみてください。自動でブラウザが開く設定になっている場合は、既にブラウザ画面が立ち上がっているかもしれません。

テキスト入力欄にプロンプト(生成したい画像の説明)を入れ、「Generate」ボタンを押すと画像が生成される。

ブラウザで表示されたインターフェース上部の「Stable Diffusion checkpoint」という欄に、現在読み込まれているモデル名が表示されます。初回セットアップ直後であればStable Diffusion v1.5のモデルが選択されているはずです。では、試しに簡単な画像生成を行ってみましょう。

1.	プロンプトの入力: 「Prompt」と書かれたテキストボックスに、生成したい画像の内容を文章で入力します。例えば「`a cat sitting on a chair`(椅子に座る猫) 」など、簡単な英語の描写でも構いません。
2.	ネガティブプロンプト(任意): 「Negative prompt」の欄には、画像に含めたくない要素を入力できます(例: `blurry` =「ぼやけた」など)。初心者であれば最初は空欄でも大丈夫です。
3.	各種設定: 画像のサイズやステップ数、CFG Scaleなど細かなパラメータが設定できますが、初めのうちはデフォルト設定のままで問題ありません。
4.	生成の実行: 画面上の「Generate」ボタンを押します。モデルがテキストをもとに画像を生成し始めます。進行状況がテキストログやプログレスバーで表示され、デフォルト設定なら数十秒~1分程度で1枚の画像が出力されるはずです。

上記のプロンプトとその出力が含まれた画面レイは下記のとおりです。

正常に動作すれば、プロンプトの内容に沿った画像が生成され、Web UI上にサムネイルが表示されます 。おめでとうございます、これでApple Silicon Mac上でStable Diffusionを使った画像生成に成功しました! 🎉

生成された画像はWeb UI上でプレビューされるほか、stable-diffusion-webui/outputs/フォルダ内に自動保存されています。気に入った画像ができたら保存しておきましょう。

7. 環境を維持し、再利用する方法

一度セットアップが完了すれば、この環境は仮想環境フォルダとWeb UIフォルダを残しておく限りずっと利用可能です。Dockerのように毎回消える環境ではなく、必要なものはすべてローカルにインストールされているため、Macの電源を落としても環境は保持されます。

次回以降、Stable Diffusionを使いたいときは以下の手順だけでOKです。

1.	ターミナルを開き、仮想環境を有効化する(例: source ~/Downloads/sdwebui-venv/bin/activate など仮想環境を作ったパスに応じて実行)。
2.	stable-diffusion-webuiフォルダに移動し(例: cd ~/Downloads/stable-diffusion-webui)。
3.	./webui.shを実行する。

これで再びWeb UIが立ち上がります。初回と違いライブラリの再インストールは不要なので、短時間で起動完了するはずです。

環境をアップデートしたい場合(Web UI本体の更新があったとき)は、stable-diffusion-webuiフォルダ内で以下を実行して最新コードを取得し、

git pull

その後にいつも通り./webui.shで起動すればOKです。

Discussion