Stable Diffusion が来てるねってことで貧者の GPU であるところの Colaboratory でいろいろ試したいのだけどノートブック上で Python のコードをこまごまいじりながら試行錯誤するのは微妙に体験が悪い。
ちょっとしたウェブサービスとして立てて実行できるとよいけれど、なかなかクラウドサービスも帯に短し襷に長しという感じで GPU を気軽に借りられるところはなさそうだ……と思ったら、Colab 上に HTTP サーバを立てられることを知ったので、その方法でやってみることにする。
やってみたソースは以下。
GitHub - motemen/stablediffusion-server-on-colab
README にあるノートブックを開いて Huggingface のトークンを埋め、GPU を選択して実行するとサーバが起動する。サーバが起動する前のセルに表示される https://localhost:5000
のようなリンクをクリックすると、簡単なウェブアプリケーションが起動して、入力した prompt から生成した画像を表示してくれる。画像をクリックすると prompt をファイル名とした画像をダウンロードできるので、ここから気に入ったやつだけ保存しておけばよい。
Colab の HTTP プロキシ機能は当該のリンクをクリックしたノートブックのユーザのみに見られるようにしているようなので、不用意にリロードしたりプロキシしたり他のユーザに見せたりすると 403 になってしまうのに注意。そうなってしまったら、port を変えて再実行するとよさそうである。手元で開発してたときに API だけサーバにプロキシしてたら突然 403 になってしまってハマった。
性質上、ノートブックを開いてる間しか使えません。取り急ぎ作ったものなので、ロード中の進捗表示やステップ数の調整機能くらいはつけたいですね。