- Stage the Kimi K3 weights and the DSpark draft model in a CoreWeave AI Object Storage bucket.
- Grant Dedicated Inference access to that bucket.
- Create a gateway to expose the model.
- Create the deployment with the validated Kimi K3 engine configuration.
- Wait for the deployment to load the weights and start the engine.
- Send an inference request to verify the endpoint.
- Clean up the gateway and deployment when you’re done.
Prerequisites
Before you begin, verify that you have the following:- A CoreWeave account with Dedicated Inference access enabled.
- Inference GPU quota for
gb300-4x, covering the 16 GPUs this tutorial deploys. Quota is granted per organization and per instance type. Without it, creating the deployment fails withorganization has no GPU quota for it, and setting a capacity class doesn’t waive the requirement. To request quota, submit a support ticket. - A CoreWeave API access token with the Inference Admin role.
- The CoreWeave Intelligent CLI (
cwic) installed and authenticated. - A CoreWeave AI Object Storage bucket for the model weights.
- The Hugging Face CLI (
hf) to download the model weights. - The AWS CLI, configured with Object Storage credentials, to upload weights and apply the bucket policy.
curlandjqfor API requests and polling.
[API-TOKEN] with your token:
Stage the model weights
Dedicated Inference uses a bring-your-own-weights (BYOW) model and doesn’t pull from Hugging Face directly. Before you create the deployment, download both models and upload them to your bucket. Kimi K3 requires two sets of artifacts:
Download both repositories, pinning the revisions CoreWeave validated:
[BUCKET-NAME] with your bucket, [MODEL-PATH] with the prefix you want to store the model under, and [PROFILE-NAME] with your AWS CLI profile name. The --exclude flag keeps the metadata directory that hf download writes out of the model path:
default AWS CLI profile, omit --profile [PROFILE-NAME]. For details about configuring a named profile, see Get started with AI Object Storage.
Confirm the nested layout before you continue, while a mistake is still cheap to fix. The following command lists the draft model’s files under the speculator/ prefix:
speculative-config value in the deployment command to match.
Apply the bucket policy
Dedicated Inference reads weights from Object Storage through a dedicated service account, which needs a bucket policy granting it read access. The following policy includes anAllowOrgUsers statement in addition to the inference grant. Don’t remove it: once any policy is attached, only requests it explicitly allows are permitted, so a policy that grants only the inference service account locks your own users out of the bucket with AccessDenied errors, including in the Cloud Console’s bucket viewer.
Replace [BUCKET-NAME] with your bucket name, and [ORG-ID] with your CoreWeave organization ID, which you can find on the Settings page of the Cloud Console. Leave the Principal in the AllowInference statement exactly as shown. It identifies the CoreWeave Inference service account, is the same for every customer, and isn’t a value you generate:
inference-bucket-policy.json
Always include the
Condition block in the AllowOrgUsers statement when using "Principal": "*". Without it, the bucket is readable by anyone on the internet, not only principals in your organization.inference-bucket-policy.json and apply it with the AWS CLI. Because put-bucket-policy replaces the existing bucket policy rather than merging with it, review any policy already on the bucket before you run this:
AllowInference and AllowOrgUsers statements once the policy propagates. A missing or incorrect bucket policy is a common cause of deployments that fail while loading weights. For alternative tooling and how to scope access to a single prefix, see Grant inference access to your bucket.
Create a gateway
A gateway provides the external endpoint that routes traffic to your deployment, and it handles authentication and load balancing. Query the zones where Dedicated Inference capacity is available:[ZONE-NAME]:
model field in the request body, following OpenAI API conventions.
Save the gateway ID from gateway.spec.id in the response. This is the ID, not the name you chose:
Create the deployment
The following command creates a single-replica Kimi K3 deployment using the engine configuration CoreWeave validated on GB300. Replace[DEPLOYMENT-NAME] with a name for the deployment, and [BUCKET-NAME] and [MODEL-PATH] with the bucket and prefix you staged the weights under.
- CoreWeave Intelligent CLI
- curl
What the configuration does
The following table explains the settings that are specific to serving Kimi K3 on GB300. Rows without a leading-- are keys passed through --engine-config.
The
--engine-version value pins a specific runtime build. To see the versions available to your organization, run cwic inference deployment parameters or query the deployment parameters endpoint. For the full list of configuration keys the engine accepts, see Engine configuration options.
Save the deployment ID, which the CoreWeave Intelligent CLI prints on success and the API returns in deployment.spec.id:
Wait for the deployment to start
The deployment downloads the weights and starts the inference engine. Because Kimi K3 is a large model, expect this to take several minutes. CoreWeave allows up to an hour for the engine to become ready, so the following loop polls for the same period. Poll until the status reachesSTATUS_READY:
model path has no objects or that the bucket isn’t accessible, recheck the bucket policy, the bucket name, and the model path. If it reaches STATUS_ERROR while loading, check the engine logs as described in Observability.
After the deployment is ready, retrieve the gateway endpoint from gateway.status.endpoints:
[GATEWAY-ENDPOINT] with the value from the response:
The gateway’s DNS record and TLS certificate provision asynchronously and can take several minutes. If your first request fails with an SSL handshake or DNS resolution error, wait a few minutes and retry.
Send an inference request
The gateway exposes an OpenAI-compatible API. With body-based routing, set themodel field to the deployment’s model name, moonshotai/Kimi-K3:
token_ids, prompt_logprobs, and kv_transfer_params. These are typically null for normal requests, so you can ignore them.
openai client, replacing [GATEWAY-ENDPOINT] with your gateway endpoint and [API-TOKEN] with your API token:
Observability
Engine logs are where startup and runtime errors surface, including the weight-loading failures described in Wait for the deployment to start. Viewing them requires theObservability Viewer role in an IAM access policy. Without that role, the Grafana button in the Cloud Console is hidden.
For the steps to open Grafana and run a log query, see View deployment logs. The default query returns logs for every deployment in your organization. To narrow it to this deployment, replace [DEPLOYMENT-ID] with the ID you saved earlier:
Clean up
Delete the deployment before the gateway it’s attached to. First, delete the deployment:Next steps
To take this deployment further, see the following resources:- Models and deployments: Tune runtime configuration, GPU selection, and traffic weights.
- Scaling: Move beyond a single replica with autoscaling and reserved capacity.
- Gateways: Configure authentication, routing strategies, and traffic splitting.
- Getting started with Dedicated Inference: Update a deployment, deploy with Terraform, and review the full API workflow.
- Billing: Understand Dedicated Inference pricing.