1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MacBook NeoでComfyUIによるSDXLとAnima画像生成

1
Last updated at Posted at 2026-03-11

MacBook Neo (2026/6/29追記)

MacBook Neoは教育機関向け割引により学生や教職員はメモリ8GBストレージ256GB版を84800円で買えます(今は大幅に値上げしていますが)。今まで使っていたWindows 10ノートPCをリプレースするためにMacBook Neoを購入しました。

ざっと試した限り、Wordでの文書作成やExcelでのデータ処理、PowerPointでのスライドづくり、Outlookでのメールのやり取り、Teamsでの業務といったOffice 365での事務処理については特に問題ないようです。1000円で買えるダイソーの3in1ハブを奥のUSB-Cポートに差してHDMIでの画面出力が可能なことも確認しています。学生のレポート制作や一般的な事務用途ならMacBook Neoは十分活用できるでしょう。

ただ、メモリが少ないので、動画編集等あまりヘビーなことはできないと思います。

でもせっかくなので、あえてメモリを多く消費するComfyUIでのローカル生成AIを試してみました。そのままでは難しいので、WAI-illustrious-SDXL v160に高速化LoRAをマージしGGUFでQ4_K_M形式に量子化したモデル(1.63GB)を用意しました。ComfyUIとComfyUI-GGUF付属ツールを使って別マシンで変換と量子化をしています。

結果、1024x1024画像4ステップの生成に60秒〜80秒ぐらいかかりますが、一応SDXLでの画像生成は可能です。ただし、アクティビティモニタでみるとスワップが3GB消費しており、SSDの消耗が激しいです。ちなみに、メモリ16GBのM4 Mac Miniなら問題ないです。

MacBook Neoでのローカル画像生成はおすすめしませんが、一応可能だということを示すために、以下手順をメモしておきます。 

stable-diffusion.cpp(sdcpp)とテキストエンコーダやVAEまでQ4_K_M量子化したモデルでタイル化VAEデコード(48x48)を行うことで、スワップせず1152x896の画像生成に成功しました。生成時間は95秒ほどかかりますが、SDXLでの画像生成も何とかなるようです(2026/3/14修正&追記)。

さらにAnimaの本体とテキストエンコーダをQ4_Kで量子化したモデルを使うことにより、8ステップで280秒ほどかかりますが、スワップせず1024x1024の画像生成にも成功しました。512x512なら100秒程度です。遅いですが、MacBook Neoでも気合いがあればなんとかなります。sdcppはC++なのでPyTorchよりiPhoneやiPadへの移植が容易だと思うので、頑張れば最新鋭モデルでの画像生成もスマホローカルで可能になると思います(2026/6/29追加)。

sdcppの手順

わかっている人向けです。何をやっているかわからない人はご遠慮ください。

ターミナルでbrewを入れて~/.zprofileに設定します。xcode-commandも自動でインストールされるはずです。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

echo >> $HOME/.zprofile
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> $HOME/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"

brewでgitとwgetとcmakeをインストールします。

brew install git wget cmake

gitでsdcppをダウンロードしstable-diffusion.cppフォルダに移動します。

git clone --recursive https://github.com/leejet/stable-diffusion.cpp
cd stable-diffusion.cpp

buildフォルダを作成しbuildフォルダに移動し、sdcppをcmakeでビルドします。

mkdir build && cd build
cmake .. -DSD_METAL=ON
cmake --build . --config Release

モデルファイルをダウンロードします。1ファイルで2.8GBあります。

wget -O 'waiIllustriousSDXL_v160_Q4_K_for_sdcpp.gguf' 'https://huggingface.co/asfdrwe/wai16DMD2/resolve/main/waiIllustriousSDXL_v160_Q4_K_for_sdcpp.gguf?download=true'

sdcppのsd-cliコマンドで画像を生成します。プロンプトは "1girl, 1boy, profile, classroom, smile, school uniform, standing anime coloring, 4k, 8k, highres(少女と少年が教室で向き合っている)"です。ステップ数4、1152x896で画像生成します。

bin/sd-cli -m ./waiIllustriousSDXL_v160_Q4_K_for_sdcpp.gguf -p "1girl, 1boy, profile, classroom, smile, school uniform, standing anime coloring, 4k, 8k, highres" -W 1152 -H 896 --steps 4 --sampling-method lcm --scheduler lcm --cfg-scale 1.0 --vae-tiling --vae-tile-size 48x48 --diffusion-fa -s -1

output.png

プロンプトは適当に設定して画像生成してみてください。画質がいまいちの場合はステップ数を4から6〜8ぐらいに増やしてください。vae-tile-sizeを増やすとメモリの消費が増えますが、速度は速くなります。多少は増やしてもスワップしないと思いますが結構ギリギリです。

あまり速くないですが、ローカルでの画像生成がMacBook Neoでもできます。

Animaの場合(2026/6/29追加)

