2025年5月13日火曜日

M1 MacBookAir で mlx 上で stable diffusion を実行する

M1 MacBookAir で mlx 上で stable diffusion を実行する

概要

例のごとく mlx-examples を使います

環境

  • M1 MacBookAir (CPU8, GPU7)
  • Python 3.12.9
  • mlx-examples 977cd30242b9891c306ef23ba925553104eb4f0c

動かす方法

基本はクローンして pip install して python で実行するだけです

  • git clone https://github.com/ml-explore/mlx-examples.git
  • cd mlx-examples
  • cd stable_diffusion
  • pyenv local 3.12.9
  • python -m venv .venv
  • pip install -r requirements.txt
  • python txt2image.py "A photo of an astronaut riding a horse on Mars." --n_images 4 --n_rows 2

だいたい1枚の生成で1分から2分ほどで完了します

オプション

  • n_images -> 1枚の画像内に何枚の絵を生成するか
  • n_rows -> 何行で表示するか、n_images=4 で n_rows=2 だと上下に2枚ずつ生成される、1枚の絵だけ生成したい場合は n_images も n_rows も 1 にする
  • negative_prompt -> ネガティブプロンプトを指定します

生成される画像のサイズは528x528になります

使用しているモデル

txt2image.py では stabilityai/sdxl-turbo を使っているようです
モデルを変更したい場合は好きなモデルをダウンロードして model オプションを指定するか直接ファイルを編集しても OK です

初回はモデルのダウンロードが走り15GBほどダウンロードするのでディスクに注意しましょう

最後に

過去に sd-webuisd-webui-forge のやり方を紹介しましたが Apple Sillicon の GPU をフルで使いたいならやはり mlx を使った方法が一番かもしれません

参考サイト

2 件のコメント:

  1. モデルのダウンロードは huggingface-cli を使うと確実です

    huggingface-cli download stabilityai/stable-diffusion-xl-base-1.0 --local-dir models/Stable-diffusion --local-dir-use-symlinks False

    返信削除
  2. が、リポジトリのサイズが60GB以上あるのでディスクの容量に注意しましょう

    返信削除