You can also upload and deploy LoRA models fine-tuned outside of Fireworks. See importing fine-tuned models for details.
Choosing a deployment method
Fireworks offers two ways to deploy LoRA fine-tuned models. The right choice depends on how many fine-tuned variants you need to serve and your performance requirements.Live merge deployment
Live merge is the simplest way to deploy a fine-tuned model. Fireworks automatically merges the LoRA weights into the base model at deployment time, producing a model that performs identically to a natively fine-tuned model with no inference overhead.How it works
When you deploy a LoRA model directly, Fireworks:- Takes your LoRA adapter weights and the base model
- Merges them into a single set of weights at deployment time
- Serves the merged model as a standalone deployment
Deploy with live merge
Deploy your LoRA fine-tuned model with a single command:Your deployment will be ready to use once it completes, with performance that matches the base model.
Sending requests
Send inference requests to your live-merge deployment by referencing the deployment directly:- Python (Fireworks SDK)
- curl
When to use live merge
- You need maximum inference performance (latency and throughput matching the base model)
- You are serving a single fine-tuned model in production
- You want the simplest possible deployment workflow
Multi-LoRA deployment
Multi-LoRA lets you load multiple LoRA adapters onto a single base model deployment. This is useful when you have several fine-tuned variants of the same base model and want to share GPU resources across them rather than creating a separate deployment for each.How it works
With multi-LoRA:- You deploy the base model with addon support enabled
- You load one or more LoRA adapters onto the running deployment
- At inference time, the correct adapter is selected and applied dynamically based on the model specified in the request
LoRA addon shape compatibility
Not all deployment shapes support LoRA addons. FP8 and FP4 quantized shapes do not support--enable-addons.
Many base models default to FP8 or FP4 shapes. If you need LoRA addon inference on one of these models, you have two options:
Option 1 — Use a BF16 deployment shape
--enable-addons. See Uploading custom models and firectl model create.
"addons cannot be enabled with quantized precisions (FP8/FP4)" — your model’s default shape is quantized; use Option 1 or 2 above."the deployment shape version does not exist or you do not have access to it" — the shape you requested is not available on your account; contact support.Deploy with multi-LoRA
1
Create base model deployment with addon support
Deploy the base model with addons enabled:
2
Load LoRA adapters
Once the deployment is ready, load your LoRA models onto the deployment:Repeat this command for each LoRA adapter you want to load.
Sending requests
To route inference requests to a specific LoRA adapter on a multi-LoRA deployment, set themodel field to <model_name>#<deployment_name>. The # separator tells Fireworks to route the request to the specified adapter on the given deployment.
- Python (Fireworks SDK)
- Python (OpenAI SDK)
- JavaScript
- curl
When to use multi-LoRA
- You need to serve multiple fine-tuned models based on the same base model
- You want to maximize GPU utilization by sharing a single deployment
- You are running experiments or A/B tests across multiple fine-tuned variants
- You can accept some performance overhead compared to live merge
Downloading model weights
You can download your fine-tuned weights from Fireworks to inspect them, extend the context locally, or serve them outside the platform. There are two things you might want: the LoRA adapter on its own, or the merged (base + adapter) model.Download the LoRA adapter
LoRA adapters are listed alongside models infirectl model list (denoted with the type HF_PEFT_ADDON). Download one with the same command used for any model:
firectl model download for flags.
The adapter alone is not enough to run inference. You also need the matching base model. The adapter was trained against a specific base (for example, a vendor checkpoint that may differ from the public Hugging Face weights), so pair the adapter with the exact base it was trained on. If you are unsure which base was used, ask your Fireworks contact before assuming the public Hugging Face weights are identical.
Download the merged (base + adapter) model
On the platform, the merge happens on the fly at deployment time (live merge), so serving a fine-tuned model does not require a standalone merged file. To produce a merged copy you can run off-platform, download the base and the adapter, then merge them locally in BF16 with PEFT:- Download the base model with
firectl model download. - Download the LoRA adapter with
firectl model download. - Load the base model, wrap it with
PeftModelto load the adapter, callmerge_and_unload(), and save the merged model.
FP8 (and other quantized) merged weights
If you want an FP8 merged model to run off-platform, merge in BF16 first, then quantize the merged result yourself. For reference, the on-platform serving path is:- Keep the BF16 base + BF16 LoRA adapter.
- At deploy, merge in BF16:
W' = W_bf16 + (B·A)_bf16. - Quantize the merged BF16 weights to FP8 on the fly at serving time.
Performance considerations
Live merge eliminates all LoRA-related inference overhead because the adapter weights are baked into the model at deployment time. The resulting deployment behaves exactly like a natively fine-tuned base model. Multi-LoRA deployments incur overhead because adapters are applied dynamically:- Time to first token (TTFT): Increases by roughly 10–30% due to adapter loading and prompt processing overhead
- Generation speed: Overhead grows with higher request concurrency
- Maximum throughput: Lower than a live-merge deployment under sustained load
Troubleshooting
Silent deployment-shape drop (multi-LoRA lands on the default serving image)
This is a subtle failure mode specific to multi-LoRA deployments. If the deployment shape you request is not validated for the exact base model version you are deploying, deployment create does not return an error. The unvalidated shape is silently dropped, and the deployment quietly falls back to the default serving image. That default image’s addon loader then rejects addon (multi-LoRA) checkpoints, so you end up seeing base-model behavior or an addon-load failure with no obvious cause. Why it happens. A deployment shape is validated against a specific base model version, not just a model family. A shape such asdeploymentShapes/<model>-h200-multilora may have validated versions that bind one model version but not another version of the same family. Deploying a model version that no validated shape version binds triggers the silent drop.
How to detect it. Before (or after) creating the deployment, confirm a validated shape version exists for the exact model version you are deploying, not just the family. List the validated shape versions for your model:
latest_validated=true filter (see List Deployment Shape Versions):
- No validated shape version lists your exact model version under
snapshot.base_model(every validated version binds a different version of the same model family). - The deployment comes up serving base-model behavior instead of your fine-tune.
- Loading an addon (a Tinker or other LoRA checkpoint) is rejected even though the shape you requested supports addons.
- Deploy only against a shape version that is validated for your exact model version, confirmed with the check above.
- If no validated shape version binds your model version, do not rely on the shape argument being honored. Ask your Fireworks account team to validate a deployment shape version for that model version first. A shape validated only for a sibling version will be dropped.
- As an alternative that avoids multi-LoRA and the addon loader entirely, live merge the single adapter, which does not go through the addon path.
Next steps
On-Demand Deployments
Learn about deployment configuration and optimization
Import Fine-Tuned Models
Upload LoRA models fine-tuned outside of Fireworks
LoRA Performance
Understand performance tradeoffs and optimization strategies