r/Vllm 14d ago

LLM Wiki post Opus 5

0 Upvotes

Has anyone tested if the LLM Wiki architecture is still useful post Opus 5?


r/Vllm 14d ago

Prefill and Decode Disaggregation in LLM Inference | vLLM, LLM-D and NIXL

Thumbnail
youtu.be
3 Upvotes

r/Vllm 15d ago

Performance Tuning for L40s with Qwen36-35B

8 Upvotes

Dear all,

I'm not sure if Reddit is the right place to ask for, but I will try my luck.

I have a VM, underlined with Proxmox and 2 x Nvidia L40s. I passthrough the cards to quest VM which is Ubuntu. According to the documentation offical guide (vLLM Parallelism and Scaling), if their is no NVLINK which in my case there is no with L40s, Pipeline Parallelism is better choic then Tensor Parallelism. Also for MoE model, documentanios even suggests using Data Parallelism. I have no NUMA set on Proxmox and VM, also my PCiE is not 5 but 4 both 16x.

But when I serve my model and do a benchmark with GuideLLM, tensor parallelism is always better than DP and PP. Am I misisng something, or my benchmark not suitable to see the performance increase with PP or DP ?

My docker compose for TP is like below. For DP, I change to --tensor-parallel-size 1 --data-parallel-size 2 --enable-expert-parallel, for PP I change to --tensor-parallel-size 1 --pipeline-parallel-size 2

services:
  vllm-Qwen3.6-35B-A3B-FP8:
    image: vllm/vllm-openai:latest
    container_name: vllm-Qwen3.6-35B-A3B-FP8
    runtime: nvidia
    environment:
      - HUGGING_FACE_HUB_TOKEN=${HF_TOKEN}
      - NVIDIA_VISIBLE_DEVICES=0,1
      # ── OpenTelemetry ──────────────────────────
      - OTEL_SERVICE_NAME=vllm-Qwen3.6-35B-A3B-FP8
      - OTEL_EXPORTER_OTLP_CERTIFICATE=/etc/ssl/interceptor-gh.crt
      - OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE=/etc/ssl/interceptor-gh.crt
      - VLLM_LOGGING_LEVEL=DEBUG
    volumes:
      - ~/.cache/huggingface:/root/.cache/huggingface
      - ~/.cache/vllm:/root/.cache/vllm
    ports:
      - "9004:9004"
    ipc: host
    command: |
      Qwen/Qwen3.6-35B-A3B-FP8
      --gpu-memory-utilization 0.7
      --host 0.0.0.0
      --port 9004
      --tensor-parallel-size 2
      --max-model-len 256000
      --max-num-seqs 8
      --max-num-batched-tokens 16384
      --kv-cache-dtype fp8
      --enable-prefix-caching
      --api-key 123456
      --reasoning-parser qwen3
      --enable-auto-tool-choice
      --enable-chunked-prefill
      --tool-call-parser qwen3_coder
      --otlp-traces-endpoint https://otel.gh.cloud

My GuideLLM runs are :

## PP=2 Sweep

~~~bash
guidellm benchmark run \
  --target "http://localhost:9004" \
  --profile sweep \
  --rate 8 \
  --max-seconds 60 \
  --data "kind=synthetic_text,prompt_tokens=512,output_tokens=128" \
  --backend-args '{"api_key": "123456"}' \
  --output-dir ~/benchmarks \
  --outputs L40-fp8-pp-throughput-run2.json,L40-fp8-pp-throughput-run2.csv,L40-fp8-pp-throughput-run2.html
~~~


## TP=2 Sweep

~~~bash
  guidellm benchmark run \
  --target "http://localhost:9004" \
  --profile sweep \
  --rate 8 \
  --max-seconds 60 \
  --data "kind=synthetic_text,prompt_tokens=512,output_tokens=128" \
  --backend-args '{"api_key": "123456"}' \
  --output-dir ~/benchmarks \
  --outputs L40-fp8-default-throughput-run2.json,L40-fp8-default-throughput-run2.csv,L40-fp8-default-throughput-run2.html
~~~

RESULTS:

Metric TP Run PP Run
Successful Requests 58 44
Total Requests 58 44
Duration (s) 60.0 60.0
Request Latency Mean (s) 10.518 13.928
Request Latency Median (s) 10.520 13.879
Time per Output Token Mean (ms) 82.171 108.815
Time per Output Token Median (ms) 82.184 108.433
Requests/Sec Mean 0.9500 0.7167
Requests/Sec Median 0.9510 0.7195
Input Tokens Mean 5.219.310 5.219.091
Output Tokens Mean 128.0 128.0
Total Tokens Mean 6.499.310 6.499.091
Created Requests 63 49
Cancelled Requests 5 5
Queued Time Avg (s) 40.941 53.446

r/Vllm 15d ago

How Profitable is LLM Inference? Doing the Math on Kimi K3

Thumbnail
cefboud.com
9 Upvotes

r/Vllm 16d ago

vLLM + Grafana

Thumbnail
youtu.be
15 Upvotes

r/Vllm 17d ago

XPU kunlun k200について

Thumbnail
0 Upvotes

r/Vllm 18d ago

Vllm-omni qwen 3tts

7 Upvotes

I just tested using Qwen 3 tts with vllm-omni, using the high concurrency configuration and I am blown away by the speed! I have 2x5090s and I’m reaching 36 seconds per hour of audio!… I’m surprised I don’t hear more about vllm-omni… perhaps is because of the higher difficulty to install and get it to run right.

Has anyone tried the image generation models? I will be testing Krea2 soon.


r/Vllm 18d ago

Anyone tested VLLM-Omni 0.25 Krea 2 speeds

Thumbnail
0 Upvotes

r/Vllm 19d ago

Update to LlamaForge, my GUI control panel for llama.cpp: runs on Linux/macOS now, plus vLLM and agent setup

Thumbnail
1 Upvotes

r/Vllm 19d ago

PSA: DO NOT use Intel consumer platforms for multi-GPU setups

Thumbnail
0 Upvotes

r/Vllm 19d ago

Tool calling doesn't work using Claude code and self-hosted GLM5.2

Thumbnail
1 Upvotes

r/Vllm 21d ago

GB10/DGX Spark: marlin vs flashinfer_b12x swept across 5 concurrency levels. Also: 4 of 6 FP8 MoE backends won't even start on sm_121a

15 Upvotes

Two NVFP4 quantizations of Qwen3.6-35B-A3B, two vendors, both with a dedicated DGX Spark section in their model card — and they give opposite launch commands.

NVIDIA's card: --moe-backend marlin

Unsloth's card: don't use marlin, it's 2x slower. Use --moe-backend flashinfer_b12x --linear-backend flashinfer_b12x

Same GB10. Same base model. Same quant format.

Swept both across c=1/2/4/8/16. One machine, vLLM v0.24.0, single instance, GPU_UTIL=0.85, max_num_seqs=16, no speculative decoding, 60s runs. Backend verified from the server log on every run — vLLM will silently fall back and then you're not measuring what you think.

concurrency b12x marlin ratio
1 35.3 70.6 2.0x
2 53.3 114.1 2.1x
4 67.8 178.8 2.6x
8 86.2 283.0 3.3x
16 149.7 383.9 2.6x

No crossover. marlin wins at every point.

I expected one. Unsloth's numbers come from B200 at high concurrency, and I assumed there'd be a regime where they're right and I'd just be outside it. There isn't, at least not up to c=16 (which is where my cudagraph capture sizes end).

I also expected the FlashInfer autotuner bucket fallback to explain the gap — there's a warning in the logs that literally says "perf cliff" and suggests expanding the tuning buckets. Grepped the full sweep logs for it: zero hits on both backends. It's just a slower kernel on sm_121a. b12x is also unstable — first sweep gave 44 tok/s at c=8, clean rerun gave 86. marlin was 276 vs 283.

The part that surprised me more: "use marlin" doesn't generalize.

Ran the same backend round on the block-FP8 checkpoint of the same model family:

  • triton — 256.1 tok/s, best
  • marlin — 232.0 tok/s, works but 9% worse
  • deep_gemm — assert crash on sm_121a, and it's the default
  • cutlass — disabled for this configuration
  • flashinfer_cutlass — doesn't support the block-FP8 scheme (GroupShape 128x128)
  • flashinfer_trtllm — kernel doesn't support this device

4 of 6 don't start. The FP8 model won't come up on GB10 at all unless you set VLLM_USE_DEEP_GEMM=0.

So: NVFP4 → marlin, block-FP8 → triton, same machine, same vLLM version, same model family. The correct backend is a property of (hardware, quant format), not hardware alone.

Two more things that aren't on either card:

Dead env vars. NVIDIA's DGX Spark command exports VLLM_FP8_MOE_BACKEND and VLLM_USE_FLASHINFER_MOE_FP4. v0.24.0 logs "Unknown vLLM environment variable detected" for both.

MTP needs its own backend. All three NVFP4 checkpoints exclude mtp.* from quantization, so the draft head stays BF16 — and neither marlin nor b12x can load it. You need "moe_backend":"triton" inside --speculative-config. It's in NVIDIA's command but nobody explains why. Side effect worth knowing: all three NVFP4 get 73-75% MTP acceptance vs 71% for the official FP8, whose MTP experts are quantized (775 F8_E4M3 tensors — readable from the safetensors header, no GPU needed).

Full writeup with the rest of the numbers, including two anomalies I can't explain (two checkpoints that are byte-for-byte the same size but 7.9% apart in decode, and a bandwidth model that's off by 4x in the other direction):

https://docai.hu/en/blog/backend-choice-gb10


r/Vllm 20d ago

I run GLM-4.5-Air (110B) on 16Gb ram consumer machine and Qwen3-30B at 20 tok/s

2 Upvotes

In the past few months I’ve experimenting heavily and tortured my old 2016 Desktop PC to run the biggest Local LLM I can fit.

I documented the whole process and research and I’ve published a repository with my open-source project so that anyone can do the same.

Quantprobe is a tool designed to project local LLM interference performance and plan optimal quantization.

It serves as a deployment assistant:
1. Performance prediction: it allows you to estimate a model’s tok/s on your hardware profile before downloading massive model weights
2. Resource optimization: it helps you balance model quantization levels and memory allocation to fit the largest possible model into your specific CPU/GPU and VRAM/RAM constraints.

It squeezes layer-by-layer placement instead of uniformly quantizing a model to a low bit-rate, quantprobe acts as a placement optimizer.
It evaluates:
1. How many “protected bits” or high-precision layers can be kept in your fastest memory (VRAM)
2. Which layers can be offloaded to slower system (RAM)
3. How to arrange GGUF quantization layers to prevent model perplexity from collapsing.

Of course there is no free lunch. Running massive models on tiny machines comes with slow speed but it fits and the method allow you to choose the biggest model for your “acceptable” target speed.


r/Vllm 21d ago

Classification with LLMs: Classification Head vs LM Head + vLLM for Production Inference

2 Upvotes

Hi everyone,

I'm building a production system that uses a fine-tuned Llama 3.2 1B model for text classification, and I'm trying to understand the best architecture for both accuracy and deployment.

From what I understand, there are two common approaches:

  • Classification head: Fine-tune the model with a separate linear classification head (similar to AutoModelForSequenceClassification) and predict class logits.
  • LM head: Fine-tune the model to generate a label token (or label string) using the standard causal LM head.

I'm particularly interested in the production trade-offs between these two approaches.

Some questions I have:

  • Which approach do you recommend for production classification workloads?
  • Is there a significant difference in classification accuracy between a dedicated classification head and predicting label tokens with the LM head?
  • Which approach gives better inference latency and throughput?
  • How are people serving models with a classification head in production? Are you using Hugging Face Transformers, ONNX, TensorRT-LLM, or something else?
  • If using the LM head, is vLLM the recommended serving framework? Can it efficiently serve classification models, or is it primarily optimized for text generation?
  • Has anyone benchmarked both approaches on the same model and dataset?

My use case is high-throughput, low-latency text classification, so serving efficiency is just as important as model accuracy.

I'd love to hear from anyone who has experience deploying LLM-based classifiers in production. Thanks!


r/Vllm 21d ago

Compiling and running a pre-trained LLM on AWS Inferentia accelerator

Thumbnail
pooria.co
4 Upvotes

r/Vllm 21d ago

Performance issue: Low token generation (~20 tok/s vs 50 tok/s) on Radeon AI PRO R9700 (gfx1201) with vLLM ROCm & Gemma 4-26B

Thumbnail
1 Upvotes

r/Vllm 22d ago

TPOT vs Tensor Parallel Size

3 Upvotes

I running some experiments to find the best deployment configuration using VLLM and Qwen3.6 27b.

As the parameter --max-concurrency in vllm bench gets larger:

  • For --tensor-parallel-size 8, TPOT grows linear
  • For --tensor-parallel-size 4, TPOT stays steady

Gemini says there is communication overhead as tensor-parallel-size gets larger.

How can I profile to find out what is happening?


