はじめに
例のAIをRunPod上で動かした記録です。
かなり端折ってあるので不明な点があれば私のTwitterアカウントにDMを送って下さい。
予備知識
RunPodとは
格安GPUクラウドの事です。
詳しくはこちらの記事をご覧下さい。
例のAIって何?
この間お漏らししたN○velAIの事です。
入手手段については詳しく話せませんが適当に拾って来て下さい。
手順
RunPodの登録
この記事を参考に登録して下さい。
インスタンスのレンタル
この記事を参照して下さい。
テンプレートはRunPod Stable Diffusionを選択して下さい。
モデル取り込み手順
注意点: TCP Proxy対応インスタンス以外では動きません。Secure Cloudであれば全てのマシンが対応しています。
1. runpod.ioのSettingsにアクセス
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
<ここに公開鍵が出力されます>
3. My Podsに移動
4. TCP Proxyの設定
下矢印をクリック
ハンバーガーボタンをクリック
Edit Jobをクリック
Expose TCP Ports (Max 10)に22番ポートを追加
Saveをクリック
5. SFTPでモデルのアップロード
Connectをクリック
Connect to Jupyter Lab [Port 8888]をクリック
左下のTerminalをクリック
以下のコマンドを入力
$ echo "<SSH公開鍵>" | tee -a /root/.ssh/authorized_keys # 手順2で設定した公開鍵と同じもので大丈夫です。
$ chmod 700 /root/.ssh/authorized_keys
$ service ssh start
Connectをクリック
SSH over exposed TCP: (Supports SCP & SFTP)の内容を控える
モデルのアップロードに使うためTCP Proxy IPとPortをメモして下さい。 ここからローカルマシンでの作業です
以下のようなフォルダを作成します。
.
├── 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
以上でモデルのアップロードは完了です。
起動手順
右端のMy Podsをクリック
下矢印をクリック
もし停止した状態から再開する場合
ⅰ. Startをクリック
ⅱ. Bidをクリック 補足ここまで
- Connectをクリック
Connect to Jupyter Lab [Port 8888]をクリック
左下のTerminalをクリック
- 以下のコマンドを入力
$ bash /workspace/stable-diffusion-webui/outputs/restore.sh
runpod.ioに戻る
下矢印をクリック
Connectをクリック
Connect via HTTP [Port 3000]をクリック
右上のリロードボタンをクリック
Stable Diffusion checkpointからfinal-pruned.ckptを選択
Settingsをクリックして以下のパラメータを設定
項目名 値 Stop At last layers of CLIP model 2 Eta noise seed delta 31337
上部にあるApply Settingsをクリック
txt2imgに戻り以下のパラメータを入力
項目名 値 Prompt masterpiece, best quality, masterpiece, asuka langley sitting cross legged on a chair Negative prompt lowres, 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 Steps 28 Sampling Method Euler CFG Scale 12 Seed 2870305590
これで完了です。
停止手順
runpod.ioにアクセス
Stopをクリック
Stop Podをクリック
完了
さいごに
かなり荒削りな記事なので不備等あるかと思います。
もし見つけられた場合は私のTwitterアカウントまで連絡していただけるとありがたいです。