Note on figures: throughput numbers below are engineering budget estimates derived from published model FLOP counts and chip specs — there is no public CLIP-on-Strix-Halo benchmark to cite. Treat them as ballpark sizing, not measured results.
OpenAI CLIP used as an image-embedding filter over a live video stream: decode frames, run each through CLIP's image encoder, compare the embedding against target prompt embeddings, keep/drop by a similarity threshold. Pipeline is multithreaded OpenCV feeding ONNX Runtime. Currently running well on Nvidia (CUDA / TensorRT via ONNX Runtime).
The AI Max+ 395 (Strix Halo) has three places to run inference, and for CLIP the choice matters:
| Target | ONNX Runtime path | Best for |
|---|---|---|
| XDNA 2 NPU ~50 TOPS INT8 | Vitis AI execution provider (AMD Ryzen AI SW stack) | Low-power, always-on lightweight vision — purpose-built for exactly this |
| iGPU 40 CU RDNA 3.5 (Radeon 8060S) | DirectML (Windows) or ROCm/MIGraphX (Linux) | Highest raw throughput; heavier models / larger batches |
| CPU 16× Zen 5 / 32T | Default CPU EP | Fallback / unsupported ops |
The port is a matter of swapping the ONNX Runtime execution provider from CUDA to Vitis-AI (NPU) or DirectML/ROCm (iGPU). Same ONNX model file, different EP. That's essentially the whole job.
That's 100 CLIP inferences/sec plus 50 concurrent video decodes. The single most important fact:
This is the fact that decides everything on the inference side — pin it down before sizing anything:
| Variant | ~GFLOPs / image | Compute @ 100 inf/s | On Ryzen AI Max |
|---|---|---|---|
| ViT-B/32 | ~4.4 | ~0.44 TFLOPs/s | Trivial — a rounding error on this chip |
| ViT-L/14 | ~80 | ~8 TFLOPs/s | Real load, but comfortably in iGPU territory — size it properly |
B/32 laughs it off. L/14 is fine on the iGPU but no longer "free." Compute is not the limiting factor either way — but which variant sets how much headroom you keep.
The scaling stress isn't CLIP — it's the front of the pipeline:
Memory bandwidth (256 GB/s unified) is a non-issue at this frame budget.
On paper this is very doable on a single Ryzen AI Max. The inference budget is small (trivially so for B/32), and the chip's whole pitch is efficient always-on vision. The two things that actually decide it:
Where Nvidia still pulls ahead: NVDEC offers very high concurrent-decode limits, and TensorRT gives mature batched inference with day-one tooling. If decode concurrency turns out to be the wall, that's the axis where a discrete card wins. If it's about efficient, quiet, always-on lightweight vision at modest fps, Ryzen AI Max is the better-fitting box.