そのままVAEデコードをGPUで行うとエラーが出ます。--vae-on-cpuオプションを指定してCPUでVAEデコードすることは可能ですが、遅くなります。

2025/10/20のllama.cppのプルリクエストをベースに2026/6/29時点のGGMLに移植したパッチを作成したので、当ててください。これでVAEデコードもGPUで行えます。

ggml-metal.metalのkernel void kernel_pad_implはChatGPTを参考にし、後の部分は手で修正して移植しました。

sdcppのトップフォルダに保存して、sdcppのトップフォルダ上で

patch -p0 < ggml-metal-diag_mask_iml2col_3d_pad_20260629.patch

としてパッチを当てて、buildに移動してビルドし直してください。

cd build
cmake --build . --config Release

モデルをダウンロードしてください。Q4_Kに圧縮したAnima本体とテキストエンコーダーのQwen3_0.6bと、公式のqwen-image-vaeです。

wget -O 'anima-turbo.q4_k.gguf' 'https://huggingface.co/asfdrwe/anima-turbo-gguf/resolve/main/anima-turbo.q4_k.gguf?download=true'
wget -O 'qwen3_06b.q4_k.gguf' 'https://huggingface.co/asfdrwe/anima-turbo-gguf/resolve/main/qwen3_06b.q4_k.gguf?download=true'
wget -O 'qwen_image_vae.safetensors' 'https://huggingface.co/circlestone-labs/Anima/resolve/main/split_files/vae/qwen_image_vae.safetensors?download=true'
bin/sd-cli --diffusion-model anima-turbo.q4_k.gguf --llm qwen_3_06b.q4_k.gguf --vae qwen_image_vae.safetensors -p 'anime coloring, best quality, anime screenshot, 1girl, solo, school uniform, classroom, looking at viewer, open mouth, smile, standing, blazer' --cfg-scale 1.0 --sampling-method euler --diffusion-fa --width 1024 --height 1024 --steps 8 --vae-tiling --seed -1 --offload-to-cpu -o tmp.png 

プロンプトは適当に設定して画像生成してみてください。SDXLと違って512x512でもちゃんとした画像が生成されるので、解像度を下げればそこそこの速度で生成できます。

ComfyUIの手順

わかっている人向けです。何をやっているかわからない人はご遠慮ください。

ComfyUIの場合VAEタイリングデコードしない場合は3GB程度スワップ使うはずです。VAEタイリングデコードの場合も少しスワップするはずです。

brewでgitとwgetとpython 3.13を入れます。

brew install git wget python@3.13

gitでComfyUIを入れ、Python3.13の仮想環境を構築して有効にし、必要なモジュールとComfyUI-GGUFカスタムノードを入れます。

git clone https://github.com/comfy-org/ComfyUI
cd ComfyUI

python3.13 -m venv venv
. venv/bin/activate

pip install --pre torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/nightly/cpu

pip install --upgrade pip
pip install -r requirements.txt

cd custom_nodes

git clone https://github.com/city96/ComfyUI-GGUF/
cd ComfyUI-GGUF
pip install -r requirements.txt

cd ../..

wgetでモデルをダウンロードします。Unet(GGUF形式)とClip2種類とVAEの4ファイルです。

wget -O models/unet/waiIllustriousSDXL_v160-Q4_K_M.gguf 'https://huggingface.co/asfdrwe/wai16DMD2/resolve/main/waiIllustriousSDXL_v160-Q4_K_M.gguf?download=true'
wget -O models/clip/waiIllustriousSDXL_v160_clip_g.safetensors 'https://huggingface.co/asfdrwe/wai16DMD2/resolve/main/waiIllustriousSDXL_v160_clip_g.safetensors?download=true'
wget -O models/clip/waiIllustriousSDXL_v160_clip_l.safetensors 'https://huggingface.co/asfdrwe/wai16DMD2/resolve/main/waiIllustriousSDXL_v160_clip_l.safetensors?download=true'
wget -O models/vae/waiIllustriousSDXL_v160_vae.safetensors 'https://huggingface.co/asfdrwe/wai16DMD2/resolve/main/waiIllustriousSDXL_v160_vae.safetensors?download=true'

メモリをなるべく使わないようキャッシュを無効化してComfyUIを起動します。

python main.py --cache-none --auto-launch

こちらのワークフローをダウンロードしてComfyUIで開いてください。

プロンプトは適当に設定して画像生成してみてください。画質がいまいちの場合はステップ数を4から6〜8ぐらいに増やしてください。

タイル化VAEデコード (2025/3/14追記)

VAEデコードを差し替えて、_テスト用→VAEデコード(タイル)にすると、生成時間は増えますがスワップ消費量は減るはずです。さらにタイルサイズを512から256ぐらいに減らし、オーバーラップを32に減らすことで、よりスワップ消費量が削減できると思います。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?