見出し画像

【画像生成AI】クラウド最安!? GPUSOROBANでStable Diffusion WebUIを動かす【¥50/1h】

なしてワイはRTX A4000を買ってしまったんや……

こんにちは、画像生成はローカル構築勢のカガミカミ水鏡です。
Stable Diffusion WebUI Automatic1111(以下A1111)を楽しむには主に、ローカル(自前のPCで動かす)とクラウド(GPUサーバを時間借りする)の2通りがあります。

ローカルは構築が比較的お手軽だけど初期費用に20万円前後かかるし(GeForce搭載のゲーミングPCを持っていない場合)、更に画像生成沼にドハマリし、より速い・より学習できる環境を求めて上位のGPUに買い替えすると更に10万円前後も追加費用が……
あっちなみに俺はRTX3060Ti(8GB) 👉 RTX3060(12GB) 👉 RTX A4000(16GB) と変遷してます。これは深淵から這い寄るGeForceちゃんが俺の脚を、あっ……た、助け、し、死ぬ……ゴボッ

nVidia Swampの女主人 "混沌"ことGeForceちゃん

という訳で初期投資が安く済むクラウドサーバを利用するのも手です!

この記事ではクラウドGPUサーバを金沢で提供してる「GPUSOROBAN」を使い、A1111をインストール、画像を生成する方法の概略を示します。まず先に、他のクラウド環境と比較してGPUSOROBANの何が素晴らしいかを説明していきます。


GPUSOROBANの利点

今週このサーバを知り、色々試してみたのですが、非常に使いやすくてリーズナブルでした!

激安。RTX A4000のサーバが50円/1時間

ゲーセンで遊ぶ金額ですてこれ……
先にも俺の環境の中で説明しましたが、A4000ってVRAM16GBあるんですよ。ローカルで構築するとして新品で買うなら13万。更に他のCPUなど含めた諸費用や、高騰中の電気代というイニシャルコストの発生もを考えると……ね、すごくお得感ありません?

でも、クラウドサーバ利用経験者の方だと、ディスク容量と費用、ネットワーク費用などの諸費用も気になりますよね? これら従量課金のケースが非常に多いので、そちらの方が費用がかさむなんてことも……でもご心配いりません!(テレビショッピング顔)

通信料・ストレージ100GB利用料が、なんと無料!

おい見てるかRunPod
1時間あたりの利用料コミコミ価格。だから予算感が非常につかみやすい! 
ストレージ100GBも太っ腹ですよね。モデル30個積みっぱなしなんて運用しなければ普通に使えます!

データセンターは国内金沢。だから高速・安定

めっちゃ速いです。別のクラウドサーバでA1111動かすときに、画像表示がもたつくなーとかDL遅いなーとかあると思うんですが、かなりのところ速いです! ネットワーク系トラブルも一度もなかったですね。国内企業や大学での採用事例が多いそうです。

他のクラウドサーバでPaperSpaceやvast.aiとかも安くて便利なのですが、時々(他のユーザに専有されてて)使えないなんて事もあるのですが、1週間使った限りでは特にない感じ。よい……

支払いは日本円。ドル円相場に影響されない!

日本の企業が提供しているので円決済(要クレカ・デビットカード系)。荒れやすいドル円相場によって利用金額が変動しないのも嬉しい!

jupyter notebookではなくVPS感覚で利用可

Google Colabやpaperspaceなどのクラウド環境でよく使われるソフトウェア基盤「jupyter notebook」って、"手軽に試す"ことができるので非常に便利なのですが、"継続して使う"という側面で見ると、結構しんどいんですよね。再起動ごとにスクリプトが走って環境構築することになるので、起動から利用開始までが非常に長いので、かったるく感じるんです……。

