Most AI tasks no longer need a frontier model Read launch post
← All Posts

Serving One Base Model With Many LoRA Adapters

One shared base model connected to several LoRA adapter cartridges

LoRA changes the economics of specialisation. A team can train small weight updates for a customer, legal domain, or language while keeping one shared base model.

Training the adapter is only the first half of the job. Production serving needs to load the right adapter, batch compatible requests, protect real-time traffic from batch work, and expose enough telemetry to diagnose a slow or inaccurate specialist.

The adapter may be small. The serving problem is still real.

Share the base, isolate the work

A LoRA adapter contains low-rank weight updates. During inference, the runtime combines those updates with the base model. Several adapters can remain available beside one copy of the base weights, which avoids loading a complete model for every specialism.

One example discussed in the session used an 8 billion parameter base with about 20 adapters in memory. Production teams have used adapters per customer, domain, or language. Deployments with tens of adapters are practical today; a fleet of hundreds needs careful testing.

The important unit is the request. Each call must identify the base model, adapter, task profile, and traffic class. The gateway can then send it to a compatible worker and queue it with work the backend can batch correctly.

Batching rules depend on the backend

Multi-LoRA support varies across runtimes and model families. Some generation backends can batch requests using different adapters. Other paths work best when a batch contains one base model and one adapter. Encoder workloads may group compatible adapters under a different rule.

Expose those limits in the serving profile. Hiding them behind a universal API does not make them disappear.

The session example described one base plus one LoRA per batch, with several adapters held in memory. Separate adapter queues help the scheduler build useful batches without mixing incompatible work. They also prevent a high-volume customer from silently starving every other adapter.

Hot loading should follow a readiness gate. Register the adapter configuration, distribute the change, load it on a compatible worker, and run a real task. An accepted configuration is not proof that the adapter can serve traffic.

Separate batch and real-time pools

The same cluster can handle online and batch inference, but the two workloads should not compete without policy.

Real-time calls care about tail latency. Batch jobs care about total throughput. Give them separate logical worker pools or capacity assignments. Keep enough warm capacity for the online path, then let batch work consume the remaining envelope.

This avoids another full cluster deployment for every experiment. AI engineers can create an evaluation pool, run an adapter against held-out traffic, inspect the results, and release the pool. Platform engineers still own GPU capacity, worker images, access controls, and reliability.

The boundary matters. A logical pool manages assignments; it is not a hard security boundary. Workloads needing strict isolation may still require separate workers or infrastructure.

Track the adapter as part of the release

User feedback belongs in the application and agent system. The serving layer should still make every response traceable to the adapter and profile that produced it.

Record the base revision, adapter revision, queue time, model load state, execution latency, token counts, and API identity. Join those signals with task success and user feedback in the application.

That connection answers two different questions. An AI engineer can see whether a new adapter reduced task quality. A platform engineer can see whether the request waited for capacity, a cold model, or a busy worker.

Retraining then becomes a controlled loop. Collect reviewed failures, update the dataset, train a new adapter revision, replay held-out cases in an evaluation pool, and move traffic only after readiness and quality checks pass.

Multi-LoRA works when the contracts are explicit

Shared base weights can cut memory use and make specialisation cheap. They do not erase runtime constraints.

Define adapter compatibility, batching rules, capacity policy, and release metadata up front. With those contracts in place, a LoRA per customer or domain becomes an ordinary deployment unit instead of a collection of one-off model servers.

What teams ask about multi-LoRA serving

Can one base model serve several LoRA adapters?

Yes. A runtime can keep one base model and several small adapters available on the same workers. Each request selects the adapter needed for its customer, domain, language, or task.

Can requests for different LoRA adapters share a batch?

It depends on the backend and model family. Some generation runtimes support multi-LoRA batches. Other paths require one base and one adapter per batch. The serving profile should state the exact compatibility rule.

Can LoRA adapters be hot-loaded for online inference?

Yes, if the serving system supports live configuration and model loading. The adapter still needs a readiness check on a compatible worker before traffic moves to it.

How should batch and real-time LoRA traffic be separated?

Use separate worker pools or capacity assignments. Reserve warm capacity for the real-time path, then schedule batch work against the remaining resources. Measure end-to-end tail latency from the application.

Open source inference for agents

Open-source inference for the models behind your agents. Run it yourself, or let us run it for you.

Contact us

Tell us about your use case and we'll get back to you shortly.

Apply for an inference grant

Free capacity on our hosted cluster for selected projects. Tell us what you run and we reply by email.