Chapter 0 · Inference
Where to put the abstraction
0.5

Where to put the abstraction

Once the runtime and infrastructure work exists, somebody has to decide how it is exposed. This applies whether you are buying inference from a provider or building a platform for your own engineers; the question is the same either way.

At one extreme, inference is a black box: hand over weights, receive an API. At the other, you get compute, network, and disk, and everything above that is yours. Both extremes are defensible and most teams belong somewhere between them.

You get

Weights in, autoscaled endpoint out. Engine choice and a handful of serving knobs are yours; the cluster underneath is not.

You give up

Kernel-level control and the ability to do anything genuinely unusual with scheduling or routing.

SuitsTeams serving open or fine-tuned models who would rather ship features than run Kubernetes.

Hand it to someone elseOwn every layer

How much of the stack do you want to own?. Control and productivity trade against each other along this axis. Take as much abstraction as your requirements allow, and give up productivity only where something you need demands the control.

I would push most teams further toward abstraction than instinct suggests. Owning the whole stack is satisfying and it is occasionally correct, but it is a standing commitment of engineering time that competes directly with the product. Keep only as much control as you have a concrete use for.