ですがGPUSOROBANはVPSやAmazon EC2を使う感覚でレンタル可能。(ここで紹介する最安値プランはUbuntu Linux運用のため)クラウドサーバにコンソール(CUI。俗に言う黒い画面)でコマンドを叩いて環境を作っていく形。インスタンス(ざっくりサーバ1台のことだと思って)を止めて次に使う時も、設定が残っているので再構築なし、モデルやLoRAなども全て前に使ったままで使えます!

あ、この記事で紹介する「WinSCP」を併用して、FTPっぽくファイルのやり取りすることも可能です。モデルをアップロードしたり画像DLするときに便利。

【構築編】はじめに

さて前説は以上として、ここからざっくりと構築をしていくのですが……前を読んだらわかるように、そこそこのPC・ネットワーク知識を必要とします。

難易度は中~高(ソースは俺感覚)、ローカルよりもハードルは高めです。

  • Colabできる人、ちゃんとnotebook書ける人なら簡単

  • ある程度のLinux知識、特にコマンド知っているとトラブル回避に良い

    • 初心者が詰まりやすいGit・Python・CUDAなどドライバ周りはインストール済。手軽!

  • 情報系大学やQiita・Zennで学べるネットワーク知識があるとなお良い

    • 特にSSH認証や秘密鍵あたりの感覚があるとヨシ

またこの記事を読む上で注意事項があります。俺は"Linuxチョットワカル"人よりも浅い知識しかなく、何かのエラーが出ても説明できないことがほとんどなので、記事に関する質問・不具合などはChatGPTを使ってください。Google併用もアリ。幸いにもUbuntu Linuxは昔からネットに情報が多く掲載されているため、トラブルシューティングの相棒としては俺よりも信頼できます。誰も信じるな!レーザーガンを手放すな! ChatGPT様を信じろ!

……というか、割とザックリとした説明しか書けないので、まあコレで解る人は試してね、というニュアンスです。あとはがんばれ!

【構築編】下準備

以下公式を参考に進めてください 突然の丸投げ
 https://soroban.highreso.jp/blog/blog-3826/
※ ここで使うターミナルのおすすめはWindows10のスタートメニュー右クリック→Windows PowerShell(管理者じゃない方)です。紺色の画面の方です
※ 「.ssh」フォルダを作成する辺りで作ったフォルダが見えない場合は「隠しファイル、隠しフォルダー、および隠しドライプを表示する」で検索!

また、WinSCPも今のうちにインストールしておいてください。FTPソフトのようにGPUサーバとファイルのやりとりをするためのソフトです。 GPUサーバにモデルなどのファイルをアップロードしたり、画像をダウンロードするために使います。インストール時はすべてインストーラーお勧めの設定で大丈夫です。

https://forest.watch.impress.co.jp/library/software/winscp/
※ ストアアプリ版は未調査なので上の方を使ってください

【構築編】A1111をインストールする

長い下準備お疲れ様でした。ここまで来たということは、ターミナル1もターミナル2も開いたままの状態になっていると思います。ここからは全て「ターミナル2」を操作していきます。なおターミナル1は閉じないでください!

サーバの下準備をする

ターミナル2に以下を入力エンター(入力してEnterを押す)し、しばらく待つ
※ 要はUbuntu版Windows Update

sudo apt update && sudo apt -y upgrade

こんなメッセージが出たら2を入力エンター

A new version (/tmp/tmp.It9D9VBme3) of configuration file /etc/ssh/sshd_config is available, but the version installed
currently has been locally modified.

  1. install the package maintainer's version             5. show a 3-way difference between available versions
  2. keep the local version currently installed           6. do a 3-way merge between available versions
  3. show the differences between the versions            7. start a new shell to examine the situation
  4. show a side-by-side difference between the versions
What do you want to do about modified configuration file sshd_config?

なんか終わったらもう一回入力エンター(必要っぽいのをインストールしてます)

sudo apt install -y python3.10-venv libglib2.0-0

※ ちょっと悩んだのですが、pipのupdateはしないことにします。人によっては「python -m pip install --upgrade pip setuptools」とかやるんですが、不安定になるリスクがあるので……pythonつよつよの方はどうぞ

