Qwen3.6-27B-FP8 on One RTX 6000 Ada: Fast TTFT, 668 tok/s Peak Throughput [Benchmark]
Qwen/Qwen3.6-27B-FP8 served through vLLM on a single RTX 6000 Ada is a strong and practical configuration for 8K-context chat serving.
![Qwen3.6-27B-FP8 on One RTX 6000 Ada: Fast TTFT, 668 tok/s Peak Throughput [Benchmark]](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fuploads%2Fcovers%2F6a22b1a041d5b05f16273b50%2F8fd36dcb-515c-4f77-8071-9a1aedc1c2ed.png&w=3840&q=75)
Overview
We benchmarked Qwen/Qwen3.6-27B-FP8 using vLLM 0.19 on a single RTX 6000 Ada 48GB GPU.
The goal was to evaluate realistic chat-serving behavior with:
Streaming enabled
OpenAI-compatible
/v1/chat/completionsMulti-turn ShareGPT-style prompts
Multilingual traffic
Moderate concurrency levels: 8, 12, and 16
This was not a synthetic one-prompt benchmark. The workload used 128 unique ShareGPT prompts across three concurrency settings, for a total of 384 requests.
Benchmark Configuration
Model
| Field | Value |
|---|---|
| Model | Qwen/Qwen-3.6 27B |
| Hugging Face path | Qwen/Qwen3.6-27B-FP8 |
| Quantization / dtype | FP8 |
| Request sizing configured | 8192 max tokens |
Serving Setup
| Field | Value |
|---|---|
| Engine | vLLM 0.19 |
| Endpoint | /v1/chat/completions |
| Streaming | ON |
| Tensor parallel size | 1 |
| Data parallel size | 1 |
| GPU memory utilization | 0.90 |
| max_model_len | 8192 |
| max_num_seqs | 16 |
| Tool call parser | qwen3_coder |
| Reasoning parser | qwen3 |
Engine flags:
--tensor-parallel-size 1
--data-parallel-size 1
--tool-call-parser qwen3_coder
--reasoning-parser qwen3
--gpu-memory-utilization 0.90
--max-model-len 8192
--max-num-seqs 16
Hardware
| Component | Configuration |
|---|---|
| GPU | 1× RTX 6000 Ada |
| VRAM | 48GB |
| CPU | 48 vCPU |
| System RAM | 118GB |
Workload
| Field | Value |
|---|---|
| Dataset | ShareGPT sample |
| Unique prompts | 128 |
| Concurrency levels | 8, 12, 16 |
| Total requests | 384 |
| Conversation shape | Multi-turn chat |
| Languages | en, zh, ru, th, ko, fr, pl, ja |
| max_model_len | 8192 |
| max output tokens per completion | 1024 |
| Temperature | 0.2 |
Results Summary
The most important high-level result:
TTFT was strong, median decode speed was good, and KV cache usage stayed low. The main area to investigate is p99 decode latency.
1. Time to First Token Latency
Time to First Token, or TTFT, measures how long the user waits before streaming begins. For chat applications, this is one of the most important user-experience metrics.
| Metric | Avg | Max | Unit | Interpretation |
|---|---|---|---|---|
| p50 TTFT | 0.4802 | 3.75 | seconds | Median requests started streaming quickly. |
| p95 TTFT | 0.9444 | 4.875 | seconds | Most requests started under ~1 second on average. |
| p99 TTFT | 1.074 | 4.975 | seconds | Tail TTFT stayed controlled on average, with occasional spikes. |
Deductions
| Observation | Meaning |
|---|---|
| p50 TTFT below 0.5 seconds | Strong interactive responsiveness. |
| p95 TTFT below 1 second | Good streaming experience for most users. |
| p99 TTFT around 1.07 seconds on average | Tail startup latency is still acceptable. |
| Max TTFT around 5 seconds | Some requests had startup spikes, likely from scheduling, batching, or temporary queueing. |
Interpretation
This is one of the strongest parts of the benchmark. The model starts responding quickly, which is exactly what you want for a streaming chat system.
Even though the workload used multi-turn ShareGPT-style prompts, TTFT stayed low on average. That suggests request admission and prefill behavior were healthy under the tested concurrency levels.
2. Time Per Output Token Latency
Time Per Output Token, or TPOT, measures decode speed after the first token has been produced. Lower TPOT means faster generation.
| Metric | Avg | Max | Unit | Approx Tokens/sec |
|---|---|---|---|---|
| p50 TPOT | 0.0292 | 0.0574 | sec/token | ~34.25 tok/s |
| p95 TPOT | 0.0427 | 0.0765 | sec/token | ~23.42 tok/s |
| p99 TPOT | 0.1274 | 0.3028 | sec/token | ~7.85 tok/s |
Deductions
| Observation | Meaning |
|---|---|
| p50 TPOT at 29.2 ms/token | Good median decode speed for a 27B FP8 model on one GPU. |
| p95 TPOT at 42.7 ms/token | Most requests still generate at a reasonable speed. |
| p99 TPOT at 127.4 ms/token | Tail generation is significantly slower. |
| Max p99 TPOT at 302.8 ms/token | Some windows saw severe decode slowdown. |
Interpretation
Median decode performance is solid. A p50 of roughly 34 tokens/sec is good for a 27B-class model running on a single RTX 6000 Ada in FP8.
The main concern is the gap between p50 and p99. Average p99 TPOT is about 4.36× slower than average p50 TPOT.
That means most requests decode well, but a small number of requests experience much slower generation.
Possible causes include:
| Possible Cause | Explanation |
|---|---|
| Dynamic batching behavior | Some requests may be grouped with longer or slower generations. |
| Long output variance | Requests that generate close to 1024 tokens can dominate decode time. |
| Scheduler effects | Certain requests may receive fewer decode opportunities under load. |
| Multilingual variance | Different scripts and tokenization patterns may affect effective throughput. |
| Prompt length variance | Multi-turn prompts may vary significantly in input length. |
3. End-to-End Latency
End-to-end latency measures total request completion time, from request start to final token.
| Metric | Avg | Max | Unit | Interpretation |
|---|---|---|---|---|
| p50 E2E | 32.00 | 51.67 | seconds | Median request completed in about 32 seconds. |
| p95 E2E | 40.69 | 59.17 | seconds | Most tail requests completed around 41 seconds on average. |
| p99 E2E | 41.45 | 59.83 | seconds | p99 was close to p95 on average, though max approached 60 seconds. |
Deductions
| Observation | Meaning |
|---|---|
| p50 E2E around 32 seconds | Expected for long multi-turn prompts with up to 1024 output tokens. |
| p95 and p99 are close on average | Tail E2E was relatively stable compared to TPOT. |
| Max E2E near 60 seconds | Some requests likely generated long completions or encountered queueing. |
| TTFT is low while E2E is high | Total latency is dominated by decode/generation, not startup. |
Interpretation
The E2E numbers look high if viewed as normal short-chat latency, but they make sense for this workload.
The model had a maximum output budget of 1024 tokens, and the workload was multi-turn. Since TTFT was low, most of the end-to-end latency comes from generating the completion rather than waiting for the model to begin.
In other words:
This is not a first-token problem. It is mostly a decode-duration problem.
4. Request Rate
| Metric | Avg | Max | Unit | Interpretation |
|---|---|---|---|---|
| Request rate | 0.2123 | 0.4445 | requests/sec | Moderate request rate for heavy chat completions. |
Equivalent approximate rates:
| Metric | Value |
|---|---|
| Average requests/min | ~12.7 |
| Peak requests/min | ~26.7 |
Deductions
| Observation | Meaning |
|---|---|
| Average request rate was 0.2123 req/s | This was not a high-QPS saturation benchmark. |
| Peak request rate was 0.4445 req/s | Peak load stayed below 1 request/sec. |
| Concurrency was 8, 12, and 16 | Requests were heavy enough that concurrency did not translate into high QPS. |
| Long E2E latency limits request turnover | Completion length likely constrained completed requests/sec. |
Interpretation
This benchmark is best understood as a moderate-concurrency long-chat serving test, not a maximum QPS test.
The system was handling heavy requests with multi-turn context and large output budgets. For capacity planning, more sweeps would be useful: concurrency 20, 24, 32, and maybe 48, depending on stability and KV usage.
5. Token Throughput
Token throughput measures how many prompt and output tokens the system processed per second.
| Token Type | Avg | Max | Unit | Interpretation |
|---|---|---|---|---|
| Prompt tokens | 170.4 | 386.9 | tokens/sec | Input processing throughput. |
| Output tokens | 161.5 | 314.1 | tokens/sec | Decode throughput. |
| Total tokens | 331.9 | 668.5 | tokens/sec | Combined prefill + decode throughput. |
Deductions
| Observation | Meaning |
|---|---|
| Avg total throughput was 331.9 tok/s | Decent single-GPU throughput for a 27B FP8 deployment. |
| Max total throughput reached 668.5 tok/s | The system can burst much higher than average. |
| Prompt and output throughput were similar | Workload was balanced between input processing and generation. |
| Output throughput averaged 161.5 tok/s | Decode throughput was healthy under this load. |
Interpretation
Throughput looks good for a single RTX 6000 Ada running a 27B-class FP8 model.
The difference between average and max throughput suggests that the system had moments where batching was more efficient, but average utilization was limited by request shape, output length, and concurrency.
6. KV Cache Usage
KV cache usage is important because it often becomes the limiting factor for long-context and high-concurrency serving.
| Metric | Avg | Max | Unit | Interpretation |
|---|---|---|---|---|
| KV cache usage | 16.64 | 32.67 | % | Low-to-moderate KV usage. |
Deductions
| Observation | Meaning |
|---|---|
| Average KV usage was only 16.64% | Plenty of memory headroom remained. |
| Max KV usage was 32.67% | Even peak KV usage did not approach saturation. |
| KV cache was not the bottleneck | Tail latency was likely not caused by KV exhaustion. |
| There is room to increase concurrency | Higher concurrency sweeps are worth testing. |
Interpretation
This is an important result. The system was not close to KV cache saturation.
Since max KV cache usage was only about one-third, there is likely room to push harder with:
Higher concurrency
More simultaneous requests
Longer average prompts
More aggressive batching
The next bottleneck may appear elsewhere first, such as decode scheduling, compute saturation, or latency tail behavior.
Main Lessons
| Area | Result | Main Lesson |
|---|---|---|
| TTFT | Strong | Streaming begins quickly; good interactive UX. |
| Median TPOT | Good | Decode speed is healthy for a 27B FP8 model on one RTX 6000 Ada. |
| p99 TPOT | Needs investigation | Tail decode latency is the biggest warning signal. |
| E2E latency | Expected for workload | Long total latency is mostly due to long generation, not slow startup. |
| Request rate | Moderate | This was not a max-QPS saturation test. |
| Token throughput | Decent | Total throughput is reasonable, with burst capacity visible. |
| KV cache | Healthy | KV memory headroom remained large. |
| Hardware fit | Good | 27B FP8 fits and serves practically on a single 48GB RTX 6000 Ada. |
| Next benchmark | Needed | Test higher concurrency and fixed context buckets. |
Key Deductions
1. Qwen3.6-27B-FP8 is practical on a single 48GB GPU
The model served successfully on 1× RTX 6000 Ada 48GB with vLLM, streaming enabled, and concurrency levels up to 16.
The combination of FP8 and vLLM makes this a practical single-GPU deployment profile for 27B-class chat serving.
2. TTFT is excellent for streaming chat
The average p50 TTFT was 0.4802 seconds, and p95 was 0.9444 seconds.
That means users would usually see the response begin quickly. For streaming applications, this matters a lot because perceived latency is often dominated by how quickly the first token appears.
3. Decode tail latency is the main issue
The biggest concern is p99 TPOT.
Average p50 TPOT was 0.0292 sec/token, while average p99 TPOT was 0.1274 sec/token.
That is a large jump.
This suggests that most requests perform well, but a small portion of requests experience much slower generation. For production workloads, that tail behavior should be investigated.
4. End-to-end latency is mostly caused by output length
E2E p50 was 32 seconds, but p50 TTFT was only 0.4802 seconds.
That gap makes the explanation clear:
The model starts quickly, but total request completion time is dominated by generating the response.
Since each request allowed up to 1024 output tokens, this is expected.
5. KV cache usage leaves plenty of headroom
KV cache maxed out at only 32.67%.
This means the tested workload did not saturate memory. There is likely room to increase concurrency beyond 16, increase average prompt length, or run a heavier workload before KV cache becomes the bottleneck.
6. This benchmark was realistic, but not a saturation test
The workload used multilingual, multi-turn ShareGPT-style prompts, which is useful for real serving behavior.
However, average request rate was only 0.2123 req/s, and max request rate was 0.4445 req/s. So this should not be treated as the maximum throughput limit of the deployment.
A proper saturation benchmark should include controlled sweeps across concurrency and context length.
Final Verdict
Qwen/Qwen3.6-27B-FP8 served through vLLM on a single RTX 6000 Ada is a strong and practical configuration for 8K-context chat serving.
The benchmark shows:
Fast first-token latency
Good median decode speed
Decent total token throughput
Low KV cache pressure
Practical serving behavior at concurrency 8–16
The main issue to investigate is p99 decode latency.
The deployment looks healthy overall, but tail TPOT should be optimized or understood before pushing this into stricter production latency targets.
For a single 48GB workstation/server GPU, this is a very promising result for 27B-class FP8 inference.




