FIXER cloud.config Tech Blog
お絵かきAI「Stable Diffusion」をAzureVMでめちゃ楽に構築する
2022年12月07日 11時10分更新
本記事はFIXERが提供する「cloud.config Tech Blog」に掲載された「AzureVMでお絵かきAI「Stable Diffusion」を構築する」を再編集したものです。
はじめに
こんにちは 最近冬服をいっぱい買いました本田です。洋服いっぱいほしい。
急に寒くなりすぎじゃないです? 肌掛布団と羽毛布団を出したり引っ込めたり忙しいですし、ヒートテックを着るか否か、判断が難しいです。
さて、今回ですが、現在話題のお絵かきAI、StableDiffusionをAzureで動かしてみたいと思います。
また、こういったものはAIが動くための環境自体の構築が何かと難しいものですが、今回はめちゃくちゃ楽に構築していきたいと思います。さて、元気に構築していきましょう。
1. Hugging Faceのアカウント作成
Stable Diffusionで使うモデルデータをcloneする際に、必要となります。
Hugging Faceにアクセスし、アカウントを作成してください。アカウント作成後、CompVis/stable-diffusion-v1-4へアクセスし、Agree and access repository をクリックします。アカウントのフルネームとパスワードはclone時に使いますのでメモしておいてください。
2. Azure VMの作成。
Stable Diffusionを動かすためのVMを作っていきます。
今回作成するVMはGPU付きのもので、一時間100円ほどの高価なVMです。止め忘れないように注意してください。
今回作成するVMの設定は以下です。
基本 VM作成 OS Linux イメージ Data Science Virtual Machine - Ubuntu 20.04 - Gen2 サイズ Standard NC4as T4 v3 (4 vcpu 数、28 GiB のメモリ) ディスク OS ディスクの種類 Standard SSD LR 管理 自動シャットダウン オン UTC +9, 21:00
今回大事なのはVMのサイズとイメージです。
サイズですが、NVIDIA cuda Toolkitを使うので、NVIDIAのGPUを積んでいるものを選んでください。Radeon GPUでもcudaを動かすことができるらしいのですが、かなりメンドクサイらしいので素直にNVIDIA GPUが載っているものを選びます。今回はNVIDIA Tesla T4が載っているNC4as T4 v3を選びました。
イメージはデータサイエンス用のものを使います。理由として、一番メンドクサイ部分であるツール群のインストールやバージョン合わせを省けるからです。このイメージを用いることでStable Diffusionの構築だけに集中できます。ありがとうMicrosoft。
あと自動シャットダウン設定もお忘れなく。お財布が危ないです。
3. Stable Diffusionの導入
まずはいろいろと更新を行います。10分ぐらいかかります。以下、対象VMにsshして入力します。
sudo apt update -y && sudo apt upgrade -y
更新が終わった後はVMの再起動を行ないます。sudo rebootなりポータルから再起動なりお願いします。
再起動に以下の手順でシェルに入力していきます。
# git lfsをインストール sudo apt install -y git-lfs # Github用のディレクトリ mkdir Github cd Github # git lfsの有効化 git init git lfs install # 本家はこっち -> https://github.com/CompVis/stable-diffusion.git # Nvidia Tesla T4ではVRAMが足りないので最適化verを使う git clone https://github.com/basujindal/stable-diffusion.git cd stable-diffusion conda init bash # 5~10分ぐらいかかる conda env create -f environment.yaml cd .. # データセットのclone git clone https://huggingface.co/CompVis/stable-diffusion-v-1-4-original (Hugging Faceのアカウント情報を2回入力) (入力後大きめのダウンロードが入るので3~5分ぐらい待機) # ちゃんとダウンロードできたか確認 # 4.0G あったらOK du -h ~/Github/stable-diffusion-v-1-4-original/sd-v1-4.ckpt # データセットの配置 mkdir ~/Github/stable-diffusion/models/ldm/stable-diffusion-v1 cp -r ~/Github/stable-diffusion-v-1-4-original/sd-v1-4.ckpt ~/Github/stable-diffusion/models/ldm/stable-diffusion-v1/model.ckpt
ここまで出来たらbashの再起動を行ないます。sshを再接続するだけでOKです。
シェルの頭に(base)とついていたらOKです。
4. 画像の生成
# Anacondaの仮想環境の切り替えを行なう # シェルの頭が(ldm)になる conda activate ldm # Stable Diffusionでtxtから画像を生成 # VRAM最適化の代償に実行時間が長め # 初回実行はダウンロードとか入るのでかなり長め cd ~/Github/stable-diffusion python3 scripts/txt2img.py --prompt "a photograph of solar system" # 出力された画像はoutputs下のどこかにあります
途中でパッケージが足りないといわれたらpip installしてあげましょう。
promptの部分では生成してほしい画像に関する単語、文を入れてあげます。呪文とも呼ばれているらしいです。
今回は太陽系の写真を出力してもらいました。
生成された画像はこんな感じ。
お、いい感じの画像ですね。一枚ヘンテコな画像がありましたが、まあまあ。
もうひとつぐらい生成してみます。ポン吉様のブログよりpromptを参考にしました。呪文と呼ばれる理由がわかる気がします。
python3 scripts/txt2img.py --prompt "1 7 th century flooded colonial village with broken aqueducts, light dust, by peter mohrbacher dan mumford nekro, cgsociety, pixiv, volumetric light, 3 d render"
出力結果はこちら
とてもよさそう。こういうのって見てるだけで楽しいですね。
こんな感じで皆様もドシドシ呪文を唱えて画像を生成してみてください。
おわりに
今回Stable Diffusionを構築するにあたって以下を参考にしました。
Stable DiffusionをAWSのEC2インスタンスで動かすまでの手順
「風景画像」に関する呪文集
本田 匠/FIXER
四日市事業所所属の新卒エンジニア Linux kernelとかKVMとか触ってました