vllm/vllm-openai image. vLLM already serves an OpenAI-compatible API, so you don’t need a Sprocket worker or a Docker build. Jig deploys the image as-is, using two settings in [tool.jig.deploy]:
image: Deploy an existing image instead of building one. Jig skipsdocker buildanddocker push.command: Override the image’s startup command. Here it runsvllm servewith the model and serving flags.
curl, not jig submit.
The full example is in the Sprocket repo at examples/qwen_vllm.
Requirements
- Together API key: Get one from together.ai.
- Dedicated container inference access: Contact your account representative or the sales team to enable it for your organization.
- Together CLI: Install with
uv tool install "together[cli]". - OpenAI Python SDK: The Python request sample uses it. Add it to your Python project with
uv add openai.
TOGETHER_API_KEY:
Configure the deployment
Create a directory with a singlepyproject.toml:
pyproject.toml
- Pin the image tag: This guide is tested with
v0.17.1. Pin a specific tag, notlatest, so a replica that restarts doesn’t pick up a new vLLM release. - Match GPUs to tensor parallelism: Set
--tensor-parallel-sizetogpu_countso vLLM uses every GPU in the replica. Here, vLLM splits the 32B model in BF16 across two H100s. - Match
portto--port: Together routes traffic to the port inport, so it must match the port vLLM listens on. - Keep the default health check: The default
health_check_pathis/health, which vLLM serves. The deployment reports ready once vLLM has loaded the model. - Autoscale on vLLM’s own metric: vLLM exports Prometheus metrics on
/metrics, so theCustomMetricautoscaler scales onvllm:num_requests_runningwith no extra code. - Use a unique project name: The
nameunder[project]is the deployment name and the last segment of the endpoint URL. Deployment names must be unique, so ifqwen25-vlis taken, changenameand use the new name in the endpoint URL.
Serve a different model
Change the model ID incommand and in your requests, then size gpu_count, --tensor-parallel-size, and memory to fit the new model. Any vllm serve flag can go in command.
Qwen2.5-VL-32B-Instruct isn’t gated, so this guide needs no Hugging Face token. For a gated model, store your token as a secret before you deploy. vLLM reads HF_TOKEN from the environment when it downloads the weights. Run the command from the directory that contains pyproject.toml, so the secret attaches to this deployment:
Deploy
From the directory that containspyproject.toml, create the deployment and watch it start:
--detach, jig deploy returns as soon as the deployment is created. Without it, the command waits for the replica to become ready, but it gives up two minutes after the container starts. vLLM takes longer than that to load the model, so the command exits with Running but not ready after 120s even though the deployment keeps starting.
The first deploy takes 5 to 15 minutes while Together schedules two H100s, pulls the vLLM image, and vLLM downloads and loads about 65 GB of weights. The deployment is ready when jig status shows Ready for Status and 1/1 ready for Replicas.
When the deployment is ready, get the endpoint URL:
https://api.together.ai/v1/deployment-request/<DEPLOYMENT_NAME>. Together authenticates requests to any path under it with your Together API key, then forwards them to the container.
Call the endpoint
Point any OpenAI client at the endpoint URL plus/v1, using your Together API key. The model field must match the model ID you pass to vllm serve in command:
content. A shortened response looks like this:
/v1/completions and /v1/models, are available under the same endpoint URL.
Delete the deployment
The deployment keeps at leastmin_replicas replicas running, two H100s each, until you delete it. To delete it, run this from the directory that contains pyproject.toml:
Next steps
OpenAI-compatible endpoint with Sprocket
Write your own worker when you need custom pre- or post-processing.
Autoscaling
Choose scaling metrics and targets, and see how replicas scale.
Jig CLI reference
Look up every
[tool.jig.deploy] setting and deploy command.Sprocket examples
Browse more deployable examples, from hello-world to speech-to-speech.