Skip to main content
New to deployments? Start with our Deployments Quickstart to deploy and query your first model in minutes, then return here to learn about configuration options.
On-demand deployments give you dedicated GPUs for your models, providing several advantages over serverless:
  • Better performance – Lower latency, higher throughput, and predictable performance unaffected by other users
  • No hard rate limits – Only limited by your deployment’s capacity
  • Cost-effective at scale – Cheaper under high utilization. Unlike serverless models (billed per token), on-demand deployments are billed by GPU-second.
  • Broader model selection – Access models not available on serverless
  • Custom models – Upload your own models (for supported architectures) from Hugging Face or elsewhere
Need higher GPU quotas or want to reserve capacity? Contact us.

Creating & querying deployments

Create a deployment:
--deployment-shape default has Fireworks pick a validated shape for the model — see Letting Fireworks pick a shape. To choose a shape yourself, run firectl deployment-shape-version match --model <model-id> first and pass a shape’s name to --deployment-shape.
Deployment placement (--region) must be set at creation time and cannot be changed in place.If you do not specify --region, the deployment is pinned to a single datacenter at creation time and will not be automatically migrated later.For production workloads that need geographic availability or capacity failover, always set --region explicitly:
Only GLOBAL is available by default. Quota for US, EUROPE, APAC, and single regions must be granted by Fireworks — contact sales@fireworks.ai. Deploying with a region you have no quota for is rejected at creation. See Regions for details.

Check current placement

The deployment metadata shows where the deployment is currently allowed to schedule replicas (placement / region configuration).

Change placement

There is no supported command to change region placement on an existing deployment. To change placement, recreate the deployment:
See Regions for mega-regions and hardware availability. See Deployment shapes below to optimize for speed, throughput, or cost. Query your deployment: After creating a deployment, query it using this format:
You can find your deployment name anytime with firectl deployment list and firectl deployment get <DEPLOYMENT_ID>.
Example:

Code examples

Deployment status states

Deployment states from the Gateway API spec:
  • CREATING - still being created
  • READY - ready to be used
  • UPDATING - in-progress updates happening
  • DELETING - being deleted
  • DELETED - soft-deleted
  • FAILED - creation failed (see status for details)
UI-only states are display labels derived from deployment fields:
  • Inactive: state == READY && max_replica_count == 0 && ready_replica_count == 0
  • Scaled to 0: state == READY && min_replica_count == 0 && max_replica_count > 0 && desired_replica_count == 0 && ready_replica_count == 0
These are display labels computed from deployment fields; they are not new backend Deployment.State enum values.

Deployment shapes

Deployment shapes are the primary way to configure deployments. They’re pre-configured templates optimized for speed, cost, or efficiency, including hardware, quantization, and other performance factors. Every shape is validated by Fireworks, so a deployment created from a shape uses a known-good configuration of GPU count, precision, and serving parameters.
Do not create deployments without a shape. Always pass --deployment-shape — a concrete shape, or default to have Fireworks pick one. Deployments created without a shape skip these validation checks — mistakes like a GPU count that can’t fit the model surface only at creation, where they cause failures. Most failed deployment creations on Fireworks are deployments without a shape. Enforcement is coming soon: shapeless creation will then require an explicit opt-in — see Explicitly creating a deployment without a shape. If no shape fits your workload, contact us and we’ll help you find or add one.
Over the API, deploymentShape also accepts the special value default: the server picks a validated shape for the model for you — pass --deployment-shape default with firectl. For details, see Letting Fireworks pick a shape.
  • Fast – Low latency for interactive workloads
  • Throughput – Cost-per-token at scale for high-volume workloads
  • Minimal – Lowest cost for testing or light workloads
Usage:
match reports the deployable set. Shapes your account cannot deploy on are dropped, exact base-model matches are preferred over same-model-type and parameter-count siblings, and LoRA addon and live-merge models are matched against their base model. Over the API, the equivalent is Match Deployment Shape Versions. To see every validated shape matching a base model instead (including ones your account cannot use), use firectl deployment-shape-version list --base-model <model-id> — base models only, it fails on LoRA addon and live-merge models. match does not take addons into account. For a deployment with --enable-addons, use the Match Deployment Shape Versions API with enableAddons set.

Letting Fireworks pick a shape

Every client surface accepts a special value that has the server pick a validated shape for the model and apply it, the same as passing that shape explicitly:
The pick never silently overrides fields you set. If every compatible shape conflicts with fields in your request (for example an acceleratorType no shape validates), the request fails with an error naming the conflicting fields, the compatible shapes, and how to create the deployment without a shape. If no shape is compatible with the model at all, the request also fails — in that case, contact us and we’ll help you find or add one.

