Reddit - r/programming

Vendor-agnostic ML inference on production edge devices

I work on PostSlate, a video editing tool, and this comes out of our own work. We run ML models on-device - face detection and embedding, among other things - which means we can't assume anything about the user's GPU. NVIDIA discrete, AMD, Intel integrated, Apple Silicon, all of it. That rules out CUDA immediately; we needed one backend that runs everywhere. We landed on ncnn's Vulkan backend.

Performance numbers on a 4070 (fp16)

  • ArcFace R50 (face embedding): 30 ms on ONNX CPU โ†’ 3 ms on ncnn Vulkan
  • SCRFD (face detection): 25 ms โ†’ 2.5 ms
  • Model size: ArcFace 174 MB (ONNX fp32) โ†’ 87 MB (ncnn fp16 weight storage)

Of course, the real speedup comes from offloading compute to the GPU, but this wouldn't be possible without the power of Vulkan. The speed wasn't even the deciding factor - it's that Vulkan drivers already exist on every machine we ship to. This means that we don't have to force the user to download a specific runtime and no vendor-specific installs.

Full writeup with the rest of the numbers: https://getpostslate.com/blog/faster-local-inference

Comments

No comments yet. Start the discussion.