ComfyUIでStabble Cascade の生成速度・VRAM使用量測定(GPU: NVIDIA L4
画質比較はこちら
注意)
対応してすぐのComfyUIバージョンを使っているので、品質や速度で改善される場合がある(というか描いている時点で品質的にもう改善されているようだ。早すぎる(笑))。
当面の間、Stable Cascadeの最新情報は下のURLに書かれると思われる。
筆者はAIと仕組みとか全然わからない素人なので、間違った評価をしたり、無意味な測定をしている可能性がある。
まとめ
測定結果の注目すべき点をまとめる。
速度測定の結果から、--highvramが何故か--gpu-onlyと同じ速度で、より少ないVRAM使用量だった。
また、VRAM使用量の測定結果から、VRAMが8GB以下でモデルをVRAMにキャッシュしたい場合は、ComfyUIを--highvram, --fp8_e4m3fn-unetオプションで起動し、stage cとstage b または stage b liteを使うと良さそう。
(※ fp8オプションを使用するにはpytorchバージョンが2.1.0以上である必要がある。)
しかし、画質は--bf16-unetオプションの方が良い。
fp8オプションでは、モデルはbf16でない方が画質がよい。
TODO: 画質比較を後で出す。
測定方法
ComfyUIのvramオプションを使用し、最大メモリ使用量を見る。
VRAM測定はコマンドを使用。 `watch -n 0.2 nvidia-smi`
速度測定時は上記コマンドを使用しない。
stage c,b 以外の読み込み時間測定は、obsで60fpsで画面録画し、davinci resolveでフレーム単位で測定。
Queue Promptボタンを押してQueue sizeが0から1になったフレームから、ターミナルでの画像生成のプログレスバーが表示されたフレームまでの時間を測定。
ram使用量はhtopを使用。
comfyanonymous氏のワークフローを利用。
マシンスペック
Google Cloud / Compute Engine
CPU: Intel Cascade Lake世代 4コア8スレッド
GPU: NVIDIA L4
Storage
Type: バランス永続ディスク
Size: 301GB(95%使用済み)
Speed: 449.05 MB/s
RAM: 52GB
Geekbench6 score: https://browser.geekbench.com/v6/cpu/4992804
シングル: 1016
マルチ: 3871
ソフトウェアバージョン
Ubuntu 22.04.4 LTS
ComfyUI commit 8b60d33bb7ce969a53fc5e25bfa0e2dca7a17b23
Python 3.11.0rc1
CUDA 12.3
Torch関連
pytorch-triton 3.0.0+901819d2b6
torch 2.3.0.dev20240216+cu121
torchaudio 2.2.0.dev20240216+cu121
torchsde 0.2.6
torchvision 0.18.0.dev20240216+cu121
アプリ起動前のメモリ使用量
VRAM <= 4mib
ram < 480M
モデル名略称
c16 = stage c bf16
bl = stage b lite
参考リンク
ComfyUIの起動オプション
https://github.com/comfyanonymous/ComfyUI/blob/dccca1daa5af1954d55918f365e83a3331019549/comfy/cli_args.py
測定1. モデルロード時間
bf16-unet
結果、bf16モデルのほうがプロンプト受付から生成開始まで早い。
また、stage b,c 以外の読み込みに3秒かかっていることがわかる。
無印とliteではliteのVRAM使用量が1600mib少ない。
| stage\measure. | load (sec) | stage c, b speed (it/s) | vram (mib) |
| -------------- | ----------------------- | ----------------------- | ---------- |
| c, b | 7.06 | 4.41, 2.15 | 13094 |
| c16, b16 | 6.06, 9.10(total) | 4.41, 2.16 | 13094 |
| c16, bl | 5.41, 5.13, 8.17(total) | 4.45, 5.03 | 11494 |
| c16, bl16 | 5.14 | 4.44, 5.03 | 11494 |
fp8_e4m3fn-unet
結果、無印とliteではliteのVRAM使用量が800mib少ない。blなら生成速度が2.3倍早い。
なぜか c, blのVRAM使用が低い。
| stage\measure. | load (sec) | stage c, b speed (it/s) | vram (mib) |
| -------------- | ----------------- | ----------------------- | ---------- |
| c, b | 4.47 | 3.79, 2.03 | 8208 |
| c16, b16 | 4.12, 7.11(total) | 3.75, 2.01 | 8208 |
| c16, bl | 3.31 | 3.82, 4.63 | 7408 |
| c16, bl16 | 3.41, 3.28 | 3.79,4.60 | 7408 |
| c, bl | 4.03 | 3.75, 4.63 | 7376 |
測定2. トータル生成時間
lowvram はメモリ削減なし。normalvramとほぼ同じ結果。
total sec は5回平均。first totalsecはアプリ起動時1回目の記録の1回のみ測定。
複数の数字表記は再測定した項目。
bf16-unet
highvram c,b はロード後、gpu-onlyとほぼ同じ速度でVRAMが低い。
| option | model | total (sec) | first total (sec) | vram (mib) |
| ---------- | ----- | ----------- | ----------------- | ---------- |
| gpu-only | c, b | 9.43, 9.50 | 19.94, 20.00 | 13094 |
| gpu-only | c, bl | 7.45 | 17.27 | 11494 |
| highvram | c, b | 9.38, 9.51 | 22.27 | 11654 |
| highvram | c, bl | 6.73 | 18.55 | 9990 |
| normalvram | c, b | 14.28 | 21.84 | 10694 |
| normalvram | c, bl | 11.60 | 18.91 | 9062 |
fp8_e4m3fn-unet
| option | model | total (sec) | first total (sec) | vram (mib) |
| ---------- | ----- | ----------- | ----------------- | ---------- |
| gpu-only | c, b | 10.56 | 19.46, 18.94 | 8208 |
| gpu-only | c, bl | 7.83 | 15.16 | 7376 |
| highvram | c, b | 10.61 | 21.12 | 6960 |
| highvram | c, bl | 7.90 | 17.53 | 5936 |
| normalvram | c, b | 12.32 | 19.60 | 5808 |
| normalvram | c, bl | 7.83 | 14.42 | 5936 |