はじめに

例のAIをRunPod上で動かした記録です。

かなり端折ってあるので不明な点があれば私のTwitterアカウントにDMを送って下さい。

予備知識

RunPodとは

格安GPUクラウドの事です。

詳しくはこちらの記事をご覧下さい。

例のAIって何?

この間お漏らししたN○velAIの事です。

入手手段については詳しく話せませんが適当に拾って来て下さい。

手順

RunPodの登録

この記事を参考に登録して下さい。

インスタンスのレンタル

この記事を参照して下さい。

テンプレートはRunPod Stable Diffusionを選択して下さい。

モデル取り込み手順

注意点: TCP Proxy対応インスタンス以外では動きません。Secure Cloudであれば全てのマシンが対応しています。

1. runpod.ioのSettingsにアクセス

image

2. SSH Public Keyに自分の公開鍵を入力

もし適当なSSHキーがない場合以下のコマンドで生成できます。

Windows

Windows 10 April 2018 Update以降対応

> ssh-keygen -t ecdsa
Generating public/private ecdsa key pair.
Enter file in which to save the key (/hoge/fuga/id_ecdsa): <空でOK>
Enter passphrase (empty for no passphrase): <上と同じく>
Enter same passphrase again: <上と同じく>
> type %homepath%/.ssh/id_ecdsa.pub
<ここに公開鍵が出力されます>

*nix(macOS/Linux)

$ ssh-keygen -t ecdsa
Generating public/private ecdsa key pair.
Enter file in which to save the key (/hoge/fuga/id_ecdsa): <空でOK>
Enter passphrase (empty for no passphrase): <上と同じく>
Enter same passphrase again: <上と同じく>
$ cat ~/.ssh/id_ecdsa.pub
<ここに公開鍵が出力されます>

image

3. My Podsに移動

image

4. TCP Proxyの設定

下矢印をクリック image image

ハンバーガーボタンをクリック

image

Edit Jobをクリック

image

Expose TCP Ports (Max 10)に22番ポートを追加 image

Saveをクリック image

5. SFTPでモデルのアップロード

Connectをクリック image

image

Connect to Jupyter Lab [Port 8888]をクリック image

左下のTerminalをクリック

image image

以下のコマンドを入力

$ echo "<SSH公開鍵>" | tee -a /root/.ssh/authorized_keys # 手順2で設定した公開鍵と同じもので大丈夫です。
$ chmod 700 /root/.ssh/authorized_keys
$ service ssh start

Connectをクリック image

image

SSH over exposed TCP: (Supports SCP & SFTP)の内容を控える

モデルのアップロードに使うためTCP Proxy IPとPortをメモして下さい。 image ここからローカルマシンでの作業です

以下のようなフォルダを作成します。

.
├── Stable-diffusion
│   ├── animefull-final-pruned.ckpt # stableckpt/animefull-final-pruned/model.ckpt
│   └── animefull-final-pruned.vae.pt # stableckpt/animefull-final-pruned/animevae.pt
└── hypernetworks # stableckpt/modules/modules/*
    ├── aini.pt
    ├── anime.pt
    ├── anime_2.pt
    ├── anime_3.pt
    ├── furry.pt
    ├── furry_2.pt
    ├── furry_3.pt
    ├── furry_kemono.pt
    ├── furry_protogen.pt
    ├── furry_scalie.pt
    ├── furry_transformation.pt
    └── pony.pt

2 directories, 14 files

そのフォルダをコマンドプロンプトで開いて下さい。

モデルのアップロード

以下のコマンドを実行

> sftp -i ~/.ssh/<公開鍵の名前(id_ecdsa)> -P <Port> root@<TCP Proxy IP> 

sftp> put -r ./* /workspace/stable-diffusion-webui/models/

永続化設定

以下のコマンドを実行

> ssh -i ~/.ssh/<公開鍵の名前(id_ecdsa)> -p <ポート番号> root@<IP> 
$ mkdir /workspace/stable-diffusion-webui/outputs/nai-model
$ cp -r /workspace/stable-diffusion-webui/models/* /workspace/stable-diffusion-webui/outputs/nai-model
$ tee /workspace/stable-diffusion-webui/outputs/restore.sh <<EOF
#!/bin/env bash
cp -rf /workspace/stable-diffusion-webui/outputs/nai-model/* /workspace/stable-diffusion-webui/models

EOF

以上でモデルのアップロードは完了です。

起動手順

  1. 右端のMy Podsをクリック image

  2. 下矢印をクリック image image

もし停止した状態から再開する場合

ⅰ. Startをクリック image

ⅱ. Bidをクリック image 補足ここまで

  1. Connectをクリック image

image

  1. Connect to Jupyter Lab [Port 8888]をクリック image

  2. 左下のTerminalをクリック

image image

  1. 以下のコマンドを入力
$ bash /workspace/stable-diffusion-webui/outputs/restore.sh

image

  1. runpod.ioに戻る image

  2. 下矢印をクリック image image

  3. Connectをクリック image

image

  1. Connect via HTTP [Port 3000]をクリック image

  2. 右上のリロードボタンをクリック image image

  3. Stable Diffusion checkpointからfinal-pruned.ckptを選択 image

  4. Settingsをクリックして以下のパラメータを設定

    項目名
    Stop At last layers of CLIP model2
    Eta noise seed delta31337

image image

  1. 上部にあるApply Settingsをクリック image

  2. txt2imgに戻り以下のパラメータを入力

    項目名
    Promptmasterpiece, best quality, masterpiece, asuka langley sitting cross legged on a chair
    Negative promptlowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts,signature, watermark, username, blurry, artist name
    Sampling Steps28
    Sampling MethodEuler
    CFG Scale12
    Seed2870305590

image

これで完了です。 image

停止手順

  1. runpod.ioにアクセス image

  2. Stopをクリック image

  3. Stop Podをクリック image

  4. 完了 image

さいごに

かなり荒削りな記事なので不備等あるかと思います。

もし見つけられた場合は私のTwitterアカウントまで連絡していただけるとありがたいです。