GPUサーバにstable diffusion WebUIをインストール

ターミナル2に以下を入力エンター

bash <(wget -qO- https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui/master/webui.sh)

※まめちしき:コピペが出来なくて苦しんでいる人は、ターミナルの画面で右クリックすると幸せになれるかもです

ターミナル2で何かしらダウンロードしてるものが表示される。

なんか終わったっぽかったら、画面のどこかに「https: // 127.0.0.1:7860」と表示されているはず。それを確認したあとは、このPCのブラウザに打ち込んで起動完了! 試しに何かしら生成出来たらOK! 参考までプロンプト掲載しますね(LoRA込)! 

wide angle, 1girl geforce, vulgarity, [sad:fucked silly:0.3], seducing temptation, terrible face, (girl have Substrate board graphics card:1.3), (submerged many VGA parts in swamp:1.5), (sink nvidia geforce RTX GPU on swamp:1.4), textile shading latex suits with many frills, forest, swamp, Cream hair, iso100, raw, high quality, subtle ambient glow, raytracing, global illumination, ultimate quallity, <lora:flat2:-1.2>, <lora:wowifierV2:0.3>

Negative prompt: EasyNegativeV2,badhandv4,worst quality,(noise:1.1),(simple:1.2),unnatural pose,improper proportions,facial asymmetry,disconnected elements,irrelevant background, stain, animal ears

Steps: 24, Sampler: UniPC, CFG scale: 5, Seed: 3061941884, Size: 512x768, Model hash: 4ff7570f52, Model: ssssbsrawrap08, VAE: vae-ft-mse-840000-ema-pruned, Denoising strength: 0.6, Clip skip: 2, Version: 8f4bc4d, Parser: Full parser, Hires upscale: 2, Hires upscaler: 4x_RealisticRescaler_100000_G, Lora hashes: "add_detail: 7c6bad76eb54, wowifierV2: d4a9654cb6e8"

「やだぁ、私のこと、捨てないでぇ……」「大丈夫だよぉ(ニチャァとした笑顔)キミにはローカル環境でドス■■■■■■■態な画像を作ってもらうからねぇグフュヘヘェ」

ちなみに上記の画像モデルは「SSSSLLDDLLv32」。みんな使ってみてね

なにかA1111が変になったら and A1111やインスタンスを再起動したら

ターミナル2でCtrl+C これでWebUIを強制終了できます。

次からは以下コマンドで起動だ!

./stable-diffusion-webui/webui.sh


WinSCPで接続する

モデルのインストールなどは、WinSCPを使うと楽です。
※ 以下の辺り詰まったら、公式に接続方法があるので読んでください https://soroban.highreso.jp/blog/blog-3983/

WinSCPを立ち上げて「新しいタブ」をダブルクリック 設定画面に以下を入力

  • 転送プロトコル:SFTP

  • ホスト名:localhost

  • ポート番号:20122

  • ユーザ名:user

  • パスワード:【空欄のまま】

更に「設定」を押す

  • SSH→認証 の秘密鍵 に、C:\Users\ご自宅のwindowsのゆーざ名\.ssh\mykey.txt を開く

    • 見つからなかったら、プルダウンメニューでPuTTY秘密鍵ファイルになっている箇所をすべてのファイルにする

    • OpenSSHをPuTTY形式に変換しますか? が出たらOKを押す。mykey.ppkができるのでそれを選択

  • 保存ボタンを押してからログイン

右側に「/home/user/」と表示されていたらGPUサーバに接続完了!

※ 不明なサーバーに接続し、そのホスト鍵をキャッシュに追加しますか? のメッセージが出た場合は「はい」を押す
※ もちろんターミナル1は立ち上げっぱなしで。終了させたら駄目

こんなときどうする

1ヶ月運用してたら30,000円請求されたんだが??????

