Downloads · 30 days
17
15% of all-time downloads
pablosz1/qwen3.6-35b-a3b-nvfp4-mm
qwen3.6-35b-a3b-nvfp4-mm is a image-text-to-text model from pablosz1. Use it for the image-text-to-text task on the model card, and read the license before you ship it in a product. It is set up for vllm. The card lists the license as apache-2.0.
NVFP4-A16 quantized build of a Qwen3-VL multimodal MoE checkpoint, optimized for inference on Nvidia DGX Spark (GB10, Grace Blackwell, unified 128 GB) via vLLM.
Downloads · 30 days
17
15% of all-time downloads
All-time downloads
110
Public
Parameters
20.8B
23.4 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors23.3 GB · 100%
How the weights are stored.
U816.3B · 78%
From the Hugging Face model README
NVFP4-A16 quantized build of a Qwen3-VL multimodal MoE checkpoint, optimized for inference on Nvidia DGX Spark (GB10, Grace Blackwell, unified 128 GB) via vLLM.
QuantizationModifier, scheme NVFP4A16)recipe.yaml)model.safetensors (~22 GB)compressed-tensors (loaded natively by vLLM >= 0.10 with NVFP4 GEMM backend)| File | Purpose |
|---|---|
model.safetensors | NVFP4-quantized weights |
config.json | HF model config (Qwen3-VL MoE) |
recipe.yaml | LLM Compressor quantization recipe used to produce these weights |
tokenizer.json, tokenizer_config.json | Tokenizer |
preprocessor_config.json, video_preprocessor_config.json, processor_config.json | Qwen3VL image/video processor |
chat_template.jinja | Chat template (qwen3 reasoning + tools) |
generation_config.json | Default generation parameters |
Building the vllm-nvfp4-env environment: see BUILD_ENV.md for the full
procedure (PyTorch + vLLM from source for CUDA 13 / aarch64 / sm121, SDPA + NVFP4 shims, frozen
requirements, smoke test). Shortcut: bash scripts/build-vllm-nvfp4-env.sh once the torch wheel
has been built (step 1 in BUILD_ENV.md).
Once the environment is installed, download the weights for this model:
source ~/llm-test/vllm-nvfp4-env/bin/activate
hf auth login # token with read permission
hf download <your-org-or-user>/qwen3.6-35b-a3b-nvfp4-mm \
--local-dir ~/llm/models/Qwen3.6-35B-A3B-NVFP4-mm \
--local-dir-use-symlinks False
source ~/llm-test/vllm-nvfp4-env/bin/activate
export VLLM_NVFP4_GEMM_BACKEND=marlin
export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
vllm serve ~/llm/models/Qwen3.6-35B-A3B-NVFP4-mm \
--served-model-name qwen3.6-35b-a3b-nvfp4-mm \
--host 0.0.0.0 --port 8015 \
--tensor-parallel-size 1 \
--dtype auto \
--kv-cache-dtype fp8 \
--gpu-memory-utilization 0.90 \
--max-model-len 32768 \
--max-num-seqs 64 \
--reasoning-parser qwen3 \
--enable-auto-tool-choice \
--tool-call-parser qwen3_coder \
--trust-remote-code \
--enforce-eager
Cold start: ~2-5 min. Ready when:
INFO: Application startup complete.
Probe:
curl -s http://localhost:8015/v1/models | jq '.data[0].id'
# -> "qwen3.6-35b-a3b-nvfp4-mm"
docker run -d --name vllm-qwen36-35b-a3b-nvfp4-mm \
--gpus all --ipc=host \
-p 8015:8000 \
-v ~/llm/models:/models:ro \
-e VLLM_NVFP4_GEMM_BACKEND=marlin \
-e PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True \
--entrypoint vllm \
vllm/vllm-openai:gemma4-cu130 \
serve /models/Qwen3.6-35B-A3B-NVFP4-mm \
--served-model-name qwen3.6-35b-a3b-nvfp4-mm \
--host 0.0.0.0 --port 8000 \
--tensor-parallel-size 1 \
--dtype auto \
--kv-cache-dtype fp8 \
--gpu-memory-utilization 0.90 \
--max-model-len 32768 \
--max-num-seqs 64 \
--reasoning-parser qwen3 \
--enable-auto-tool-choice \
--tool-call-parser qwen3_coder \
--trust-remote-code \
--enforce-eager
curl -s http://localhost:8015/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3.6-35b-a3b-nvfp4-mm",
"messages": [
{"role":"user","content":[
{"type":"image_url","image_url":{"url":"data:image/jpeg;base64,<...>"}},
{"type":"text","text":"Extract invoice fields as JSON."}
]}
],
"temperature": 0.0,
"top_p": 0.8,
"max_tokens": 2048
}' | jq
For Qwen3-VL the image processor rejects very high-res inputs; downscale to ~1536 px on the longest edge before sending (300 DPI A4 is too large).
VLLM_NVFP4_GEMM_BACKEND=marlin (Blackwell). Without it vLLM falls back to a slow path.--enforce-eager: graph capture has occasionally hung on this build — eager mode is the safe default.--max-model-len 32768: trimmed from the model's full 131k context for faster KV-cache; raise it if your prompts need more.Qwen3.6-27B-NVFP4-mm, port 8014): both fit thanks to GB10 unified memory. Recommended GPU utilization split: 27B = 0.55, 35B = 0.90 (35B started first, 27B fills the remainder).Quantized from a Qwen3-VL 30B-A3B (MoE, 35B total params) instruct checkpoint with LLM Compressor — see recipe.yaml. Original architecture: Qwen3-VL (vision encoder + LLM with sparse-MoE feed-forward).
Apache-2.0 — same as the base Qwen3-VL model. See LICENSE for the full text and
NOTICE for attribution.
This work stands on the shoulders of many open contributions. In particular:
scripts/nvfp4_fix/ patchesignore: linear_attn recipe choice mirrored hereavarok/dgx-vllm-nvfp4-kernel); the env-var combination that makes NVFP4 work on GB10 comes directly from their writeupFull attribution and links are in NOTICE. If you build on this repo, please keep that file intact and add your own acknowledgements alongside.