エッジAI端末を試す8・StableDiffusion Webui編

Jetson AGX Orinは32GBのメモリを有する高性能なエッジAI端末です。
お値段は高いですが優れた端末となっています。せっかくなら使い倒したい。
そして、画像生成AIとして一躍有名になったStableDiffusion。こちらはプロンプト(文字)を打つだけで画像が生成されるという魔法のようなAI。こちらのブログでも何回か使ってみました。あのときはクラウドサービスを活用していたのですが、本当はローカルにセッティングして使えたらなと思っていたものです。

普通にローカルPC上で動かそうとすると高性能なグラフィックボードが必要となってきます。二の足を踏んでいたのですが、この度NvidiaからStableDiffusion Webuiを使えるDockerコンテナが公開されました。JetsonのVRAM32GBをフルに使って生成を行えるようになる時がきたのです。

そう、このために前回SSDを増設し、容量を増やしたのです。重いモデルファイルはデフォルトのeMMC:64GBにはちょっと厳しいですが、1TBの大容量を手に入れた今のJetsonなら何も問題ありません。
これは僥倖ということでいざ触っていきます!
目次

①今日のコンセプト

Nvidiaの公開したJetson Generative AI Playground
に沿ってセットアップをし、モデルを追加してStableDiffusion XLを使えるようにしていきたいと思います。

・StableDiffusionのセットアップ
・モデルの追加
・StableDiffusionXLの実行

StableDiffusionXLって
StableDiffusionXLは画像生成AIであるStableDiffusionの開発元のStabilityAIがリリースした新たなモデルです。StableDiffusionが丸々アップデートしたということではなく、さらに精度の上がったモデルが公式から展開された形になります。

②セットアップ

セットアップ自体はめちゃくちゃ簡単です。
Jetson Generative AI Playgroundに記載されている通りセットアップを進めていきましょう。
git clone https://github.com/dusty-nv/jetson-containers
cd jetson-containers
sudo apt update; sudo apt install -y python3-pip
pip3 install -r requirements.txt
今回自分の環境ではすでにpython3-pipはインストール済みでしたので省いています。
cd jetson-containers
./run.sh $(./autotag stable-diffusion-webui)
run.shを実行すると起動に入るのですが、初回は結構重いダウンロードが入るため、多少時間がかかります。
※おそらく10GB程度
以下のような表示がコマンドに出てくれば完了です。
コマンドに出ているようにhttp://0.0.0.0:7860またはhttp://localhost:7860にアクセスするとStableDiffusion Webuiの画面が開きます。これだけで実行できるので本当に簡単です。

③StableDiffusion Webuiを使う

③-01. デフォルトのモデルで画像生成

早速使ってみたいと思います。
Checkpointを確認したところ、モデルは一つだけダウンロード済みとなっていました。
◆v1-5-pruned-emaonly.safetensors
追加のモデルは別途ダウンロードする必要がありそうです。今回はデフォルトのモデルで3枚程度生成します。
cat,cute
あらかわい、、、、よく見たら顔2つあるやんけ。。。こわっ。。。。。。。
ただ、毛の質感とかはめっちゃきれいですね!顔が一つなら良かったのに、、、
city, many building
遠目で見るとそれっぽいんですが、よく見るとちょっと気味が悪いというかなんというか、、
AIの生成した画像って感じですね。
A beach with emerald green water, white sand, and a blue sky with a beach umbrella and beach chair
ビーチパラソルが置かれた砂浜をイメージし、GoogleのAIであるBardにプロンプトを生成してもらいました。
砂・海・空の質感は本当にそれっぽいです!ビーチチェアのプロンプトは無視されちゃってますが、本当の写真と言われても気づかないかも、、、
パラソルの模様と影は少しだけ違和感ありますね。
モデルの進歩なのか、以前試したときよりも質感がかなりいいです。まだXLを試していないのですが、正直これで十分なのではと思ってしまいます。ちなみに、生成の実行中にはrun.shを実行したコマンドラインに以下の画像のようなプログレスが表示されます。動作状況がわかりやすいですね。

③-02. モデルの追加

StableDiffusionXLはStabilityAIがリリースした新たなモデルですので、モデルファイルを入れてあげるだけで実行可能です。また、今回実行しているDocker内のStableDiffusion Webuiはversion v1.6.0となっており、StableDiffusionXL対応版となっています。まずはモデルファイルのダウンロードから進めていきます。ちなみに、今回はこちらのページを参考にさせていただいています。

モデルのダウンロード

