Taking AI from Pilot to Production
A field guide to the seven decisions that separate an AI experiment from a system your organization can operate.
Lire la noteNotes de terrain / Dernières nouvelles
Des notes d’ingénierie issues de l’exploitation d’infrastructures ouvertes : pannes, décisions de conception et travail upstream qui améliorent l’infrastructure ouverte.
Parcourir toutes les notesA field guide to the seven decisions that separate an AI experiment from a system your organization can operate.
Lire la noteCompare public, private, and hybrid cloud by cost, security, performance, compliance, operations, and workload fit to choose the right model for your workloads.
Lire la noteHow to choose between a consumption-priced API and dedicated capacity with some sample costs.
Lire la noteA field guide to the seven decisions that separate an AI experiment from a system your organization can operate.
An AI pilot that reaches the production conversation has usually already shown that the model can produce a useful answer. What stalls the transition is a different category of problem.
A pilot is a demonstration; a production system is an operational commitment. That commitment requires decisions about where the workload runs, how data is handled, who is accountable at 2 a.m., what happens when the model needs to change, and what the whole thing costs at real volume. Those decisions tend to arrive together, often in a security review, and often after someone has told an executive that the hard part is finished.
This guide organizes them into seven questions, in roughly the order production forces them.

One risk at this stage is scope that was never defined. "We're putting AI into customer support" is a direction rather than a workload. A workload has a task, an input, an acceptable output, a volume, a latency expectation and an owner.
The definition matters because every subsequent decision depends on it. Model selection, hardware sizing, placement and the commercial model are all downstream of the task profile, and a workload defined only as "AI" will generate an infrastructure design that fits nothing in particular.
The test: can you write one sentence describing what must run, for whom, how often, and what a good result looks like? If not, that's the first piece of work, and it isn't an infrastructure problem.
Go deeper
Training and inference are genuinely different, but the usual shorthand (training is bursty and latency-tolerant, inference is continuous and latency-sensitive) describes some deployments and misleads about plenty of others.
Training is often batch-oriented and distributed across many devices with synchronized communication between them. Whether it arrives in bursts, though, depends on your organization rather than on the technique: a research group with a steady queue of experiments runs training as a continuous load. Fine-tuning spans an especially wide range, and a low-rank adaptation on a single device has little operationally in common with a full fine-tune spread across a cluster.
Inference divides at least as sharply. Online serving behind a user-facing application is latency-sensitive and sized around concurrency. Batch inference, which is scoring a document backlog, generating embeddings for an index, running an offline evaluation, is throughput-oriented and can usually afford to wait. Those two want quite different things from the same hardware.
So the useful question isn't which category you're in, but what each workload needs from the platform: how tolerant of latency it is, how large an allocation it requires, whether its processes must run simultaneously or can trickle in, and how much isolation it needs from its neighbours.
Shared infrastructure can carry all of it, provided the platform offers the right primitives. On Kubernetes, vendor device plugins advertise accelerators to the cluster as extended resources that pods request by count, while node labels combined with selectors, affinity rules and taints, are what let you distinguish device types and capabilities rather than treating every accelerator as interchangeable (Kubernetes GPU scheduling). Alongside that you want isolation strong enough that a batch job can't degrade an online endpoint, and queuing with priorities so low-urgency work absorbs capacity that would otherwise idle.
Synchronized distributed jobs need one thing more. A job requiring sixteen devices that manages to start only eight can sit holding them while everything else queues behind it. Kueue addresses this in two stages: it admits a workload only when quota exists for the whole of it, and its waitForPodsReady setting then monitors whether every pod actually reaches ready state within a configured timeout, evicting and requeueing the workload if they don't (Kueue: sequential admission and wait-for-pods-ready). The two stages do different jobs, and it's the startup timeout rather than the admission check that stops a partially started job from occupying devices indefinitely.
Go deeper
Placement is often presented as a technical question and settled as a governance one.
Three constraints tend to drive it: where data may be processed and retained, what latency the application requires, and what the organization has committed to its own customers or regulators. These frequently surface late, when a security or procurement review examines a pilot that had been quietly running against a public API.
Placement works better as a design input than as a discovery. Hosted, customer-premises and public-API paths are each appropriate under different conditions, and residency-aware deployment options are better designed for explicitly than claimed generically. Compliance depends on the configuration selected and on responsibilities shared between provider and customer, which is why "is it compliant?" is rarely answerable before "compliant with what, under which configuration?"
Go deeper
Buying accelerators is a procurement event. Making them useful is an engineering programme, and the gap between the two is where a great deal of capital sits idle.
Between a rack of GPUs and a production workload sit a control plane, a tenancy model, a storage design, a network fabric, a scheduler and an access model, each of which is a decision. Get the storage design wrong and expensive accelerators wait on data. Get the scheduler wrong and jobs needing eight devices simultaneously never start, because the free capacity is fragmented across nodes. Get tenancy wrong and one team's experiment degrades another team's production endpoint.
Worth asking of any newly built cluster: was the environment around the hardware designed, or assembled? Capable hardware in an assembled environment can underdeliver, and the symptom often presents as utilization nobody can account for.
Go deeper
A pilot is observed by the people who built it. A production system has to be observable by people who didn't.
Conventional infrastructure monitoring doesn't answer the questions AI workloads raise, because the standard utilization metric reports whether a device was busy rather than whether it was productive, and because accelerated infrastructure can degrade without a hard failure. Useful instrumentation spans four layers: hardware health, device efficiency, scheduler behaviour and serving performance. The operational value comes from correlating across them during an incident rather than from any single dashboard.
Instrumentation is also what makes the economic questions answerable, though not in the way the shorthand suggests. Sustained utilization alone doesn't settle whether dedicated capacity beats consumption pricing. That comparison also depends on the throughput your capacity achieves at the latency you actually require, how variable demand is across the day, how much headroom you hold for availability, how well the hardware suits the model, and what operating the platform costs.
Device activity metrics won't get you there on their own either. Profiling counters can report how busy the streaming multiprocessors were, how much memory bandwidth was consumed and whether the tensor pipelines were engaged (NVIDIA DCGM profiling), but a device can post healthy activity while producing nothing anyone asked for. Establishing productivity means joining those signals to scheduler behaviour:
and to application-level outcomes, meaning requests actually served inside the latency target. Any one of those layers, read alone, can produce an incomplete picture.
Go deeper
Pilot economics and production economics answer to different pressures. A pilot's cost may be immaterial next to the engineering time spent on it; a production workload's cost becomes a line item finance will examine.
The useful unit is cost per successful outcome rather than cost per token or cost per GPU hour, because that framing surfaces the expenses token accounting hides: retries, unused output, evaluation traffic, and workflows that call the model more often than they need to. Where the reductions actually come from varies enough by workload that it's better to treat these as candidates to test than as a ranked list. These are calls the system could avoid making at all, models larger than the task requires, and serving configurations never tuned to the workload's real input-to-output ratio.
Go deeper
The final question is the one a pilot can most easily defer. Production means someone owns monitoring, upgrades, incidents, capacity planning and model changes, continuously, including at inconvenient hours.
Two failure patterns are worth checking for. In the first, nobody owns it, and the team that built the pilot absorbs operational work informally until it displaces the work they were hired to do. In the second, ownership is assumed to sit with a vendor whose actual scope turns out to be narrower than anyone realized, which tends to become apparent during the first serious incident.
Change is the closely related question. The model you deploy may not be the one you want to run a year from now, and an architecture treating the current choice as permanent will need rebuilding rather than adjustment. Designing for a stable application interface while the serving path evolves is what keeps that adjustment affordable, and it's a more credible goal than avoiding lock-in altogether.
Go deeper
Each question above is the same question asked at a different layer: has this decision been made deliberately, or was it inherited from whatever was convenient during the pilot?
Pilots are optimized for speed, which is correct, since they exist to find out whether something works at all. The difficulty is that every shortcut taken to reach a working demonstration becomes a default in production unless somebody revisits it. Placement defaults to whatever the API was. Model choice defaults to whatever was available when the team started. Operations default to whoever built it. Cost defaults to whatever the invoice says.
Production readiness is largely the work of converting those defaults back into decisions.
The VEXXHOST AI portfolio is organized around that conversion, in three offers you can use separately or connect:
Each offer stands on its own. What connects them is one accountable partner, with strategy, application integration, inference and infrastructure sitting inside a single engineering organization instead of being distributed across the seven questions above.
You don't need all seven answers before starting. You need to know which one is blocking you.
If the blocker is question 1 rather than questions 2 through 7, book an AI consultation instead.
Choose from Atmosphere Cloud, Hosted, or On-Premise.
Simplify your cloud operations with our intuitive dashboard.
Run it yourself, tap our expert support, or opt for full remote operations.
Leverage Terraform, Ansible or APIs directly powered by OpenStack & Kubernetes