Skip to main content
Preview

How it works

Specialized Model Inference runs your LoRA adapters on Fireworks’ shared serverless pool. You don’t create or pay for a deployment. You load an adapter, call it like any serverless model, and pay per token at the base model’s price.

Supported models and limits

Adapters must be trained on a supported model: Adapters load on this serverless base model: We plan to support more base models over time. Adapters trained on any other base model can’t be loaded onto serverless - please use a dedicated deployment. Each account can load up to 3 LoRA adapters per base model at a time. Loading a fourth returns ResourceExhausted. Unload an adapter to free up a slot. If you need more slots, contact inquiries@fireworks.ai or your account team.

Get started

Go from a dataset to a live adapter in three steps. You need firectl 1.8.15 or later.
1

Install or upgrade firectl

2

Sign in

firectl acts on the account you sign in to. If you belong to more than one account, pass -a <ACCOUNT_ID> on each command, or check which account is active before loading anything.
3

Set your variables

Fill these in once. Every command below reads them.
The examples name the adapter my-lora and train it on GLM 5.3 Flash (accounts/fireworks/models/glm-5p3-flash). Replace my-lora with your adapter’s ID wherever it appears.

Step 1. Train a LoRA adapter on a supported model

Skip this step if you already have an adapter in the READY state on a supported base model.
Train on Fireworks’ shared serverless trainer pool with the Serverless Training API. You pay per token and don’t provision a trainer.
1

Install the cookbook

2

Run serverless SFT

Save this as train_my_lora.py in the cookbook folder and point dataset at a chat-format JSONL file. serverless=True runs the job on the serverless trainer pool. lora_rank must be 64 or lower. When training finishes, output_model_id saves the adapter to your account as my-lora.
3

Check the adapter

The adapter is ready to load when its state is READY.

Step 2. Deploy it on serverless

Loading takes under 5 minutes. When it’s done you’ll see:
text
Check what’s loaded, on serverless and on any dedicated deployments:
text
firectl model get my-lora shows the same copies under Deployed Model Refs. A trained adapter with no refs is READY but not loaded, and calls to it return 404.A copy can sit in DEPLOYING until it receives its first request. If the state hasn’t moved after the load command returned, send one request; the first call completes the load.

Step 3. Call the serverless endpoint

Send the same prompt to the base model and to the adapter, and compare the two replies. The example needs jq.
GLM 5.3 Flash is a reasoning model and thinks at maximum effort unless you set reasoning_effort. Without it, a 300-token cap can be used up by the hidden reasoning and content comes back empty. Set reasoning_effort to low for an adapter trained on short answers, or raise max_tokens.
The first request after loading a LoRA adapter can take up to a minute. Later requests have much lower latency. See Latency.

Which model string to use

There is no #serverless suffix. Use one of these:

Clean up: unload the adapter

Unloading frees one of your account’s 3 adapter slots for that base model. firectl takes the adapter ID; REST takes the deployed model ID.
--wait returns once the adapter is fully unloaded. Without it, the command returns right away and calls to the adapter can keep succeeding for a short time.

Try a public adapter

Fireworks keeps a public adapter loaded on serverless. Any account can call it with an API key, and you don’t need to load it. accounts/fireworks/models/glm5p3-flash-us-caveman-lora is a rank-64 adapter on GLM 5.3 Flash, trained to answer in as few words as possible.
The example needs jq.
text
The base model’s wording varies from run to run. If the adapter has been idle, its first reply can take a few extra seconds while it loads back onto a GPU.

Serverless or dedicated?

Pricing

You pay per token at the base model’s serverless price, for the tokens the adapter processes. There is no charge for loading an adapter, for keeping it loaded, or for the time it sits idle. Training is billed separately by the training product you used.

Performance

Latency

  • Loading takes under 5 minutes.
  • The first request after loading a LoRA adapter downloads it onto a GPU and can take up to a minute. Set the client timeout to at least 300 seconds.
  • Later requests have much lower latency, about the base model’s speed.
There are no latency guarantees during the preview. If you need consistent latency, use a dedicated deployment.

Rate limits

Adapter traffic has its own rate limit, separate from base-model traffic, with the same quota as the GLM 5.3 Flash serverless rate limits. When you exceed it, requests return 429. Retry with exponential backoff.

Quality

Training is run at a higher numeric precision than serving. On serverless, the model may be quantized to improve performance. Fireworks runs rigorous tests on quality and we also recommend that users evaluate task-level metrics on a sufficiently large held-out set. If you need higher-precision serving, please use a dedicated deployment.

Observability

You can see traffic split by LoRA adapter on the Serverless tab of the Fireworks dashboard. Input usage by adapter on the Serverless dashboard, showing cached and uncached input tokens for each adapter

Access and privacy

  • Only the account that owns an adapter can call it. Other accounts get 404. Public adapters, like the one above, are the exception.
  • Your adapters run on GPUs shared with other customers’ adapters.
  • Model-access policies apply through the base model: allowing a base model allows its adapters, and blocking it blocks them.

Troubleshooting

Next steps

API reference

Load, list, get and unload adapters over REST

Multi-LoRA on dedicated

When serverless stops being the right fit