Guides

Rivvr article cover reading ‘A Better Way to Run Fine-Tuned LLMs on AWS’

Getting a fine-tuned LLM into production is usually not the hard part.

A team can take a model, deploy it with vLLM or SageMaker, put an endpoint in front of it, and start serving traffic. For an early product, that setup can work well for a long time.

The problem starts as the product grows.

Model updates become more frequent, production traffic becomes less predictable, and latency starts to matter to the user experience. The infrastructure that was originally “set up once” gradually becomes something the engineering team has to operate every week.

This is the point where many AI startups accidentally start building an inference platform.

A model update should not become an infrastructure project

Imagine a team running a fine-tuned model in production on AWS.

The model is working well, but the ML team has a new fine-tune that improves quality enough to ship.

Before putting it into production, someone needs to answer a few questions.

Will the new model have the same tokens-per-second performance? Does it use more GPU memory? What happens to time to first token under production concurrency? Can the current replica count still handle peak traffic? Does the autoscaling configuration still make sense?

So the team runs another benchmark and another load test.

They adjust the serving configuration, deploy the new version, watch dashboards, and wait to see whether production behaves like the test environment.

If something looks wrong, an ML infrastructure engineer starts investigating.

None of this work improves the model.

It is the work required to make the infrastructure around the model safe enough to ship.

And when the team releases another fine-tune two weeks later, much of the process starts again.

Six-step LLM deployment workflow: new fine-tuned model, load test, infrastructure tuning, deployment, production monitoring, and iteration

This is the first problem Rivvr is designed to remove: model velocity should not be limited by inference infrastructure work.

The infrastructure keeps changing even when nobody wants to touch it

After a model is deployed, the workload does not stay fixed.

Users send longer prompts. Concurrency changes throughout the day. A product launch creates a new traffic pattern. A new customer sends a very different mix of requests. The next model version has different memory and performance characteristics.

At the same time, the serving stack itself keeps moving. vLLM changes, CUDA changes, drivers change, Kubernetes changes, and infrastructure components need upgrades.

Someone has to keep checking that the system still behaves the way the application expects.

This is where production LLM inference becomes an operations problem.

The team is no longer just running a model. It is maintaining a system made of the model runtime, GPU infrastructure, scaling, routing, monitoring, and the assumptions that connect all of those pieces.

A startup may have chosen SageMaker specifically to avoid building all of this infrastructure itself, but managed infrastructure does not remove every operational decision around the workload.

The team still needs to know whether the deployment is healthy and whether its current configuration still fits the model and traffic.

Over time, one engineer usually becomes the person who understands all of it.

What if the application requirement was the configuration?

Rivvr approaches the problem from a different direction.

Instead of asking the team to describe how the inference infrastructure should run, Rivvr asks what the application needs from it.

For example:


Rivvr deployment policy panel for defining model SLO targets, token sizing, throughput guardrails, and cost limits

There is no requirement for the application team to decide that the model needs a specific GPU type, a specific number of replicas, or a particular scaling threshold.

Those are implementation details.

The actual requirement is that users receive responses within the latency the product needs.

Rivvr continuously operates the infrastructure underneath that requirement.

The SLO becomes an input. The infrastructure becomes an output, and Rivvr continusly attain SLO target:

Rivvr monitoring dashboard showing time-to-first-token latency metrics and a p50 and p90 performance chart

The important part is what happens after deployment

A one-time infrastructure recommendation would not solve the problem.

The useful part is that the requirement remains live.

Imagine the endpoint is already serving real production traffic with this target:


The team launches a more interactive version of the product and decides the experience now needs tighter latency.

They open Rivvr and change the target:


They save the change.

Rivvr deployment policy panel updated with speed-focused SLO targets for p50 and p90 time to first token

The team does not need to work out whether the answer is another replica, a different GPU, more warm capacity, or a different fleet configuration.

Rivvr observes the production workload and re-adjusts the serving infrastructure around the new requirement.

The endpoint stays live while the underlying workload changes.

The application still calls the same API. The ML team does not need to redeploy the application or rewrite its infrastructure configuration.

Once the system has adapted, the live deployment can be measured against the new target:

a

This is the part that changes the workflow.

The engineer changed what the application needs, not how the GPU infrastructure should produce it.

Performance becomes something the platform owns

For many AI products, inference latency is part of the product itself.

Voice AI cannot tolerate unpredictable time to first token. Coding assistants feel slow when tail latency increases. Interactive agents become frustrating when queues build during traffic spikes.

Teams usually protect themselves by leaving enough GPU capacity available to handle the workload safely.

That works, but it also means the team has to keep understanding where the safe operating point is.

Rivvr turns that into an ongoing control problem handled by the platform.

As traffic and model behavior change, Rivvr continues evaluating whether the current deployment is appropriate for the required performance.

The goal is not to give the team a better set of infrastructure knobs.

The goal is to make those knobs unnecessary for the normal workflow.

What changes for the engineering team

Without Rivvr, a new model version can mean:

Traditional LLM operations workflow: model update, load testing, serving configuration, capacity validation, production monitoring, and manual tuning

With Rivvr, the workflow becomes:

Rivvr workflow: model update and performance requirement feed into Rivvr, which produces a production endpoint

The engineering team still owns the things that should belong to them:

  • the model

  • model quality

  • application behavior

  • the performance users need

Rivvr owns the continuously changing infrastructure underneath:

  • serving infrastructure

  • deployment adaptation

  • scaling

  • routing

  • capacity

  • ongoing infrastructure tuning

That is what we mean by zero-ops LLM inference.

The goal is not less control. It is less infrastructure work.

Scaling AI startups eventually reach a choice.

They can keep adding tooling and people around their inference stack, or they can move the operational boundary higher.

Rivvr is built for the second approach.

You keep running your fine-tuned LLMs inside your AWS environment. Your models and inference workloads remain there.

But instead of your team continuously translating model behavior and production traffic into GPU infrastructure decisions, Rivvr does that work for you.

The result is a simpler way to run production LLM inference:

Ship the model, define the performance the product needs, and let the infrastructure follow.

See it running on your setup

See it running on your setup