
During our last video batch, the final clip came off the GPU and the pod kept running. For about two hours, an H100 rented at US$3.99 an hour sat waiting for work that would never come. It had a watchdog meant to shut it down after a while without jobs. The watchdog didn't, because destroying the pod meant calling RunPod's API, and the pod had no key to do that. A guard loop running on my Mac is what finally stopped it.
Those two hours cost between $7 and $8, on a GPU bill of $23.23. That stings, and it's a good place to start talking about what generating images and video really costs.
Every number comes from the records of Orazaka, my AI engine, published on the Measured runs page. When a number comes from my notes, I say so.
Three ways to cook the same dish
I have three options. Cooking at home: my MacBook Pro M1 Max, 64 GB, which I already own. Ordering at a restaurant: a hosted API, here DigitalOcean's serverless inference, paid per output. Or renting a professional kitchen by the hour: a GPU at DigitalOcean or RunPod, paid for the time, stoves on or not.
Each option has its hidden price: memory and patience at home, the fixed menu at the restaurant, idle time in the rented kitchen.
The times below run from command to file: queueing, transfer and storage included.
Images
| Model | Where | Time (median) | Price | Succeeded |
|---|---|---|---|---|
| FLUX.2 [klein] 4B, 1024×1024 | Mac | 62 s | nothing billed | 6 of 18 |
| Stable Diffusion 1.5, 512×512 | Mac | 58 s | nothing billed | 6 of 6 |
| Z-Image Turbo, 1024×1024 | Mac | engine 158 s | nothing billed | 0 of 5 |
| Stable Diffusion 3.5 Large, 1024×1024 | DigitalOcean serverless | 8 s | $0.08 | 6 of 6 |
"Nothing billed" doesn't mean free. I haven't measured the Mac's electricity or wear, so I don't put a number on it.
The same prompt, three models:

How this was made
- Model
- FLUX.2 [klein] 4B · Apache-2.0
- Engine
- stable-diffusion.cpp on Metal, 4 steps
- Machine
- MacBook Pro, Apple M1 Max, 64 GB (Metal)
- Through
- Orazaka Studio run on dev.orazaka.com
- Prompt
A Moroccan riad courtyard in the late afternoon: a zellige tile fountain, orange trees, carved plaster arches, shafts of warm light. Editorial architecture photograph, 24mm lens, soft shadows, natural textures. No text, no lettering, no logos.
- Seed
20261011- Size
- 1024×1024
- Time
- 61 s, as recorded by the run
- Cost
- no cash cost (own hardware; electricity not metered)
- Orazaka run
352eb15f-9022-4a56-a921-5f74a270250a