ダウンロードが必要なのは以下の3つです。
とはいえ3つとも必須というわけではなく、baseモデルだけでも動くし、VAEはなくてもいいそうです。ですが、前回の記事で増設したM.2 SSDで容量にはかなり空きがあるためそんなことは気にせず全部ダウンロードします。
base
refine
vae
ページにアクセスしたら「.safetensor」となっているファイルをダウンロードします。ダウンロードはファイル名の横のダウンロードボタンからです。
※base画像の部分

base・refineのファイルはそれぞれ6GB以上あります。
ダウンロード後、このファイルを格納していきます。
・sd_xl_base_1.0.safetensors
・sd_xl_refiner_1.0.safetensors
~/jetson-containers/data/models/stable-diffusion/models/Stable-diffusion

jetson-containers/data/models/stable-diffusion/models/Stable-diffusionフォルダ内にファイルを格納します。GUIからファイルを移してしまいたかったのですが”権限ないよ”と言われてしまったのでコマンドでsudoしました。

・sdxl_vae.safetensors
~/jetson-containers/data/models/stable-diffusion/models/VAE

こちらに格納します。

③-03. StableDiffusionXL用の設定

モデルの設定

あらためてStebleDiffusion Webuiを起動(リロードでも)し、モデルを設定していきます。
先ほどまでは選択肢が1つしかありませんでしたが、プルダウンリストをクリックすると、先ほど追加したsd_xl_base_1.0.safetensorsが選べるようになっています。
※refinerのモデルも選べますが、こちらはbaseのモデルを選択します。
つづいて、ページ下部のRefinerをクリック
そしてRefinerのプルダウンリストのなかからsd_xl_refiner_1.0.safetensorsを選択します。
また、StableDiffusionXLは高解像度の画像で学習されたため、高解像度の出力に最適化されているようです。
推奨となっている解像度は以下のようになっています。
StableDiffusion:512×512
StableDiffusionXL:1024×1024
なので、Width・Heightの数値も変更します。
これで完了です。いざ実行!とやってみたところ、画面になりやら通知が、、、

“System throttled due to Over-current”

文言でそのままググってみてこのページに辿り着きました。
英語ほとんど読めないので半分勘ですが、スロットルというようなこともかいてあるし、パワーか温度の問題?と思いながら見てたのですが、以下の表がありました。
おそらくですが、AGX Orin 32GBのパワーリミットは45Wまでということのようです。そしてStableDiffusionのような重い処理を行ったことでパワーリミットを超えて電力を使用しようとしてしまったためシステム側で制限をかけたということなのかなと。
今まで特に制限がかかったことはなかったため、ずっとMAXNにしていました。しかし、ちゃんと調べると32GB版はパワーリミットも制限があったようです。。
原因と思われることがわかったのでパワーモードを50Wに変更します。
この状態であれば特にエラーは出ませんでした!

③-04. StableDiffusionXLを使う

というわけで早速使っていきます。
最初に生成したのと同じプロンプトといくつか試しでやってみたいの生成します。
cat,cute
city, many building
A beach with emerald green water, white sand, and a blue sky with a beach umbrella and beach chair
ビルの画像はあまりできが良いとは言えないですね。でも猫とビーチの画像はめっちゃいい感じです。特に砂の質感がよく、不自然なところがパッと見ないですね。数ヶ月でこんなに変わるものなんですね。。。
StableDiffusionXLの使い方を探したときに見つけたサイトに書かれていたかっこいい画像のプロンプトを参考させて頂いて1枚、、、

プロンプト
masterpiece,best quality,ultra detailed,highres,absurdres, Realistic photograph of cyborg in the cyberpunk city

ネガティブプロンプト
signature, deformed fingers, text, cross-eyed, unperfect hands

非常にかっこいいです。質感もいいし、背景の町並みもマッチしてて完璧です。ちゃんと指定してあげられればかなりいい感じの画像を作れます。プロンプトの掘り下げも今後やっていかないとですね。

④まとめ

SDXLが手元で簡単に使える様になりました。ちなみに、SDXLを起動したときにWEBサーバーが立ち上がっているので、IPアドレス:7860でローカルのPC上からアクセスできます。Jetsonから画像等を移す手間が省けるので捗ります。
仕事の資料作成のときにフリー素材を使ったりしていますが、AIに頼んで生成してもらうのが標準になるのはそう遠くなさそうです。進歩が早いのでAIの動向から目が話せないです。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

AIにボクの分も働いてもらいたい

コメント

コメントする

目次