When you call a model through Hugging Face's Inference Providers router, someone else runs it. Which someone is not obvious from the model ID, and it changes.
The routing table is public. No token:
curl -s https://router.huggingface.co/v1/models
As of 2026-08-28 that returns 135 models across 14 providers. Counted by how many models each one backs:
featherless-ai 66 cohere 12
novita 65 baseten 11
deepinfra 62 scaleway 8
zai-org 19 ovhcloud 7
together 17 publicai 7
nscale 17 groq 3
fireworks-ai 14 cerebras 2
The long tail is the interesting bit. openai/gpt-oss-120b is served by 11 of the 14: baseten, cerebras, deepinfra, featherless-ai, fireworks-ai, groq, novita, nscale, ovhcloud, scaleway and together. zai-org/GLM-5.2 by 8. moonshotai/Kimi-K3 by 5.
So for a popular open-weight model you are not picking a provider, you are accepting a routing decision — and providers differ enormously in latency and context handling for the same weights. If you have measured gpt-oss-120b on Groq and are getting different numbers through the router, that is why: you may not be on Groq.
To pin one, pull the provider list per model:
curl -s https://router.huggingface.co/v1/models \
| jq -r '.data[] | select(.id=="openai/gpt-oss-120b") | .providers[].provider'
Then address that provider explicitly rather than letting the router choose.
Worth noting Groq backs only 3 models here and Cerebras only 2, despite both being the usual answer to "which is fastest". Their catalogs are small by design; the router's bulk comes from featherless-ai, novita and deepinfra, which carry sixty-plus each.
I benchmarked the fast providers against each other here: Groq vs Cerebras vs Gemini speed
Top comments (0)