Jupyter NotebookでStable Diffusionを遊びたい(その1:ChilloutmixのNotebookを読んでみよう)

いま巷で話題のStable Diffusionですが、私もこれで遊んでみたいなと最近になって思い、お手軽にGoogle Colaborateでいろんな画像を出して遊んでいました。

ところが、今日も遊んでみようとGoogle Colaborateを開いたら と、GPUの使用料上限を超えてしまっており、Stable Diffusionで遊べませんでした。 (右下の「GPUなしで接続」をクリックして、GPUなしでソースコードを動かそうとしても、途中で「GPUがないよ!」とエラーが出てしまい、動かすことができません。)

GPUを使うためには、Google ColaborateのGPU制限が解除されるまで待つしかありませんが、いつ解除されるのか、そのルールはGoogleからは明示されていません。非公式情報では、24時間程度までば解除されるとありますが、よくわからないというのが正直なところです。

幸いにして私のノートPCはゲーミングPCなので、貧弱ではありますが一応GPUが積んであります。なので、Google ColaborateのGPU制限を気にせずにStable Diffusionで遊べるように、ローカルのJupyter NotebookでStable Diffusionを動かせる環境を作ってしまおうと思います。

コードは以下のGitHubからDLしておきます。 github.com

私はChilloutmixを使うので、chilloutmix.ipynbを実行しようとしましたが、Google Colaborateでは何の問題もなく実行できたのが、ローカルのJupyter Notebook (anaconda 3)ではエラーで止まってしまいました。

仕方ないので、Notebookの内容をひとつひとつ追ってみます。

最初の行の

!curl -Lo memfix.zip https://github.com/nolanaatama/sd-webui/raw/main/memfix.zip

は、Linixのcurlコマンドと呼ばれるもので、client for URLからきています。 上のcurlコマンドはオプションで -L:リダイレクトに対応し -O:URL先をダウンロードする(ここではmemfix.zipというファイル名でダウンロードする) と指示されているので、そのとおりに実行されます。

次の

!unzip /content/memfix.zip

も、Linuxコマンドunzipで、先ほどダウンロードしたZIPファイルを解凍しています。 このNotebookはGoogle Colaborate用ですので、ダウンロードしたファイルは/contentディレクトリの下にいます。

次の

!apt install -qq libunwind8-dev

は、aptを使ったlibunwind8-devのインストールです。 オプションで-qqが使われているので、ログの表示が最小限に抑えられています。

そのあとの

!dpkg -i *.deb

で、ダウンロードしたファイル内に含まれるすべtのdevファイルについてdpkg -iでインストールをしています。

%env LD_PRELOAD=libtcmalloc.so

環境変数をとおして、最後に

!rm *

でダウンロードしたファイルをすべて削除しています。