はじめに
だいぶ今更ですが、仕事で使う可能性が出てきたので予習としてStable Diffusionに入門した時の備忘録です。
Apple Silicon の Mac に Stable Diffusion web UI(AUTOMATIC1111)をローカル構築した際の手順をまとめます。
公式手順は NVIDIA GPU 環境を前提にしているため、Apple Silicon では追加のオプション設定や、環境固有のハマりどころがいくつかあります。さらに 2025年12月頃から、web UI が依存リポジトリの取得に失敗する不具合が新規インストールで多発しており、ここも回避が必要です。
本記事は、実際に構築して画像生成まで到達した手順を、つまずいた箇所の対処とあわせて記録したものです。同じ環境で構築する方が、同じ穴にハマらずに済むことを目指しています。(バージョンやパッケージ不足で詰まった部分が多々あったので、この記事はあくまで参考程度でその時々のエラー文準拠で出来れば解決していきましょう!)
対象読者: ターミナル操作や Python の仮想環境にある程度慣れている方を想定しています。
検証環境
- Mac(Apple Silicon)
- メモリ 16GB
- macOS(Homebrew 導入済み)
- pyenv で Python を管理
- AUTOMATIC1111 stable-diffusion-webui v1.10.1
全体の流れ
- 必要なパッケージを Homebrew で導入
- pyenv で Python 3.10 を用意(
_lzma対応のためxzを先に入れるのが肝) - web UI 本体を clone
- 仮想環境(venv)を作成
- Apple Silicon 向けの起動オプションを設定
- モデル(checkpoint)を配置
- 起動・画像生成
(今回の環境だと)つまずきやすいポイントは主に 2 箇所、「依存リポジトリの 404 問題」と「Python の _lzma 不足」です。後半でまとめて解説します。
1. Homebrew で必要パッケージを導入
ビルドや取得に必要なツールをまとめて入れます。
brew install cmake protobuf rust python@3.10 git wget xz
xz を必ず含めてください。これが無い状態で Python をビルドすると、後述の _lzma エラーで web UI が起動できませんでした。
2. pyenv で Python 3.10 を用意
Stable Diffusion web UI は今回はPython 3.10 系で動かしています。(3.11以降は先駆者ニキネキが構築詰まった記事あげてたのが記憶に新しかったので...)
xz を Python のビルド時に認識させるため、環境変数を設定してからインストールします。
export LDFLAGS="-L$(brew --prefix xz)/lib"
export CPPFLAGS="-I$(brew --prefix xz)/include"
pyenv install 3.10.20
すでに xz 無しで 3.10 をビルド済みの場合は、おそらく_lzma が欠けたままでエラーが出る可能性があるので、その場合は入れ直しが必要です。順番(xz → pyenv install)が重要です。
3. web UI 本体を clone
cd ~
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
cd stable-diffusion-webui
このフォルダで使う Python バージョンを固定します。
pyenv local 3.10.20
python --version # Python 3.10.20 が返ればOK
pyenv local は実行したフォルダに .python-version を作り、そのフォルダ内でだけバージョンを切り替えます。グローバル設定には影響しません。
4. 仮想環境(venv)を作成
python -m venv venv
source venv/bin/activate
python --version # 3.10.20 を再確認
python -c "import lzma; print('lzma OK')" # ← lzma OK が出れば成功
最後の lzma OK が表示されれば、_lzma 問題はクリアです。ここで確認しておくと後の起動エラーを未然に防げます。
anaconda を使っている場合、プロンプト先頭に (base) が付くことがあります。venv と二重に有効化されると pip 周りで事故りやすいので、conda deactivate で base を抜けてから venv を有効化するのが安全です。
毎回 base が有効化されるのを止めるには conda config --set auto_activate_base false。
5. Apple Silicon 向けの起動オプションを設定
webui-user.sh を編集してオプションを追加します。
open -e webui-user.sh
以下を設定します(コメントアウトされている行の # を外して、オプションの記載が要るので下記で丸ごと書き換え)。
export COMMANDLINE_ARGS="--skip-torch-cuda-test --upcast-sampling --no-half-vae"
それぞれの意味は次の通りです。
| オプション | 役割 |
|---|---|
--skip-torch-cuda-test |
CUDA(NVIDIA) 非搭載のため CUDA チェックをスキップ。Apple Silicon では必須級 |
--upcast-sampling |
MPS でのサンプリング精度・安定性を改善 |
--no-half-vae |
VAE 由来の黒画像・NaN 化を防止 |
--xformers は CUDA 専用なので Apple Silicon では使えません。指定しないでください。
依存リポジトリの 404 を回避する設定(重要)
後述の 404 問題を避けるため、取得先リポジトリを差し替える環境変数も同じファイルに追記しておきます。
export STABLE_DIFFUSION_REPO="https://github.com/w-e-w/stablediffusion.git"
これを入れておくと、初回起動時の依存リポジトリ取得でつまずかずに済みます。
6. モデル(checkpoint)を配置
.safetensors 形式のモデルを以下のフォルダに置きます。
~/stable-diffusion-webui/models/Stable-diffusion/
最初の 1 本は、軽量で情報も多い Stable Diffusion 1.5 がおすすめです。Hugging Face から取得できます。
cd ~/Downloads
wget https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors
mv ~/Downloads/v1-5-pruned-emaonly.safetensors ~/stable-diffusion-webui/models/Stable-diffusion/
配置できたか確認します。
ls ~/stable-diffusion-webui/models/Stable-diffusion/
16GB メモリなら SD 1.5(512×512中心)が快適です。SDXL も動きますが速度・メモリの面でやや重くなります。最初は SD 1.5 から始めるのが無難です。
7. 起動・画像生成
cd ~/stable-diffusion-webui
source venv/bin/activate
./webui.sh
初回は PyTorch(MPS版)など依存パッケージの自動ダウンロードが走り、数分〜十数分かかります。次の行が表示されれば成功です。(それが自動で該当リンクが開きます)
Running on local URL: http://127.0.0.1:7860
ブラウザで http://127.0.0.1:7860 を開きます。
- 左上「Stable Diffusion checkpoint」に配置したモデルが選択されているか確認
- プロンプト欄に英語で入力(例:
a cute cat sitting on a sofa, photorealistic) - 「Generate」をクリック
512×512・20ステップ程度なら、Apple Silicon でも実用的な速度で生成できます。
2回目以降の起動
依存取得は不要になるので、次の 3 行だけで立ち上がります。
cd ~/stable-diffusion-webui
source venv/bin/activate
./webui.sh
つまずきポイントと対処
ここからは、構築中に実際にハマった箇所と解決策をまとめます。同じエラーに遭遇した方は該当箇所を参照してください。
① 依存リポジトリの 404 / 認証ループ
初回起動時、次のようなエラーで止まることがあります。
Cloning Stable Diffusion into .../repositories/stable-diffusion-stability-ai...
Username for 'https://github.com':
ユーザー名・パスワードを入力しても弾かれ、ループに陥ります。
原因: web UI が初回に取得する Stability-AI/stablediffusion リポジトリが、2025年12月頃から削除またはプライベート化され、404 になっています。GitHub は「存在しない」と「権限がない」を区別せず認証を要求するため、認証ループに見えます。実際には公開リポジトリ前提なので認証情報を入れる必要はありません。
対処: 取得先を有志のフォークに差し替えます。これは公式 dev ブランチでも採用されている対応です(master には未反映のため、利用者側で環境変数を設定する必要があります)。
# 失敗した途中フォルダを削除
rm -rf ~/stable-diffusion-webui/repositories/stable-diffusion-stability-ai
# 取得先を差し替えて起動
cd ~/stable-diffusion-webui
source venv/bin/activate
export GIT_TERMINAL_PROMPT=0
export STABLE_DIFFUSION_REPO="https://github.com/w-e-w/stablediffusion.git"
./webui.sh
GIT_TERMINAL_PROMPT=0 は、認証が必要な場面で「聞く」代わりに「即エラー」にする設定で、ループを止めるのに有効です。恒久化するには手順5のとおり webui-user.sh に STABLE_DIFFUSION_REPO を書いておきます。
この差し替えフォークは web UI メンテナによるもので、中身は元の Stable Diffusion と同じコードです。一度クローンに成功すれば再取得は走らないため、悩むのは初回だけです。
この辺かなり詰まったのでClaude君に解決頼りました
AIに原因考察させてから該当ページやissue見に行くのトラブルシューティングとして効率的ですね...
② Python の _lzma 欠け(ModuleNotFoundError: No module named '_lzma')
リポジトリ取得が通った後、起動の最終段階で次のエラーが出ることがあります。
import lzma
File ".../lib/python3.10/lzma.py", line 27, in <module>
from _lzma import *
ModuleNotFoundError: No module named '_lzma'
原因: pyenv で Python をビルドした時点で、システムに xz が無いと _lzma モジュールが組み込まれません。web UI の依存がこれを必要とするため起動に失敗します。Apple Silicon + pyenv で頻出のハマりどころです。
(一応ターミナルにエラー原因やバージョン不足の警告は出てくれるので比較的解決しやすい所さん)
対処: xz を入れてから Python をビルドし直し、venv も作り直します。
# 1. xz を導入
brew install xz
# 2. xz を認識させて Python を再ビルド
export LDFLAGS="-L$(brew --prefix xz)/lib"
export CPPFLAGS="-I$(brew --prefix xz)/include"
pyenv install 3.10.20
# 3. web UI フォルダで新バージョンを使う
cd ~/stable-diffusion-webui
pyenv local 3.10.20
python --version
# 4. 古い venv を捨てて作り直す
deactivate 2>/dev/null
rm -rf venv
python -m venv venv
source venv/bin/activate
# 5. 確認
python -c "import lzma; print('lzma OK')"
lzma OK が出れば解決です。本記事の手順2〜4を最初からこの順序で行えば、このエラー自体を回避できます。
③ pyenv のバージョンが反映されない
pyenv local 3.10.20 を実行したのに python --version が古いバージョンを返す場合、原因はたいてい次のどれかです。
- 対象バージョンが未インストール(
pyenv versionsで確認) - web UI フォルダ以外で
pyenv localを実行している - 古い venv が有効なまま(venv は pyenv より優先される)
venv が有効だと pyenv の設定が効かないので、deactivate で抜けてから python --version を確認します。バージョンが正しく切り替わったら、改めて venv を作り直してください。
まとめ
Apple Silicon でのStable Diffusion web ui構築は、NVIDIA 環境にはない次の注意点があります。
- 起動オプションで
--skip-torch-cuda-test --upcast-sampling --no-half-vaeを指定し、--xformersは使わない - pyenv で Python を入れる前に
xzを導入し、_lzma欠けを防ぐ - 2025年12月以降の 404 問題は
STABLE_DIFFUSION_REPOの差し替えで回避する
これらを最初から押さえておけば、つまずきの大半は避けられます。ローカルで動かせると、生成のたびに費用がかからず、設定も自由に試せるのが利点です。
ファインチューニングに進む場合、学習は生成よりも大幅に重く、MPS 対応が不完全なツールも多い点に注意が必要です。まずは web UI 標準の Textual Inversion から試すのが現実的でしょう。
モデルや学習データを扱う際は、配布元のライセンスや、学習対象の著作権・利用規約を確認のうえ、自分が権利を持つ・利用が許可された素材を使うようにしてください。
サクッと環境構築を行なって、皆さんも是非お手軽画像生成を楽しんで行きましょう!
