batch-infer-vllm
Batch chat completions with vLLM
Runs an OpenAI batch file of /v1/chat/completions requests through vLLM's batch runner and writes one result line per request. Default model Qwen3-4B-Instruct-2507 (Apache-2.0), downloaded from Hugging Face at start.
- Status
- Available
- GPU
- NVIDIA A10G · 24 GB
a10g-24gb-x1 - Default runtime
- 1 h maximum
- Publisher
- Unify Compute
What it reads and writes
Input /mnt/in | Directory containing requests.jsonl: one OpenAI batch line per request with url /v1/chat/completions |
|---|---|
Output /mnt/out | results.jsonl: one OpenAI batch result line per request, matched by custom_id |
What you can change
A submit may set: GPU (SKU) (sku), Cloud placement (providers), Environment variables (spec.env), Maximum runtime (spec.max_runtime_seconds). The image and the declared inputs and outputs are fixed: a different image is a different template.
MODEL | Qwen/Qwen3-4B-Instruct-2507 |
|---|---|
MODEL_REVISION | cdbee75f17c01a7cc42f958dc650907174af0554 |
MAX_MODEL_LEN | 8192 |
Run it
With a key in $UNIFY_KEY (see the quick start), give each input an https:// URL, public or presigned, that ends in the file name above:
curl -s https://api.compute.unifyai.us/compute/v1/jobs \
-H "Authorization: Bearer $UNIFY_KEY" \
-H "Content-Type: application/json" \
-d '{
"template": "batch-infer-vllm",
"spec": {
"inputs": [
{
"source": "https://YOUR-BUCKET.s3.amazonaws.com/requests.jsonl",
"mount": "/mnt/in"
}
]
}
}'The job is billed for the GPU time it uses at the SKU's rate, the same as a job you write yourself.
GPU job execution is turned on per account while it rolls out. Create an account, then ask us to enable it as the quick start describes.
Where the image comes from
| Image | vllm/vllm-openai:v0.30.0-cu129 |
|---|---|
| Digest | sha256:a67f8f186d4567612ac37a55bd82295006002b18858eb12a8af2f05f86c2ae3f |
| Licence | Apache-2.0 |
| Source | https://hub.docker.com/r/vllm/vllm-openai (tag v0.30.0-cu129, pushed 2026-09-22; Dockerfile at github.com/vllm-project/vllm/blob/v0.30.0/docker/Dockerfile) |
The digest is what runs. A tag can be re-pushed; a digest cannot, so what was reviewed is what your job pulls.