使い終わったらインスタンスを停止しよう、な! 停止中の期間は請求されません。

※ この行は愚痴なのですが、ディスク領域はインスタンス停止しても課金が続くというひっどいサービスもあったりするので、本当にGPUSOROBANは良心的です……!

デフォルトのモデルじゃなくて、別の色々なモデル使いたい!

WinSCPにて以下ディレクトリ(フォルダ)を開く

/home/user/stable-diffusion-webui/models/Stable-diffusion/

その中に色々なモデル(.safetensors)などを入れましょう!
※ 転送速度ちょい遅いです……が海外サービスよりは速いです
※ まあ、wgetと聞いて解る人はそちらを使った方が……とはいえ直リン大丈夫なところとか判断必要です
※ 2023-06-06追記:モデルのインストールは拡張機能の sd-model-downloader 使うと高速・手軽かも!

LoRAのモデルはどこに入れればいいの!?

WinSCPにて以下ディレクトリ(フォルダ)を開いて、さっきの要領で入れてください

/home/user/stable-diffusion-webui/models/Lora/

badhandv4やEasyNegativeV2などのptファイルの置き場は?

WinSCPにて略

/home/user/stable-diffusion-webui/embeddings/

画像ダウンロードしそびれた! どこにある?

このあたり。長期で使うなら定期的に削除しましょうね

/home/user/stable-diffusion-webui/outputs

(2023-08-15追加)なんかブラウザ立ち上がらへん……

ターミナル2の立ち上げを、以下の記事を参考にやってみてください。特に赤文字のところ

2つめのターミナルを起動し、インスタンスへ接続します。
※通常のインスタンスへのSSHコマンドと異なりますので、ご注意ください。Stable Diffusion WebUIの画面を転送するために7860ポートに転送しています。

ssh -L 7860:localhost:7860 user@localhost -p 20122 -i .ssh\mykey.txt


上級編:コマンドラインを設定して色々する

高速化したい!

./stable-diffusion-webui/webui-user.sh これをテキストエディタで編集すればOK。サーバにはviやnano(俺推し)が入ってますが、ローカルに落として編集でもOKです

#export COMMANDLINE_ARGS=""

これを以下にする
※ opt-channelslast に関しては多分高速化……みたいな印象。A4000なら早くなると思うというふんわりした雰囲気で入れている
※ 後半おまじない感つよい

export COMMANDLINE_ARGS="--opt-sdp-attention --opt-split-attention --opt-channelslast --no-half-vae --enable-insecure-extension-access"

その後、以下を立て続けに入力エンター(sudoは抜いてもいいかもしれない……念のため)

sudo chmod 755 ./stable-diffusion-webui/webui-user.sh
./stable-diffusion-webui/webui-user.sh
./stable-diffusion-webui/webui.sh

一時的に、このPC以外の端末からも利用したい!

gradioのURLを使おう。SSHトンネリングで72時間限定のURLを発行してくれるぞ! スマホとかからでもアクセスできますが、セキュリティに注意! 一般公開はするなよ!

※ 詳しい人向けだけどngrokもオプションで使えます

export COMMANDLINE_ARGS="--opt-sdp-attention --share --gradio-auth tekitounaID:tekitounaPassWord"

xformersを導入して高速化したい!

それ古い情報だからやめとけ
pytouch v1時代の名残。現行のバージョンではpytouch 2.0がデフォルトのため、上記のopt-sdp-attentionの方が速いです

nsfwな画z

おいやめろ馬鹿
良いオトナは必ず利用規約をご確認ください。私も気をつけます……
https://soroban.highreso.jp/terms/

終わりに

本当に安定しててお安い、またより高速大容量なNVIDIA A100などもレンタル可能です。オススメ!

またこの記事はGPUSOROBANの紹介プログラムによって作成して……いません……というか作ってほしい……っていっても↑みたいな話書いてるからあたしゃ駄目そう……


この記事が気に入ったらサポートをしてみませんか?