Explicitly creating a deployment without a shape (advanced users only)

Every surface accepts an explicit opt-out that creates the deployment without a shape. Setting it together with a shape is an error — a deployment is either shaped or explicitly shapeless.
Deployments created this way skip shape validation and are far more likely to fail at creation — most failed deployment creations on Fireworks are shapeless deployments. Only use the opt-out when you have a specific reason no shape covers, and contact us so we can help. Enforcement is coming soon: shapeless creation will then require this flag, so use a shape (or default) now unless you deliberately need this path.
Need even better performance with tailored optimizations? Contact our team.

Managing & configuring deployments

Basic management

Use deployment tags to attach customer-defined metadata such as an environment, team, or workload.
By default, deployments scale to zero if unused for 1 hour. Deployments with min replicas set to 0 are automatically deleted after 7 days of no traffic.
When a deployment is scaled to zero, requests return a 503 error immediately while the deployment scales up. Your application should implement retry logic to handle this. See Scaling from zero behavior for implementation details.

GPU hardware

Do not create deployments without a shape. If a deployment shape fits your workload, use it — this section only applies when no shape fits. Creating a deployment without a shape (not passing --deployment-shape) skips validation: most failed deployment creations on Fireworks are deployments without a shape, and shapeless creation will soon require an explicit opt-in. If you need a configuration no shape covers, contact us and we’ll help you find or add one.
Choose GPU type with --accelerator-type:
  • NVIDIA_A100_80GB
  • NVIDIA_H100_80GB
  • NVIDIA_H200_141GB
  • NVIDIA_B200_180GB
  • NVIDIA_B300_288GB
  • AMD_MI325X_256GB
  • AMD_MI350X_288GB
GPU availability varies by region. See the Create Deployment API reference for the authoritative list of supported accelerator types.
Not every model runs on every GPU. Each model is validated only on specific accelerator type, GPU count, and precision combinations — many models support just one or two entries from the list above. To see what a model supports, match its deployment shapes:
The GPUS, ACCELERATOR, and PRECISION columns are the validated combinations; the model’s page in the Fireworks console shows the same options under dedicated deployments. Setting --accelerator-type or --accelerator-count to a combination no shape validates will typically fail at creation — often with a generic Internal error occurred message that does not name the hardware mismatch. If you need hardware no shape covers, contact us.

Autoscaling

Control replica counts, scale timing, and load targets for your deployment. See the Autoscaling guide for configuration options.

Multiple GPUs per replica

Use multiple GPUs to improve latency and throughput. First check whether a multi-GPU deployment shape already exists for your model:
If no multi-GPU shape fits, start from the closest shape and override the GPU count with --accelerator-count — see the warning under GPU hardware for why omitting --deployment-shape entirely should be a last resort:
More GPUs = faster generation. Note that scaling is sub-linear (2x GPUs ≠ 2x performance).

Preemptible deployments (eval / batch)

For the training eval workflow, see Evaluating Trained Models. Preemptible deployments let you run evaluation and batch workloads without holding dedicated on-demand capacity. Passing --preemptible at creation opts the deployment into borrowing idle reserved GPUs instead of reserving GPUs exclusively for you, so you do not pay to hold dedicated capacity for an eval that only runs occasionally. Because the capacity is borrowed, it can be reclaimed (preempted) at any time and is not guaranteed. In practice a preemptible deployment usually stays up long enough to run an eval end to end, but you must treat disappearance as a normal outcome, not an error.
Eval and batch workloads only. A preemptible deployment can be preempted mid-request and disappear with no warning. Never point production or latency-sensitive traffic at a preemptible deployment.

Guarantees vs. risks

No unique availability risk. Preemptible does not make capacity harder to get. If there is no capacity for a preemptible deployment, there is no capacity for an on-demand one either. The only difference is that a preemptible deployment can also be taken back after it starts.

Requirements

  • firectl >= 1.7.26. --preemptible is a newer flag and is silently ignored on older builds (no error, and the deployment is created as standard on-demand). Check with firectl version and upgrade if you are below this version.

Create a preemptible deployment

--wait blocks until the deployment is ready (1 hour default; tune with --wait-timeout).
--preemptible is immutable. It is set at creation time and cannot be toggled on or off later. To change it, delete the deployment and recreate it.
Check status and then send eval requests as you would to any deployment:
When the eval is done, delete the deployment to release the borrowed capacity:

Advanced

Next steps

Autoscaling

Configure autoscaling for optimal cost and performance

Upload custom models

Deploy your own models from Hugging Face

Quantization

Reduce costs with model quantization

Regions

Choose deployment regions for optimal latency

Reserved capacity

Purchase reserved GPUs for guaranteed capacity

Training

Train models for your specific use case