AITraining2U

Programs

Resources

Case Studies

Quick Links

Enquire Now
AI Engineering

LLMOps: From Notebook to Something With an SLA

The demo worked. Now it needs to run every day, for real users, with someone accountable when it does not. That transition is where most AI pilots quietly die.

By Marcus Chia 2026-08-13 10 min read
Server infrastructure representing AI deployment operations

MIT research widely reported in 2025 found roughly 95% of generative AI pilots fail to scale into production impact. That number gets quoted a lot, usually to argue AI is overhyped. I read it differently: most of those pilots did not fail because the model was bad. They failed because nobody built the operational layer around it.

LLMOps is that layer. It is less glamorous than agent design and it is the actual difference between a demo and a product.

What is genuinely different from normal DevOps

Most DevOps practice transfers directly. Four things do not:

  1. Non-determinism. The same input can produce different output. Your test strategy cannot rely on exact-match assertions, which is why evaluation replaces conventional unit testing for the model-facing parts.
  2. The dependency changes underneath you. A provider can update a model behind the same API name. Your code did not change; your behaviour did. Pin model versions explicitly where the provider allows it, and treat an unpinned model as an unpinned dependency.
  3. Usage-based cost that scales with success. Traditional infrastructure cost is broadly predictable. Token cost scales with usage and can 10x from a retry loop shipped on a Friday.
  4. Prompts are deployable artefacts. They change behaviour, they need versioning, and they need rollback — but they are not compiled, so nothing forces you to treat them properly.

The deployment stack in practice

FastAPI is the default serving layer for Python AI services, and for good reasons: native async (essential, since you are I/O-bound on API calls), automatic OpenAPI docs, Pydantic validation built in, and straightforward streaming support for token-by-token responses.

Docker packages it with pinned dependencies. This single practice eliminates the largest category of "worked locally, failed in staging" incidents.

Where it runs matters less than teams think. Cloud Run, ECS, App Runner, a Kubernetes cluster you already operate — all fine. Choose based on what your team can operate at 2am, not on architectural elegance. For Malaysian organisations, region selection is often the binding constraint: PDPA and, for financial institutions, BNM RMiT expectations make "which region processes this data" a compliance question rather than a latency optimisation.

Versioning: four things that must be pinned

When behaviour changes, you need to know which of these moved:

  • Model version — pinned explicitly, not "latest".
  • Prompt version — in Git, tagged, and recorded on every trace.
  • Retrieval index version — re-embedding a corpus with a different model changes answers even with an identical prompt.
  • Application code version — the ordinary one.

If your traces record all four, then "quality dropped on Tuesday" is a five-minute investigation. If they record none, it is a week of guessing.

CI/CD when tests are probabilistic

A workable pipeline shape:

  1. Lint and unit tests for deterministic code paths — parsing, routing, validation, tool wrappers.
  2. Eval suite as a quality gate — run your dataset, post scores on the pull request, block the merge on regression past a threshold. This is where prompt changes get the same scrutiny as code changes.
  3. Canary deploy — route a small traffic percentage to the new version, compare online metrics.
  4. Automated rollback — triggered on error-rate or quality-score regression, not on someone noticing.

Step two is the one that separates teams who ship confidently from teams who ship nervously.

Cost control before it becomes a board conversation

  • Attribute cost per request, per feature, per tenant. Aggregate monthly spend tells you that you have a problem, not where it is.
  • Set hard caps. Per-user, per-tenant, per-day. A runaway loop should hit a ceiling, not an invoice.
  • Cache aggressively. Prompt caching on repeated context, and semantic caching for repeated questions, both cut real spend. In support workloads the same twenty questions dominate the distribution.
  • Right-size the model per task. Classification and routing rarely need your most capable model. Reserve it for the reasoning that justifies it.
  • Alert on trend, not just threshold. A 40% week-on-week rise matters even if you are still under budget.

What to page someone about

Distinguish alerts that need a human at 2am from dashboards someone reviews on Monday.

Page: error rate above threshold, p95 latency past SLA, cost spike beyond a hard cap, guardrail block rate spiking (usually an attack or a broken upstream input), provider outage.

Dashboard: quality score trends, token usage patterns, cost per feature, refusal and escalation rates, retrieval relevance drift.

Teams that page on quality scores burn out fast — those numbers are noisy by nature. Page on availability and cost; review quality on a cadence.

The minimum viable production setup

If you are moving your first system to production this quarter: FastAPI in Docker with pinned dependencies, prompts versioned in Git and stamped on every trace, an eval suite gating pull requests, OpenTelemetry tracing to a self-hosted collector, hard cost caps with alerting, guardrails on input and output, and a tested kill switch operations can flip without an engineer.

That is perhaps two weeks of work for someone who has done it before. It is also the difference between joining the 95% and joining the 5%.

Our AI Engineering programme covers deployment, evaluation, observability and cost control for production AI — HRD Corp SBL-KHAS claimable for eligible Malaysian employers.

Frequently Asked Questions

LLMOps is the operational practice of deploying and running LLM-based systems. Most DevOps practice transfers, but four things differ: outputs are non-deterministic so exact-match testing does not work, the model dependency can change underneath you when a provider updates behind the same API name, cost is usage-based and scales with success rather than being broadly fixed, and prompts are deployable artefacts that change behaviour but are not compiled — so nothing forces you to version them properly.

Split the pipeline. Run conventional lint and unit tests against deterministic code paths — parsing, routing, validation, tool wrappers. For model-facing behaviour, run an evaluation suite as a quality gate: score your dataset, post results on the pull request, and block merges that regress a key metric past a threshold. Then canary deploy to a small traffic percentage and automate rollback on error-rate or quality regression.

Four things, all recorded on every trace: the model version (pinned explicitly, never 'latest'), the prompt version (in Git, tagged), the retrieval index version (re-embedding a corpus changes answers even with an identical prompt), and application code. When behaviour shifts, having all four stamped on traces turns a week of guessing into a five-minute investigation.

Attribute cost per request, per feature and per tenant — aggregate monthly spend tells you a problem exists, not where. Set hard per-user and per-day caps so a runaway loop hits a ceiling rather than an invoice. Cache aggressively (prompt caching for repeated context, semantic caching for repeated questions — support workloads are dominated by the same twenty questions). Right-size the model per task; classification rarely needs your most capable model. Alert on week-on-week trend, not only absolute threshold.

MIT research widely reported in 2025 put the figure at roughly 95%. In practice the failures are rarely about model capability — they are about the missing operational layer: no evaluation so nobody can prove a change helped, no versioning so nobody can explain a regression, no cost controls so unit economics never worked, no observability so failures are invisible, and no rollback path so shipping feels dangerous. The model was usually the part that worked.

Build AI systems that hold up in production

Evaluation, observability and guardrails are what separate a demo from a system your business can depend on. AITraining2U runs hands-on, HRD Corp SBL-KHAS claimable AI training for Malaysian organisations — tool-agnostic and mapped to your actual stack.