Skip to main content
Dense 27B-parameter multimodal reasoning model with FP8 weights, served on a single H100 with vLLM, MTP speculative decoding, and a data-parallel vision encoder.

Setup

Sign in to Baseten with Truss, then install the OpenAI SDK.
Sign in to Baseten
Install the OpenAI SDK
This preset serves Qwen3.8-27B on H100:1 with block-scaled FP8 weights, optimized for low-latency interactive chat, reasoning, and agent workflows.

Hardware

H100 × 1

Engine

vLLM (4a2f33a884222f70… build)

Context

256K

Concurrency

64

Write the config

Create and move into the project directory:
Then create a file named config.yaml and paste the following:
config.yaml
This preset deploys the official FP8 checkpoint of Qwen3.8-27B through vLLM on a single H100. It enables MTP speculative decoding with three speculative tokens and CPU KV-cache offload, keeping time-to-first-token low while fitting the 262,144-token context window in a single GPU’s memory. The deployment exposes an OpenAI-compatible chat completions endpoint with reasoning, tool calling, and one image per prompt.

Flags

The start_command passes these flags to the engine. Each one controls a runtime or serving behavior:

Deploy

Push the config to Baseten:
You should see output similar to:
truss push prints your model ID (abc1d2ef in the example). The examples below use it wherever you see {model_id}, and read your API key from the BASETEN_API_KEY environment variable.

Call the model

Your deployment serves an OpenAI-compatible API. Now call your deployment to run inference:
main.py
To access the model’s chain of thought, enable thinking mode. The server parses the reasoning output into a separate reasoning_content field on the response:
To let the model call tools, pass a tools array. The server returns structured tool_calls on the response:

Next steps

Call your model

Endpoint anatomy, authentication, and sync versus async inference

Autoscaling

Scale replicas with traffic, including scale to zero