Google Colabでngrokを使用してAUTOMATIC1111 webUIを起動する
最近はめっきりStable Diffusionでの画像生成にハマってます。
Google ColabでAUTOMATIC1111 webUIを起動して画像生成しているのですが、たび重なる機能追加の影響か、動作が不安定になることが増えてきました。
画像を1枚生成したら反応がなくなって、そのたびに立ち上げなおすこともしばしば。。
解決方法がないか調べたところ、デフォルトの公開URLからWebUIにアクセスする方法ではなく、ngrokを使用してURLを生成する方法にたどり着きました。
ngrokって何?
ローカルPC上で稼働しているWebサーバーを外部公開できるサービスとのこと。
これにより、Google Colabで稼働したWebUIに公開URLからアクセスすることができます。
ngrok(エングロック)と読むらしいです。
ngrokを使用したURLからwebUIにアクセスしたら、以前よりは動作の不安定さが改善し、立ち上げなおさなくても画像生成を続けられるようになりました。
実装方法に迷ったので、同じく困っている方の参考になればと思い、手順を記録しておきます。
※この記事は2022/10/19時点での内容となります。
webUIはアップデート速度が尋常じゃないので、内容が異なる場合があります。
ngrokを使ったwebUIの起動方法
まず https://dashboard.ngrok.com/user/signup にアクセスし、サインアップする。
好きなサインアップ方法を選択してください。
ここでは、Googleアカウントでサインアップする手順を説明します。
サインアップしたいGoogleアカウントを選択する。
[Create Account]をクリックする。
ngrokにサインインし、Setupのページに遷移します。
左ペインから、[Your Authtoken]をクリックする。
画面中央にあるYour Authtokenの[Copy]をクリックする。
Authtokenがコピーされます。
ngrokのページでの作業は以上です。
ここからは、Google Colabでの作業です。
下記、AUTOMATIC1111 webUIで公開されているGoogle Colabを使っているものとして説明します。
Google Colabを立ち上げ、webUIを起動するセルのCOMMANDLINE_ARGSの値を次の通りに変更する。
--shareを削除
--ngrok {copyしたAuthtoken} --ngrok-region jp を追加
※{ }は不要です
!COMMANDLINE_ARGS="--ngrok {copyしたAuthtoken} --ngrok-region jp --gradio-debug --gradio-auth xxx:yyy" REQS_FILE="requirements.txt" python launch.py
ちなみに
--ngrok-regionで地域を指定できますが、usを指定するとフィッシングサイトとみなされて警告が出ることがあるそうです。
jpにすればそういった表示は出ないので、jpで問題ないかと思います。
また、ngrokを使うと公開URLからwebUIアクセスすることになるため、URLを知っている人は誰でもアクセスできてしまいます。
セキュリティを考慮して、COMMANDLINE_ARGSに起動時のUSERNAMEとパスワードも設定しておくことをおすすめします。
--gradio-auth xxx:yyy
(xxx:yyyに任意のUSERNAMEとパスワードを設定できます)
セルを実行してwebUIを起動し、「xxxx.jp.ngrok.io」のURLをクリックする。
[Visit Site]をクリックする。
クリックしてもうまく開かないことがありますが、ページをリロードすると開けると思います。
--gradio-authを使用している場合は、設定したUSERNAMEとパスワードを入力して[送信]をクリックする。
以上で、ngrokを使用したwebUIの起動は完了です!
追記
この方法で起動しても、画像生成が終わった後に[Generate]の表示に戻らないことがあります。
そのときは、prompt領域を一度クリックしてから Shift + Enter を押すと、UIの表示は変わらないままですが引き続き生成できました。
環境によって異なるかもしれませんが、今のところngrokを使ってwebUIを起動したときは、固まって生成できなくなる症状は発生していません。
同じように困っている方の参考になれば幸いです。