Stable Diffusionの速度
話題の画像生成モデルを試している
(people using virtual reality wearing Oculus Quest in edo era, by Katsushika Hokusai)
https://pbs.twimg.com/media/Fa5i4f6aUAIY0G8.png
@kn1cht: Anime風にしたい場合でも、photorealのキーワードを入れておいたほうが人体や顔が破綻することが少ない印象 Kafu Chino, Gochuumonha Usagi Desuka, at cozy cafe, Japanese cartoon style, photoreal, kawaii, wallpaper, 4K, Pixiv Fanbox #StableDiffusion https://pbs.twimg.com/media/Fa6Okj5aMAMt1oD.pnghttps://pbs.twimg.com/media/Fa6OlAAakAMDUlW.pnghttps://pbs.twimg.com/media/Fa6OmxDaMAAlx9_.png
Stable Diffusionのすごいところはコードやモデルが配布されており、素人が手元で動かせてしまうところ
しかし快適な動作にはある程度のGPUが必要……
どのGPUならどのくらいの時間で生成されるのか気になるので記録しておく
Google Form作ったので比較したい人はお答えください
条件
promptや同時に生成する枚数によって変わるので、ある程度統一しないと
重要:GPUを使いそうな他のアプリケーションをなるべく落とす(ゲームやVRアプリケーションを実行しない。GPUアクセラレーションしているWebブラウザも?)
prompt a photo of an astronaut riding a horse on mars"
解像度 512x512
生成枚数 1枚(増やすとメモリエラーを起こす環境でも測れるように。通常、一度に多く生成する方が一枚あたりの時間は短くなります)
code:py
# 通常
import torch
from torch import autocast
from diffusers import StableDiffusionPipeline
pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", use_auth_token=True)
pipe = pipe.to("cuda")
with autocast("cuda"): image = pipe(prompt)"sample"0 image.save(f"astronaut_rides_horse.png")
code:py
# float16モデル
import torch
from torch import autocast
from diffusers import StableDiffusionPipeline
pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", torch_dtype=torch.float16, revision="fp16", use_auth_token=True)
pipe = pipe.to("cuda")
with autocast("cuda"): image = pipe(prompt)"sample"0 image.save(f"astronaut_rides_horse.png")
code:sh
# 省メモリ版
python .\optimizedSD\optimized_txt2img.py --prompt "a photo of an astronaut riding a horse on mars" --n_samples 1
RTX 3060Ti + 省メモリフォーク
GPU / NVIDIA GeForce RTX 3060 Ti, 8192 MiB
CPU / AMD Ryzen 7 3700X
RAM / 32 GB
使用したモデルデータ : CompVis/stable-diffusion-v1-4
動いた?:yes
時間:65.90 秒
RTX 3060Ti + fp16 model
GPU / NVIDIA GeForce RTX 3060 Ti, 8192 MiB
CPU / AMD Ryzen 7 3700X
RAM / 32 GB
使用したコード : diffusersライブラリ
使用したモデルデータ : CompVis/stable-diffusion-v1-4 (fp16)
動いた?:yes
時間:37.96 秒
Google Colab (Free) + fp16 model
GPU / Tesla T4, 15109 MiB
CPU / Intel Xeon CPU @ 2.30GHz
RAM / 13 GB
使用したコード : diffusersライブラリ
使用したモデルデータ : CompVis/stable-diffusion-v1-4 (fp16)
動いた?:yes
時間:20.06 秒
Google Colab (Free)
GPU / Tesla T4, 15109 MiB
CPU / Intel Xeon CPU @ 2.30GHz
RAM / 13 GB
使用したコード : diffusersライブラリ
動いた?:Yes
時間 : 1558.05 秒
遅すぎない? 無課金だから?
調べ方
GPU
NvidiaのGPU情報表示コマンドで確認できる
nvidia-smi --query-gpu=index,name,memory.total --format=csv
CPU
Windows: タスクマネージャー
macOS: sysctl machdep.cpu.brand_string
Linux: cat /proc/cpuinfo
RAM
Windows: タスクマネージャー
Linux: cat /proc/meminfo
時間を測る
ストップウォッチ
Linux / macOS : time YOUR PYTHON COMMAND
Windows PowerShell : Measure-Command { YOUR PYTHON COMMAND }
Google Colab : セル左上のアイコンにマウスポインタを当てると実行時間が出ます
https://gyazo.com/ed13fdec77925ebe3b61bd63f70c900c