Fireworks currently only supports Bring-your-own-cloud (BYOC) with AWS. We are working to support
other cloud providers.
Set up your cluster
1
Create required resources in your account
The first step is to create the resources necessary for running a Fireworks cluster
in your own AWS account. Fireworks has made this easy by preparing a Terraform module
that can be applied. With this module you can set the input variables to suit your existing cloud set up.
For example, the module can use an existing VPC or subnet, create nodes in various availability zones, etc.
The Fireworks team can help with this configuration process.The following is an example configuration that creates a new VPC and new subnets, and creates a cluster with a single H100 node in one availability zone:The module will create the following resources:
- A VPC network (or reuse an existing one in your account)
- Subnets for the VPC (or reuse existing ones in your account)
- Various roles for operating the cluster
- An EKS cluster
- A storage bucket for model artifacts
- Container registries to hold images uses by the cluster
The Terraform module assumes that you or an administrator will have permission to upload to the created S3 bucket. If this is not accurate, you will need to add an additional piece of Terraform code granting that permission.
2
Grant Fireworks permission to access your cluster
Most of the cluster set up can be done automatically by Fireworks, but before we can access your cluster you will need to apply the following Kubernetes manifest. Note that the
rolearn
fields will need to be filled in with values taken from the fireworks_cluster
output from the previous step.3
Send Fireworks your cluster's metadata
To continue the setup of your cluster, send Fireworks the Terraform output from step one, and also the ID you’d like to give this cluster (or you can use the same name as the created EKS cluster)
After Fireworks finishes setting up your cluster, you should be able to see the cluster in
firectl
.Upload a model to your cluster
Now you can create a model in your new cluster. These steps are mostly the same as in Custom base models, with the following differences:- Add the
--cluster-id=<YOUR_CLUSTER_ID>
argument to yourfirectl create model
command. - By default
firectl
will attempt to upload the model files to the S3 bucket associated with your cluster. If your default AWS profile has permission to do this, you don’t need to do anything else. If you need to use a different AWS profile, you can set theAWS_PROFILE
environment variable as it will be respected byfirectl
. If neither of those work, you can pass the--manual-upload
flag tofirectl create model
. This will output a series ofaws s3 cp
commands that can be run to manually upload the model files.
READY
state and you’ve uploaded the model’s files to S3, you can continue to the next section.Create a deployment in your cluster
Creating a deployment in your cluster is similar to creating an on-demand deployment:READY
Some on-demand deployment features (like autoscaling) are not yet available on
BYOC clusters.
Query your deployment
The final step is to test your deployment by querying it. To do this you will need to retrieve the hostname of the the load balancer that was automatically created for your clusterNavigate to the “Load Balancer” section in the EC2 console. The created
load balancer will have a name that starts with
k8s-default-gateway
. Click this
row, and you’ll find the host name under “DNS name”.Fireworks-Deployment
to the load balancer:
curl
pod in the cluster: