Wan2.2 image-to-video on an H200: a 15-second 720p clip takes 18 minutes, or 9.6 with one change
We deployed a Wan2.2 14B image-to-video model with ComfyUI on rented H200s and measured clip length, resolution, attention backend and PyTorch build on the same machine. A 15-second 720p clip took 18.1 minutes with PyTorch attention and 9.6 minutes with SageAttention 2 (1.89x), at 68.5 GB peak GPU memory. Upgrading PyTorch to CUDA 13 alone gained 6%. Output stayed visually the same. On short clips, two H200s of the same model differed by 1.5x or more.
Choosing GPUs? Compare GPUs for your traffic · Get your node measured, free
Most GPU benchmarks are about tokens. Video generation is a different load: one request keeps a GPU at full power for minutes, and the clip length you ask for decides whether it takes two minutes or twenty. We wanted to know how long a 15-second 720p clip takes on an H200, and what makes it faster.
What we ran. A Wan2.2 14B image-to-video model (a community FP8 fine-tune with 8-step distilled sampling: 4 steps on the high-noise expert, 4 on the low-noise one), served by ComfyUI at a pinned commit, on single rented H200 141 GB GPUs (RunPod Secure Cloud). One reference image (a bookshop at night), fixed prompts and seeds, 16 fps, CFG 1. Every output was fully decoded and checked for frame count, resolution and frame rate; we sampled the GPU every second.
How long a clip takes
| Clip | Frames | 480×480 | 1280×720 |
|---|---|---|---|
| 2 s | 33 | 17–25 s | — |
| 5 s | 81 | 63 s | 155 s |
| 10 s | 161 | 130 s | — |
| 15 s | 241 | 203 s | 18.1 min |
Times are backend execution with the models already loaded, default ComfyUI settings and PyTorch attention. The 480×480 column comes from the first H200 we used, which turned out to be the slower host for short clips (see below), so treat it as an upper bound; the 720p column comes from a host where the GPU was busy 95–98% of the time. Peak GPU memory for the 15-second 720p clip was 68.5 GB, under half of the H200's 141 GB, so memory isn't what limits clip length on this card. Time is.
At 720p, time grows faster than clip length: the 15-second clip has 3× the frames of the 5-second one and took 7× as long (18.1 minutes against 155 seconds, same host). The model attends across the whole clip at once, and that cost grows faster than the clip.
One change cut it in half
All four variants ran on the same H200, one after another, with the same input, prompts and seeds:
| PyTorch | Attention | 720p, 5 s | 720p, 15 s | Speed-up |
|---|---|---|---|---|
| 2.8.0 (CUDA 12.8) | PyTorch (default) | 155 s | 18.1 min | 1.00× |
| 2.8.0 (CUDA 12.8) | SageAttention 2 | 95 s | 9.6 min | 1.64× / 1.89× |
| 2.14.1 (CUDA 13.0) | PyTorch (default) | 147 s | — | 1.06× |
| 2.14.1 (CUDA 13.0) | SageAttention 1.0.6 | 129 s | — | 1.20× |
SageAttention 2 replaces the attention kernels with quantized ones. It was the only change that mattered: 1.64× on the 5-second clip and 1.89× on the 15-second one, with no extra memory. The longer the clip, the bigger the share of time spent in attention, so the bigger the gain. In ComfyUI it's one launch flag (--use-sage-attention) after building the package for your PyTorch and CUDA version.
Upgrading PyTorch to CUDA 13 (which ComfyUI's startup log recommends) gained 6% on its own. SageAttention 2 didn't build against it on our image, so the CUDA 13 variant fell back to the older SageAttention 1.0.6, which gained only 1.2×. The difference between rows 2 and 4 is the SageAttention version, not CUDA.
Did the output change?
Not visibly. Faster attention is slightly less exact, and in a diffusion model small differences compound over the clip: with the same seed, the first frame matched the baseline almost exactly (PSNR 44 dB), and later frames drifted (37 dB on average over the 15-second clip). Side by side, composition, camera motion, the neon sign and the shop interior were the same. Only small details like the arrangement of books differed by the last frame. A fixed seed won't reproduce a clip pixel for pixel across attention backends.
Two H200s, two different speeds
On one rented H200, a 2-second 480p clip took about 25 seconds even with the models loaded; on another, it took 17 seconds including loading them. On the slow one the GPU sat mostly idle during short clips (15–25% utilization), so the time went somewhere outside the GPU. Both had the same GPU, the same CPU model, the same PCIe Gen5 x16 link and the same software. We didn't find the cause. We didn't run 720p on the slow host. The two hosts that did ran at 95–98% GPU utilization and agreed within 5% (155 vs 163 s for 5 seconds, 18.1 vs 18.5 minutes for 15 seconds); long clips keep the GPU busy, so they should be less exposed to whatever slowed the first host.
The listing doesn't tell you which kind of host you get. As with LLM serving, measure the node before you plan capacity on it.
Use 16:9 images for 16:9 video
We fed a square reference image to the 720p (16:9) runs two ways. Padded with black bars, which is what the standard workflow does, the model spent the first second or two painting the bars into new scenery: houses, street lights, a car with its headlights on. Cropped to 16:9 instead, the clip was full-frame from the first frame and stayed on the subject. For production, start from an image with the aspect ratio of the video you want.
What a clip costs
At the H200's on-demand price on the day ($5.29/h on RunPod Secure Cloud):
| 720p, 15 s | Time | GPU energy | GPU cost |
|---|---|---|---|
| Default settings | 18.1 min | 204 Wh | $1.60 |
| SageAttention 2 | 9.6 min | 106 Wh | $0.85 |
That is 3.3 clips an hour per GPU with default settings, and 6.3 with SageAttention 2. Energy is GPU board power only. The GPU ran at 666–676 W on average, close to its 700 W limit, for the whole clip.
Limits
One model (a community FP8 fine-tune of Wan2.2 14B image-to-video, 8 distilled steps), one reference image and two to three prompts, single GPUs, three hosts on one platform, two seeds per configuration on the 5-second clip and one on the 15-second clip. ComfyUI at one pinned commit with tiled VAE decoding (256 px tiles, 32-frame windows). We did not test multi-GPU parallelism, torch.compile, other step counts, or SageAttention 2 on CUDA 13. Quality was judged from sampled frames and PSNR against the baseline, not by a viewer study.
Method: how we measure · Prices for the same GPU across providers: H200.
Keep reading
RTX PRO 6000 Blackwell: what 96 GB at $1–2.50 an hour buys you for LLMs and video
We rented the RTX PRO 6000 Blackwell (96 GB) and ran the same tests as on our H100, H200, A100 and RTX 4090 nodes. Serving Qwen3-8B under a latency target, it handled 3.09 requests per second, $0.56 per million output tokens at $2.49 an hour, close to an H100 NVL and half the cost of an A100. A 15-second 720p Wan2.2 video took 12.6 minutes with SageAttention 2 on one card, 31% slower than an H200 but 39% cheaper per clip. At the ~$1/hour some marketplaces advertise, both costs fall by more than half.
Do inference providers really make $10–20 per GPU-hour? We measured DeepSeek V4.1 Flash on H200s
A widely shared post says inference providers earn $10–20 per GPU-hour serving open models on rented GPUs. We served DeepSeek V4.1 Flash on 4× H200 with vLLM's published recipe and measured what it can sell within a latency target. At the prices 38 OpenRouter endpoints charge, a fully loaded H200 earns $1.80–8.84 an hour, $4.42 at the most common price, against $5.29 rent. At 100 tokens per second per user it earns $0.24. Margins exist, but they depend on hardware, tuning and pricing, not on showing up.
H100 vs H200 for LLM inference: 18% more capacity, 33% higher price — and where the H200 pulls ahead
We ran the same model, engine and latency target on an H100 SXM and an H200 on RunPod. At a 50 ms-per-token SLO the H200 served 18% more requests for 33% more money, so each token cost 11% more. At a fixed load it generated tokens 36% faster, and with a 30 ms target its lead grew to 29%, close to breaking even on price. Measured numbers, cost per million tokens and the break-even price.