
IO CloudでStable Diffusionを動かす方法(AUTOMATIC1111 WebUIを利用)
この記事ではIO.netのIO Cloudを使ってStable Diffusionを動かす方法を解説します。
※IO.netとは、GPUのAirbnbのようなもので、分散型GPUクラウドサービスです。
また、IO Cloudの利用開始に関する初期設定はこちらを参照ください。
ここからはIO Cloudのアカウント作成が済んでおり、depositに資金が入っている前提で進めていきます。
IO Cloudでクラスターを展開する
IO Cloudで借りるGPUを選択するのですが、AUTOMATIC1111のWebUIが複数GPUの並列処理をサポートしていないので、今回はマスターノードのA4000を使って動かします。
※並列処理を使って、複数GPUでそれぞれWebUIを立ち上げることはできそうなので、それはまた検証してできるようになれば記事にしたいと思います。
1.GPUカードをレンタルする
WebUIの仕様により、推論を複数GPUでするのが難しいのでマスターノードのみ利用してStable diffusionを動かします。そのため、4枚借りるGPUのグレードに関しては安いカードを選択して、速度もLowを選択することにします。
generalを選択します。

io.netを選択します。

E2Eを選択します。(現在それしか選択できません。)

Locationは全て選択します。

Lowスピードを選択します。

レンタルコストの安いRTX3050や3060を選択します。

Rayアプリを選択します。(現在それしか選択できません。)

マスターコンフィギュレーションでIO Master Starterを選択します。(現在それしか選択できません。)

支払い手段を選びます。今回はUSDCを選んでます。

RTX3050 4枚で1時間 0.22ドル
RTX3060 4枚で1時間 0.36ドル
※2024年9月10日現在
今回はマスターノードのA4000を使うだけなので、安ければ安い方が良いです。空いているローカードを探しましょう。
サマリーで価格費用などを確認して問題なければDeploy Clusterを押します。

デプロイが完了するまで数分待ちます。
Completeになれば準備完了です。View Clusterを押してください。

クラスター画面に遷移すると、IDEパスワードがあるのでまずコピーしてください。
その下にあるJupyter NotebookとRay Dashbordをそれぞれ開いてログインしていきます。

Jupyter Notebookを開くとパスワードを聞かれるので先程コピーしたIDEパスワードを貼り付けます。

すると以下のような画面に遷移します。

また、Ray Dashbordも同じように開きます。ユーザー名とパスワードはIDEパスワードをそれぞれ同じものを入力してください。

Ray Dashbordではクラスターの統計情報を確認できます。

2.WebUIの立ち上げ処理を行う
それではJupyter Notebookに戻って処理を実行していきます。以下のipynbの形式のファイルをダウンロードしてください。
※IO Cloudの仕様が変更となり、sudoが使えなくなったのでipynbのコード内容を変更しています。(2024年10月11日)
Jupyter notebookのUploadボタンから先程のconda_stable_diffusion_io.ipynbをアップロードしてください。

アップロードされるとファイル名がでてきますので、そちらをダブルクリックで開いてください。

そうするとこの状態のセルとコードが並んだ状態になっているかと思います。基本的にはこのコードを上から順番に実行していくとWebUIが立ち上がります。
実行はセルをクリックして青くなっている状態で、shift+enterで実行します。
処理中の場合は左の[ ]の中が[ * ]となってますので処理が終わるのを待ちます。完了すると[ 1 ]のように数字が入りますので、次のセルに移って処理を続けていきます。
処理の内容としてはPythonのインストールとstable diffusion webuiのインストールとモデルのインストール等になります。
モデルを1つだけインストールしているので、追加をしたい場合はこちらに追加することができます。(今回はWebUIの立ち上げ記事なので、モデルの追加などに関しては別記事に譲ります。)

処理を順番にしていくと以下のようになります。
最後のセルだけ[ * ]の状態で止まります。問題なく処理が完了していれば、Running on public URLというのが表示されますので、そのURLをクリックしてください。

3.Stable Diffusionで画像生成をする
クリックするとWebUIが立ち上がりますので、画像生成はこちらの画面で行います。

Promptに今回は「cat」と入れて猫の画像を生成します。

Jupyter Notebookに戻ると処理のログが出ていますので確認してみてください。2.78it/s と書かれてますが、1秒で生成できる枚数となりますので、強いカードの場合ここの数値が高くなります。今回はA4000のスコアとなります。

注意点
IO Cloudの場合、契約した時間が過ぎるとクラスターはシャットダウンするので、必要なデータや出力した画像はダウンロードしておいてください。※将来的には保存領域ができる可能性はあります。