Stable DiffusionをM1 Macで動かした2022年の記録

プログラミング

2022年の夏にStable Diffusionが公開されて、画像生成AIが一気に身近になりました。「すごいらしいけど、実際どうなの?」という空気感の中、とりあえず自分のM1 Macで動かしてみました。

まず手元で動かす

新しい技術は理屈より先にまず動かす。論文やブログ記事で理解した気になるより、出力を見たほうが輪郭がつかめます。

使用したのはbfirsh/stable-diffusionのapple-silicon-mps-supportブランチ。Apple SiliconのMPS(Metal Performance Shaders)でGPU推論ができるフォークで、M1 Mac勢はだいたいこれを使っています。

モデルはHugging Faceからv1.4の重み(sd-v1-4.ckpt、約4GB)をダウンロード。pyenvでPython 3.10系があれば、virtualenvを作ってrequirements.txtを入れるだけで動きます。

実際に生成してみた

いくつかのプロンプトを試してみました。

宇宙に浮かぶリンゴ

東京タワーを上空から

アニメ調のイラスト

ファンタジー風イラスト1

ファンタジー風イラスト2

「宇宙に浮かぶ赤いリンゴ」「東京タワーを上空から」「ファンタジー系のイラスト」など。プロンプトを入れるだけでそれっぽい画像が出てくること自体が新鮮でした。品質はまちまちでしたが、「AIがゼロから画像を生成している」というインパクトが大きかった。

生成時間はM1 Macで1枚あたり数十秒。パラメータを変えながら何十枚も試すにはやや遅い。クラウドGPUなら速いのはわかっていましたが、ローカルで完結する手軽さを優先しました。

v2.0で起きた混乱

v1.4で遊んでいるうちにv2.0がリリースされました。当然品質が上がるだろうと期待したのですが、そうでもなかった。

v2.0以降は768px以上の解像度が推奨になり、512pxだと品質が劣化する。768pxにすると生成時間が大幅に伸びて、M1 Macでは実用的な速度で回せなくなりました。

さらに、v1.4で使っていたプロンプトをそのまま入れても明らかに質が落ちる。ネガティブプロンプトの扱いが変わったのか、モデルの特性が変わったのか、まだ情報も少なくてよくわからない。

AI系のモデルはバージョンが上がるとアーキテクチャやデータセットが変わり、得意な領域がシフトする。旧バージョンのほうが自分の用途に合っている、ということは普通にあります。

AUTOMATIC1111 Web UIも試したが

話題のAUTOMATIC1111/stable-diffusion-webuiも試しました。ブラウザからGUIでプロンプトを入力でき、パラメータ調整もスライダーで直感的にできる。

ただ、Apple Siliconでの動作はまだ安定しておらず、v2.0ベースのモデルとの組み合わせでは速度も品質も期待はずれ。この時点では素のスクリプト実行のほうが確実でした。

プロンプトを工夫して生成した例がこのあたり。

プロンプト調整例1

プロンプト調整例2

まず触ってみることの価値

この時点ではローカルで動かすStable Diffusionは完全に趣味の領域でした。実用性よりも「こういうことができるようになったのか」という感動が先に立つ。

品質が低くても、速度が遅くても、自分の手元で動いたという事実は残る。それが次の判断の土台になります。

Related Posts