画像生成AIのStable Diffusionを動かすには十分な性能のGPUとVRAMが求められるため、ハイスペックなPCやワークステーションを使うか、あるいはGPUサーバーにアクセスして演算リソースを借りる必要があります。エンジニア向けに機械学習の講義を配信しているMachine Learning Compilationが、サーバーのサポートを必要とせずにブラウザ内でStable Diffusionを実行できる「Web Stable Diffusion」を公開しています。

WebSD | Home

https://mlc.ai/web-stable-diffusion/

Web Stable Diffusionはデモ版が公開されていますが、記事作成時点ではM1あるいはM2搭載のMacでのみ動作が確認されています。今回はM1搭載iMac(8コアCPU・8コアGPU・256GBストレージ・RAM16GBモデル)で実際にデモを動かしてみました。

Web Stable Diffusionのデモ版は、記事作成時点でGoogle Chromeの試験運用版であるChrome Canaryで動作するとのことで、まずはChrome Canaryの配布ページにアクセスし、「Chrome Canaryをダウンロード」をクリック。



「同意してインストール」をクリックして、DMG形式のインストーラーをダウンロードします。インストーラーのファイルサイズは218.6MBです。



インストーラーを起動してGoogle Canaryをインストールします。



次に、ターミナルに「/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary --enable-dawn-features=disable_robustness」とコマンドを入力し、Chrome Canaryを起動します。



Web Stable Diffusionのページにアクセスします。



ページ下部の「Demo」に、Web Stable Diffusionのデモが設置されています。「Input prompt」にプロンプトを、「Negative prompt (optional)」にネガティブプロンプトを入力します。今回はデフォルトの「A photo of an astronaut riding a horse on mars(火星で馬に乗る宇宙飛行士の写真)」というプロンプトで、「Generate」をクリック。



画像の生成が始まりました。



だいたい2分弱で、以下のように画像が生成されました。



今度は「Select scheduler」でスケジューラーのステップ数を、「Render intermediate steps」でレンダリングの中間ステップを変更しました。スケジューラーのステップ数は20ステップと50ステップから選べますが、50ステップ数の方が画像の精度が上がる分、生成に時間がかかります。また、レンダリングの中間ステップを設定すると、生成中のノイズが表示されるようになりますが、生成に時間がかかるようになります。



生成が始まり、U-Netエンコーディングの段階に移ると、ノイズが表示されました。



少しずつノイズから画像に生成されていきます。



最終的に生成された画像が以下。「389 secs elapsed(389秒経過)」とのことで、画像を1枚生成するのに約6分半かかったことになります。



なお、Web Stable DiffusionのコードはGitHubで公開されています。

GitHub - mlc-ai/web-stable-diffusion: Bringing stable diffusion models to web browsers. Everything runs inside the browser with no server support.

https://github.com/mlc-ai/web-stable-diffusion