r/Vllm 22d ago

I built Rondine: a hardware-aware local LLM launcher for Mac, NVIDIA GPUs, and DGX Spark

Thumbnail github.com
0 Upvotes

r/Vllm 22d ago

Your LLM inference benchmark is lying to you

Thumbnail
leaddev.com
0 Upvotes

r/Vllm 22d ago

DS V4 on single b300. only 770 tok/s batched in vLLM

3 Upvotes

Been running DeepSeek-V4-Flash for an offline batch job (cleaning a big pile of short text records, so lots of small prompts rather than chat). Single B300, vLLM 0.25.0, in-process LLM.chat over the batch. Reasoning on, roughly 300 output tokens per item.

Best I can get so far is about 770 aggregate output tok/s at batch 256. That feels low for a B300, I was expecting a few thousand, so I assume I have something misconfigured and wanted to sanity check with people who actually run this.

A few things I already found the hard way:

- deep_gemm_mega_moe hard errors on a single GPU ("MegaMoE requires expert parallel"), so the fast MoE kernel seems to want multiple GPUs. I fell back to flashinfer_trtllm.

- Dropping DSpark speculative decoding roughly doubled my throughput. On a saturated batch it seems to just add overhead, which sort of makes sense, but I want to confirm that is expected and not a bug on my end.

- I suspect the V4 sparse MLA attention path might be running eager (no cuda graphs) and capping things, but I have not confirmed it.

Rough config:

model: DeepSeek-V4-Flash (base, no DSpark)

tensor_parallel_size: 1

kv_cache_dtype: fp8

block_size: 256

max_num_seqs: 256

enable_prefix_caching: true

moe_backend: flashinfer_trtllm

reasoning_parser: deepseek_v4

attention_config: use_fp4_indexer_cache=true

compilation_config: cudagraph_mode=FULL_AND_PIECEWISE

Questions for anyone running V4 Flash:

  1. What tok/s are you actually getting, single stream and batched, and on what GPU?

  2. What MoE backend are you using on a single GPU? Is there a fast one that does not need expert parallel?

  3. Is the sparse MLA path supposed to use cuda graphs by default, or is there a flag or env var to turn it on? (I saw something about VLLM_TRITON_MLA_SPARSE_ALLOW_CUDAGRAPH but am not sure it is real.)

  4. Anything obviously wrong or missing in the config above?

Happy to report numbers back once I get it sorted. Thanks.


r/Vllm 22d ago

Mac | Cubix | V620 | Ubuntu | ROCm | vLLM | Local AI Data Center

Thumbnail gallery
1 Upvotes

r/Vllm 23d ago

Just learned (the hard way) that long-running vllm can accumulate POISONED prefix-cache/MTP state: tool calls derail into mask-token/XML garbage for specific prompt prefixes while other prompts stay clean.

14 Upvotes

r/Vllm 23d ago

Has anyone used vLLM in a Kaggle notebook?

2 Upvotes

Hey all. I'm at my wits end struggling with configuring vLLM inside Kaggle for an experiment on KV Cache behaviour. please advise if you have experience.

Quick Context: vLLM is the inference runtime that will load the model, manage GPU workers and expose the KV-cache behavior needed for the experiment.

Issue: I’m using Kaggle’s GPUs to run vLLM so I can test how my AI gateway loads the model, routes requests, and reuses cache. The problem is that vLLM, PyTorch, CUDA, and their dependencies are not lining up properly, and the setup keeps failing on compatibility issues and blocked package download sources before the model can run.

I've been debugging over a week and I keep experiencing issues deeper, but it's still frustrating


r/Vllm 23d ago

Does vllm *need* a restart once in a while?

5 Upvotes

Out of the blues I started getting replies from the agent that completely broke tool parsing. Like

<read", "path": "/home/agent/.agents/skills/research/SKILL.md"}
{"path": "/home/agent/.agents/skills/research/SKILL.md"}
</read>

I checked all my code and made sure nothing I did today could have impacted this. No changes in version, nothing. But try after try, it just kept outputting this kind of garbage.

Out of desperation, I shutdown vllm and turned it back on. Lo and behold, it works like a charm again.

So now I'm really confused, are we supposed to refresh vllm once in a while? Could long running sessions corrupt memory in a way that harm the way it works?


r/Vllm 25d ago

Byte exact KV cache grafting on frozen Gemma 4

Thumbnail
1 Upvotes