How this was made
- Model
- Stable Diffusion 3.5 Large · Stability AI Community Licence
- Engine
- hosted: DigitalOcean serverless inference (steps and guidance not exposed; seed not honoured)
- Machine
- hosted by the provider (not our machine)
- Through
- Orazaka Studio run on dev.orazaka.com
- Prompt
A Moroccan riad courtyard in the late afternoon: a zellige tile fountain, orange trees, carved plaster arches, shafts of warm light. Editorial architecture photograph, 24mm lens, soft shadows, natural textures. No text, no lettering, no logos.
- Seed
20261011- Size
- 1024×1024
- Time
- 8 s, as recorded by the run
- Cost
- US$0.08 (the provider's price)
- Orazaka run
64269eeb-f6e3-46c4-8421-fe9136672186

How this was made
- Model
- Stable Diffusion 1.5 · CreativeML OpenRAIL-M
- Engine
- stable-diffusion.cpp on Metal, 20 steps, guidance 7
- Machine
- MacBook Pro, Apple M1 Max, 64 GB (Metal)
- Through
- Orazaka Studio run on dev.orazaka.com
- Prompt
A Moroccan riad courtyard in the late afternoon: a zellige tile fountain, orange trees, carved plaster arches, shafts of warm light. Editorial architecture photograph, 24mm lens, soft shadows, natural textures. No text, no lettering, no logos.
- Seed
20261011- Size
- 512×512
- Time
- 58 s, as recorded by the run
- Cost
- no cash cost (own hardware; electricity not metered)
- Orazaka run
8e149fac-9a97-4552-98a8-e318444787da
FLUX.2's 6 out of 18 scared me at first. Reading the records, nearly every failure was mine. The image client gave up after two minutes, while the engine needed 60 to 75 seconds plus the image's trip through a tunnel. Worse: when it gave up, it returned a transparent 1×1 pixel image, and the run reported success. Two finished images were also overwritten by retries with the same name. Since then every download checks the file size, and I still count those failures.
Video
| Model | Where | Time (median) | Price per clip | Succeeded |
|---|---|---|---|---|
| Wan 2.2 A14B, text to video, 832×480 | DigitalOcean serverless | 131 s | $0.60 | 21 of 21 |
| Wan 2.2 TI2V 5B, image to video, 1280×704 | Rented H100 (RunPod) | 175 s | $0.19 to $0.31 | 19 of 19 |
| Wan 2.2 A14B, text to video, 720p | Rented H100 (RunPod) | 1,111 s | $1.23 to $1.38 | 6 of 6 |
| Wan 2.2 TI2V 5B, 1280×704 | RTX 4000 Ada (DigitalOcean) | 1,106 s | $0.23 | 1 of 1 |
| Wan 2.2 TI2V 5B, 480×832 | Mac | out of memory | — | 0 |
On a rented GPU, the price of a clip is its compute time times the hourly rate, without start-up or waiting. So the real bill is higher; more on that below.
How this was made
- Model
- Wan 2.2 T2V A14B · Apache-2.0
- Engine
- hosted: DigitalOcean serverless inference (steps and guidance not exposed)
- Machine
- hosted by the provider (not our machine)
- Through
- orazaka video --model wan2-2-t2v-a14b, routed by Orazaka
- Prompt
Extreme close-up, slow motion: a stream of amber mint tea pours from a silver teapot held high into a small engraved glass, steam curling through a shaft of golden-hour light inside a Berber tent, dust motes floating, shallow depth of field, anamorphic lens flare, 35mm film grain, cinematic color grade.
- Seed
20261011- Size
- 832×480 · 16 fps, 5.06 s
- Time
- 134 s, as recorded by the run
- Cost
- US$0.60 (the provider's price)
- Orazaka run
25948442-7c68-4e66-94d6-39cd8b96438d- Sound
- music bed made by Orazaka (Studio video-sound, ACE-Step 1.5, MIT), -14 LUFS, AAC
The hosted version is the simplest: $0.60 and two minutes, every time. But it sets the menu. I asked for 720×1280, 480×832, 1280×720, with and without a format parameter. Every answer came back at 832×480. No vertical, ever. So Orazaka refuses that model for 9:16, by name, rather than quietly cropping a landscape frame.
Vertical and 720p are why I rented an H100. The A14B model runs there with our settings, but doesn't fit whole on the 80 GB card: its two experts weigh 57 GB and get swapped with host memory. About 26 seconds a step, 18 minutes a clip. More expensive than hosted, but at 720p and in the format I want.
What I actually paid
| Batch | Detail | Paid |
|---|---|---|
| Serverless, 15 October | 21 clips ($12.60), 7 size and seed test calls ($4.20), 7 images ($0.56) | $17.36 |
| DigitalOcean GPU | 4 RTX 4000 Ada droplets, 4.26 h at $0.76 | $3.24 |
| RunPod GPU | 1 H100 80 GB pod, 5.01 h at $3.99 | $19.99 |
Of the $23.23 of rented GPU, computing the clips themselves accounts for $11.72. The other half went to start-up, downloading weights, failed attempts and idle time. A GPU hour is billed from the machine's creation to its destruction, not just while it works.
The failed attempts have their own story. After the first successful clip, ten clips in a row failed in 17 seconds: the worker checked free memory before each job and counted the model it had already loaded (about 22 GB) as memory in use (orazaka-worker-media#22). Three clips were lost mid-render, up to 9 minutes of GPU each, because a deploy of the dev site restarted the relay and dropped the tunnel (#24). And another time, the laptop driving the batch went to sleep: the droplet sat for 1.2 hours without work before its watchdog destroyed it.
When renting a GPU pays off
This is the calculation I care about most. The price of a clip on a rented GPU is the hourly rate, divided by the clips it makes in an hour, divided again by the share of time the machine is really working. A taxi waiting at the kerb costs as much as the same taxi driving. The slider below uses the H100's measured numbers: $3.99 an hour, 175 seconds per image-to-video clip. Move it to see where it crosses the hosted $0.60.
Two cautions. The two clips aren't the same: hosted is text to video at 832×480, the H100 is image to video at 1280×704 with a smaller model. And the calculation assumes start-up is free, which it isn't. What it shows is the shape of the answer: fully busy, the rented GPU costs about a third of hosted. As soon as it waits, the advantage melts, then flips.
Since then the rule is simple. A guard loop runs for the whole batch, and the pod is stopped as soon as the queue is empty.
The credits side
Orazaka bills its users in credits. A run first places a hold, like a hotel blocking an amount on your card at check-in. It runs its steps, then settles once at the end. A generation that produces nothing releases its hold instead of being billed at a guess.
In September I changed the unit: a credit went from 1 cent to 0.1 cent. Before, small text steps were rounded up to a minimum, and image generation was billed at zero. I replayed five real workloads before and after, on the real database:
| Workload | Before | After |
|---|---|---|
| trade-showcase | 3.00¢ | 12.10¢ |
| lead-research | 3.00¢ | 1.40¢ |
| outbound-prospection | 2.00¢ | 0.60¢ |
| followup-sequences | 3.00¢ | 1.00¢ |
| realestate-reels | 15.00¢ | 14.00¢ |
Text steps got 53 to 70% cheaper. Nothing was discounted: we just stopped billing a minimum. trade-showcase quadrupled because a 512×512 image now costs 10 cents instead of zero. The models being real, two runs don't use quite the same tokens, but that noise stays at a few per cent.
What I decided
Images stay on the Mac by default, and hosted takes over when eight seconds matter more than eight cents. Video goes to a GPU when you choose it: hosted for a quick landscape clip, a rented H100 for 720p and vertical, never the Mac. A rented GPU lives for one batch only. And licences are data: MMAudio, which adds synced sound effects to a video, has a non-commercial licence, so it stays available but is never the default.
What I haven't measured
The Mac's electricity and wear. Quality, which I leave you to judge on the pictures. A comparison of the same clip, at the same size, between hosted and the rented GPU. And a margin: my records hold the cost of each run, not the revenue, so I don't publish one.
If you keep one thing: on a rented GPU, a minute of waiting costs exactly as much as a minute of work. Measure how much of the time your machine really works before you compare its price with an API's.
Every number holds for this setup, on 15 and 16 October 2026. I measure again when the setup changes. To see what these models do with a prompt, read the anatomy of a prompt.


