
We've spent plenty of time making the R9700 useful for local language models. But a workstation doesn't have to stop at chat and code. What if the same card could turn a picture into an object you can look around?
That's what Idol, from Sperid Labs, does. Give it one image and it generates a 3D Gaussian splat, including a plausible back that the picture never showed. With Paiton, a complete request takes 16.4 seconds on one Radeon AI PRO R9700. Stock Idol on that same card takes 39.2 seconds: about 2.4× faster, with the same weights, 50 steps and guidance setting.1
For context, Sperid Labs separately reports 19.1 seconds on an RTX 4090. That is an encouraging reference, not a matched cross-vendor test. Here's what we measured, what comes out, and how to try it.
In this article
- From one picture to a turntable
- The same-GPU result and quality check
- Other GPUs and an illustrative price comparison
- Run it locally
One picture, a whole object
The header is an illustration; this turntable is a real output from the released Paiton package on one R9700, at 262,144 Gaussians. Left: input generated with FLUX.2 klein 4B. Right: Idol's result from all sides. Original example and provenance.
The output is a standard 3DGS .ply, not a textured polygon mesh. Open it in a Gaussian-splat viewer to explore the object. The unseen sides are generated, not recovered measurements of the original object. That makes this an interesting tool for visual ideas and previews, rather than a replacement for a measured scan.
A quick turntable makes it easier to spot where a character or prop works, and where another input image would help.
From 39.2 to 16.4 seconds
Median of eight images after one warm-up. Each request includes input processing, generation and saving the PLY. One R9700, 262,144 Gaussians, 50 steps, CFG 3.0 and time shift 3.0.
| Runtime on one R9700 | Complete request | Mean LPIPS versus stock optimized |
|---|---|---|
| Stock Idol, default optimized mode | 39.22 s | Reference |
Paiton --exact | 19.45 s | 0.0027 |
| Paiton default | 16.44 s | 0.0039 |
This is about 58% less waiting than stock. Downloads, startup and the warm-up are outside the timer. Stock uses idol-sdk's optimized PyTorch path on ROCm, not an intentionally slow baseline. The GPU keeps its stock 300 W limit, with no clock, power or fan changes. That limit is not measured energy consumption.1
Most of the work is in the denoiser. Paiton replaces it with a native HIP/C++ runtime for RDNA4 gfx1201; the surrounding pipeline stays on stock idol-sdk and PyTorch. Matrix products remain fp16. The default switches attention to int8 QK and fp8 PV from step 7; --exact keeps fp16 attention throughout.2
How much does that change the result? The release compared eight objects from eight views each against stock renders. Default's mean LPIPS was 0.0039, versus 0.0027 for exact and 0.0026 for stock optimized versus non-optimized. Lower means closer. Default also cleared the release's worst-image PSNR threshold: 34.63 dB against a 33 dB minimum.1
That's a bounded quality check, not a check of every future output. --exact stays near stock's own implementation differences; it does not promise identical bits or bit-reproducibility between runs. Peak PyTorch-reserved GPU memory was 9.6 GiB for both Paiton profiles, versus 10.7 GiB for stock. Those are not whole-device measurements or qualification of smaller GPUs.
Where the R9700 lands
R9700 measurements: ElioVP. Other GPUs: Sperid Labs' model card. Both report 50 steps, 262,144 Gaussians and medians over eight images, but these are separate measurements, not one controlled hardware comparison.
| GPU and runtime | Request | Source |
|---|---|---|
| H100 80 GB, variant unspecified | 6.7 s | Sperid Labs |
| RTX 5090 | 14.1 s | Sperid Labs |
| R9700, Paiton default | 16.44 s | ElioVP |
| L40S | 16.6 s | Sperid Labs |
| RTX 4090 | 19.1 s | Sperid Labs |
| R9700, stock Idol | 39.22 s | ElioVP |
| RTX 3080 10 GB | 46.2 s | Sperid Labs |
At these published timings, the R9700 delivers about 86% of the RTX 5090's calculated request throughput. It sits close to the L40S, although a difference this small across separate setups is not a reliable ranking.3
What about the hardware budget?
Calculated as 3,600 ÷ request seconds ÷ assumed GPU price × 1,000. An illustrative GPU-only comparison, not an hour-long throughput test. Host costs, energy and services are excluded.
| GPU | Assumed price, USD | Calculated assets/hour per $1,000 |
|---|---|---|
| R9700, Paiton default | $1,900 | 115.3 |
| RTX 3080 10 GB | $710 | 109.7 |
| RTX 5090 | $3,300 | 77.4 |
| RTX 4090 | $4,800 | 39.3 |
| L40S | $7,570 | 28.6 |
| H100 80 GB | $31,000 | 17.3 |
These are the published README's November 2026 price assumptions, not independently verified lowest available prices. The H100 price is for PCIe hardware, while the upstream timing does not specify its variant. Treat that row as especially approximate.2
Under the $1,900 and $4,800 assumptions, the R9700 costs about 40% of the RTX 4090. Prices can move the value ranking: the RTX 3080 is already close here. Use your actual quote, especially if you already own a suitable GPU.
Try it on your R9700
You need Linux, Docker, a working AMD driver and the tested R9700. Accept the DINOv3 license on Hugging Face first, then supply a token for that account. Keep real tokens private; hf_... below is only a placeholder.2
docker pull ghcr.io/eliovp/paiton-vllm-plugin:idol-rdna4-v1.0.0
export HF_TOKEN=hf_...
mkdir -p "$HOME/paiton-idol/models" "$HOME/paiton-idol/outputs"
docker run --rm --device /dev/kfd --device /dev/dri --group-add "$(stat -c '%g' /dev/kfd)" \
-e HF_TOKEN -v "$HOME/paiton-idol/models:/models" -v "$HOME/paiton-idol/outputs:/outputs" -v "$PWD:/inputs:ro" \
ghcr.io/eliovp/paiton-vllm-plugin:idol-rdna4-v1.0.0 generate /inputs/photo.png --mode real
Put photo.png in your current directory. Use --mode synthetic for renders or generated images, as in the benchmark. Append --exact to retain fp16 attention. Defaults are 50 steps, CFG 3.0, seed 42 and 262,144 Gaussians.
The first run downloads the weights; subsequent runs reuse the model directory. Results appear in $HOME/paiton-idol/outputs: a .ply, the prepared _input.png and a _camera.json file. For a fixed container reference, the public tag resolved on 6 November 2026 to this registry digest:
ghcr.io/eliovp/paiton-vllm-plugin@sha256:7939b4e0bcacf49bcce51d71892915eda802ad2f3724ef61e06e1bc7a77b4e5d
Use that reference instead of the tag in both Docker commands to pin the image. The public release guide documents the launcher and downloads.
Package code and the distributed native runtime are Apache-2.0; Paiton's compiler remains proprietary. Idol and the FLUX.2 klein VAE have Apache-2.0 terms, while DINOv3 retains its separate license. Weights download separately.4
Another useful job for the same local workstation. Explore Paiton, our local image-generation work, or Sovereign AI for keeping these workflows on infrastructure you control.
