Service
AI Infrastructure
Serving models like production systems, not demos
The problem
What usually goes wrong
A model that works in a notebook rarely survives contact with production traffic. GPUs do not behave like web servers: concurrency degrades them chaotically rather than gracefully, request cost varies by two orders of magnitude, and capacity is bound to a loaded model rather than to a host. Teams discover this the first time a batch job and an interactive user hit the same card.
Typical challenges
What we see in the wild
Conventional load balancers spread traffic evenly and make tail latency worse, because "least connections" treats a 10-token completion and a 2,000-token generation as equal work.
Model load times are measured in minutes, so capacity cannot be scaled reactively the way a stateless service can.
Without per-route cost and throughput metrics, nobody can answer what inference actually costs.
GPU memory pressure and KV-cache contention are invisible to standard infrastructure monitoring.
Giving an agent raw shell access to fix any of the above trades one problem for a much worse one.
Our approach
How we work through it
- 01
Control concurrency, don't just distribute it
We admit work to a GPU based on live worker load, queue depth, measured latency and real token throughput, rather than round-robin. A consistent 30 tok/s beats a spiky 45 tok/s for every consumer downstream.
- 02
Make routing decisions observable
Every scheduling decision is logged with its full scoring breakdown, and throughput and latency are tracked as moving averages that survive restarts. When a request is slow, you can say why.
- 03
Instrument before optimising
Prometheus metrics and Grafana dashboards come first. Performance work without a baseline is guesswork, and GPU workloads punish guesswork particularly hard.
- 04
Automate provisioning
Multi-GPU hosts are provisioned with Ansible: one inference server per GPU, each with its own model, port, parameters and systemd unit. Rebuilding a node is a playbook run, not an afternoon.
- 05
Give agents safe tools, not shells
Where AI agents touch infrastructure, they get high-level audited operations with validated inputs and structured output — never raw command execution.
Deliverables
What you get
- Inference gateway with model-aware routing, queueing and failover
- Per-GPU serving topology, provisioned as code
- Prometheus metrics and Grafana dashboards for latency, throughput and queue depth
- Capacity and cost model based on measured throughput
- MCP tooling for agent-driven operations, with an audit trail
- Runbooks and handover documentation
Technology
What we build with
- Go
- llama.cpp
- vLLM
- Redis
- Prometheus
- Grafana
- Ansible
- Docker
- MCP
- NVIDIA DCGM
FAQ
Questions we get asked
- Can you work with our existing models and weights?
- Yes. The routing and serving layer is model-agnostic — it cares about worker health, queue depth and throughput, not about which weights are loaded. We have run this pattern across mixed fleets where each GPU serves a different model.
- Do we need to move to the cloud?
- No. Much of this work is on self-hosted GPU hardware, which is frequently the cheaper option at steady utilisation. We help you decide based on your actual utilisation curve rather than a default preference.
- How do you handle a GPU failing mid-request?
- Unhealthy workers are removed from the eligible set, in-flight work is retried against a healthy worker where the request is idempotent, and the failure is surfaced as a metric rather than an opaque timeout for the caller.
- What does a typical engagement look like?
- Usually a short assessment of the current serving path and its observability gaps, then an implementation phase delivering the gateway, provisioning and dashboards, then handover. Scope and duration depend on how much already exists.
Want to talk through your ai infrastructure problem?
A discovery call is free and technical — no sales script.