以下のComfyUIのDockerfileを作ったわけ。
Blackwellのサポートは、Cuda 12.8が最初で、本格的な最適化はCuda 13.0以降。CU128や129の環境にBlackwellを入れても価格の割にパフォーマンスが出ないと言っても理解がしてもらえなかったので、説得をするために実際に動かしてみようということで作った。
一般論としては、
-
Blackwell の初期サポートは CUDA 12.8
-
実用上の最適化は CUDA 13.0 以降
という整理になる。ただ、言葉だけではなかなか伝わりにくかったため、実際に複数の NGC PyTorch イメージで ComfyUI を動かし、ベンチマークを取って比較した。
今回は RTX 5060 Ti 16GB / ホスト CUDA 13.0 / Z-image Turbo 系ワークフロー を使って検証している。
結論
先に結論を書くと、結果はかなり明確だった
-
CUDA 13.0 ~ 13.2 はほぼ横並びで最速
-
CUDA 12.9 では明確に遅くなる
-
CUDA 12.8 ではさらに遅くなる
-
CUDA 12.6 は Blackwell 未サポートで、PyTorch attention のみでしか動かず、最終的に OOM
つまり、Blackwell 世代で ComfyUI を実用的に回したいなら、CUDA 13.0 以降を前提に考えるべき、という結果。
ベンチマーク結果
RTX 5060 Ti 16GB / ホスト CUDA 13.0 / Z-image Turbo系ワークフロー
|
NGC イメージ
|
CUDA系
|
PyTorch系
|
Blackwellサポート
|
平均時間
|
評価
|
|---|---|---|---|---|---|
|
25.11
|
13.0
|
2.10.0a0
|
⭕️
|
7006 ms
|
最速帯
|
|
26.02
|
13.1
|
2.11.0a0
|
⭕️
|
6983 ms
|
最速帯
|
|
26.03
|
13.2
|
2.11.0a0
|
⭕️
|
6982 ms
|
最速帯
|
|
25.06
|
12.9
|
2.8.0a0
|
🔼 一部最適化
|
8773 ms
|
明確に遅い
|
|
25.03
|
12.8
|
2.7.0a0
|
🔼 初期サポート
|
10310 ms
|
かなり遅い
|
|
24.12
|
12.6
|
2.6.0a0
|
❌ 未サポート
|
OOM
|
PyTorch attention でしか動かず、VRAM不足で停止
|
速度の並びは非常にきれいだった
速度順位としてはかなり素直で、
-
13.0 / 13.1 / 13.2 は横並び
-
12.9 で一段落ちる
-
12.8 でさらに落ちる
という結果。
つまり、「Blackwell は 12.8 から一応動く」という説明は間違いではないものの、実際の性能まで含めると 13.0 以降を使う意味はかなり大きい、といえる。
重要ポイント 1: すでにホスト CUDA 13.0 なら、それは“当たり”
今回の結果を見る限り、ホスト側が CUDA 13.0 の環境であれば、NGC 25.11 / CUDA 13.0 は十分に正解。
実測値は以下の通りでした。
-
13.0: 7006 ms
-
13.1: 6983 ms
-
13.2: 6982 ms
差はごくわずかで、体感ではほぼ区別できない。そのため、13.1 や 13.2 に上げれば劇的に速くなるわけではない、というのも今回の大事なポイント。
重要ポイント 2: 12.8 / 12.9 は避けた方がよい
CUDA 12.9 と 12.8 は、単に「少し遅い」では済まない差が出た。
-
12.9 は約 25% 遅い
-
12.8 は約 47% 遅い
単発の1回だけなら我慢できるかもしれないが、ComfyUI は連続生成やバッチ処理を行うことが多いため、この差はそのまま使い勝手に効いてくる。
「一応動く」ことと「快適に使える」ことは別、ということがよく分かる結果。
逆にホストがCUDA 13.0にならないもの(NASなど)は、Blackwellはまだ最速では動かない。
VRAM の使われ方も興味深い
CUDA 13.x 系
13.0~13.2 はいずれも VRAM 使用量がかなり近く、ピークは以下の範囲だった。
-
13.0: 約 15444–15468 MiB
-
13.1: 約 15436–15462 MiB
-
13.2: 約 15440–15592 MiB
使用率にすると 94.6~95.6% 程度で、16GB をかなり深く使っている。それでも安定して完走しているため、13.x 系は VRAM をしっかり使い切って性能を出している と見てよさそう。
CUDA 12.8 系
一方で 12.8 はピークが 14028 MiB / 86.0% と、明らかに低め。
これは見方を変えると、VRAM消費を抑えている代わりに速度が出ていない とも読める。今回の結果だけを見る限りでは、13.x 系の方が
-
GPUをしっかり使えている
-
VRAMも深く使えている
-
その結果として速い
という構図。
どのバージョンでも初回だけ遅い
今回のテストでは、すべてのバージョンで Run 1 だけ遅く、Run 2~4 は安定して速い という傾向が出た。
これは典型的に、
-
モデル初回ロード
-
カーネル初回コンパイル
-
キャッシュウォームアップ
の影響と考えてよいでしょう。
実際、ウォームアップ後は以下のようにかなり揃った。
-
13.0: 約 6211~6212 ms
-
13.1: 約 6212~6213 ms
-
13.2: 約 6211~6219 ms
つまり、実運用の体感に近いのは Run 2~4 の値 であり、その観点でも 13.0~13.2 はほぼ完全に横並び 。
CUDA 12.6 はどうだったか
CUDA 12.6 / PyTorch 2.6 系の
24.12 イメージは、今回の検証では Blackwell 未サポート という結果。ログ上も、
-
sm_120 is not compatible -
PyTorch attention でしか動かない -
最終的に CUDA OOM
という流れで停止。
つまり、12.6 世代は「遅い」というより、Blackwell でまともに評価できる土台に載っていない と考えた方が自然。
実務上の判断
本番向けのおすすめ
本番は CUDA 13.0 系のままで十分。
特にホストが CUDA 13.0 の環境なら、無理に 13.1 や 13.2 に上げる理由は、少なくとも今回のベンチマークからは見えてこなかった。
使い分けの目安
-
安定重視: 25.11 / CUDA 13.0
-
新しめの検証重視: 26.02 / 26.03
-
避けたい: 12.8 / 12.9 系
-
Blackwell用途では非推奨: 12.6 系
なぜ 13.1 / 13.2 を強く推さないのか
13.1 や 13.2 は確かに新しいが、今回の結果では 13.0 より速いわけではない。性能がほぼ同等なので、選定基準として重要になるのは速度よりもむしろ次の要素。
-
互換性
-
ビルド再現性
-
Custom Node の動作
-
既存 Dockerfile との整合性
その意味では、すでに運用実績があり、ホスト環境との整合も取りやすい CUDA 13.0 系 はかなり扱いやすい選択肢かと思う。
まとめ
今回の検証で分かったことはシンプルで
-
Blackwell の初期サポートは CUDA 12.8 から
-
ただし 実際に快適に使うなら CUDA 13.0 以降が妥当
-
13.0 / 13.1 / 13.2 はほぼ同等
-
12.9 以下は目に見えて遅い
-
12.6 は未サポート扱いで、評価対象としては厳しい
「一応対応している」と「実際に速くて安定している」は別です。ComfyUI を Blackwell 世代で使うなら、その差は思った以上にはっきり出る。
少なくとも今回の結果では、ホスト CUDA 13.0 環境なら 25.11 / CUDA 13.0 を選んでおけば十分に正解、という結論。
なので、積極的には、CUDA 126,128は積極的にはもう更新しないことにした。CUDA 129は、QNAPに刺さっているGTX 1050向けに残しておくが、まだ、QNAPは、CU129止まりで、おまけにGTX 1050はVRAM 2GBしかないからなぁ。そもそもGPUを使うというのも実は難しい。
さらにそれぞれのベースイメージでもしらべてみると
CUDA 13.0環境では、NGCでも自作Dockerでも性能差は出ない。差が出るのは“初回実行”だけ。
サイズを考えると、Docker hubのPytorchで作ったもの(Dockerfile.dh-cu130)で十分だが、AMD64でしか動かない。もし、DGX Sparkでも動かすとなると、NGCあるいはDocker HubのNvidiaイメージ (Dockerfile.ngc-cuda-13.0.2 あるいは Dockerfile.dh-nvidia-cu130)が妥当。
Dockerfile.ngc-cu130は、サイズが大きくPytorchが2.10。ならば、Dockerfile.ngc-cu131とかDockerfile.ngc-cu132を検討してもいい。
いずれにせよCU12xは積極的には触らない。実はその説得が無事終わったので。。。