Downloads · 30 days
1K
3% of all-time downloads
lyf/Qwen3.8-27B-Heretic-ARA-NVFP4-MTP-VL
Qwen3.8-27B-Heretic-ARA-NVFP4-MTP-VL is a image-text-to-text model from lyf. 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 transformers. The card lists the license as apache-2.0.
A compressed-tensors NVFP4 W4A4 release of heretic-org/Qwen3.8-27B-heretic-ara with the original BF16 vision/video tower and all 15 native BF16 MTP tensors retained and runtime-validated on one RTX 5090.
Downloads · 30 days
1K
3% of all-time downloads
All-time downloads
34K
Public
Parameters
27.8B
20.6 GB on disk
Likes
6
Trending 1
Click a slice to open those files.
.safetensors20.6 GB · 100%
How the weights are stored.
U824.4B · 88%
From the Hugging Face model README
A compressed-tensors NVFP4 W4A4 release of heretic-org/Qwen3.8-27B-heretic-ara with the original BF16 vision/video tower and all 15 native BF16 MTP tensors retained and runtime-validated on one RTX 5090.
Release artifact: this repository contains the converted
nvfp4-pack-quantizedcheckpoint. The raw ModelOpt export was an intermediate artifact. Conversion to compressed-tensors is required for the tested Qwen3.8 multimodal + MTP vLLM path.
Primary runtime: vLLM's Qwen3.8 CUDA 13 build. The packed NVFP4 weights, multimodal path, and native MTP drafter were validated with the pinned image below. Hugging Face may display an automatic 8-bit badge because two FP4 values are physically packed in each U8 storage element; the quantization is NVFP4 W4A4.
hf download lyf/Qwen3.8-27B-Heretic-ARA-NVFP4-MTP-VL \
--local-dir ./qwen38-nvfp4
Allow roughly 23 GB for the release plus temporary/cache headroom.
This is the practical RTX 5090 profile: FP8 KV, one sequence, chunked prefill, prefix caching, native MTP n=3, FlashInfer/CUTLASS NVFP4 GEMM, and the vision graph disabled to preserve KV capacity.
docker run --rm --gpus all --ipc=host --network=host \
-e VLLM_NVFP4_GEMM_BACKEND=flashinfer-cutlass \
-e VLLM_USE_FLASHINFER_SAMPLER=1 \
-e PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True \
-v ~/.cache/huggingface:/root/.cache/huggingface \
vllm/vllm-openai@sha256:d392f621bb3e372ecc09f0b0cb88099afe9fa05d37a0450de45eeb8c12b6787e \
--model lyf/Qwen3.8-27B-Heretic-ARA-NVFP4-MTP-VL \
--served-model-name qwen38-nvfp4-mtp \
--host 0.0.0.0 --port 8000 \
--language-model-only \
--max-model-len 196608 \
--kv-cache-dtype fp8 \
--gpu-memory-utilization 0.95 \
--max-num-seqs 1 \
--max-num-batched-tokens 4096 \
--enable-chunked-prefill \
--enable-prefix-caching \
--trust-remote-code \
--reasoning-parser qwen3 \
--enable-auto-tool-choice \
--tool-call-parser qwen3_xml \
--speculative-config '{"method":"mtp","num_speculative_tokens":3}'
Use the same command with:
--max-model-len 262144
--gpu-memory-utilization 0.96
--max-num-batched-tokens 8192
This is a single-concurrency capacity target. Add --enforce-eager when CUDA Graph capture or workspace overhead prevents startup; eager mode trades some performance for lower graph-memory pressure. Start with 192K for a stable operational profile.
The vision tower and encoder cache need additional VRAM. This pinned profile is the verified smoke-test configuration:
docker run --rm --gpus all --ipc=host --network=host \
-e VLLM_NVFP4_GEMM_BACKEND=flashinfer-cutlass \
-e VLLM_USE_FLASHINFER_SAMPLER=1 \
-e PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True \
-v ~/.cache/huggingface:/root/.cache/huggingface \
vllm/vllm-openai@sha256:d392f621bb3e372ecc09f0b0cb88099afe9fa05d37a0450de45eeb8c12b6787e \
--model lyf/Qwen3.8-27B-Heretic-ARA-NVFP4-MTP-VL \
--served-model-name qwen38-nvfp4-mtp-vl \
--host 0.0.0.0 --port 8000 \
--max-model-len 4096 \
--kv-cache-dtype fp8 \
--gpu-memory-utilization 0.92 \
--max-num-seqs 1 \
--max-num-batched-tokens 1024 \
--enable-prefix-caching \
--trust-remote-code \
--reasoning-parser qwen3 \
--enable-auto-tool-choice \
--tool-call-parser qwen3_xml \
--speculative-config '{"method":"mtp","num_speculative_tokens":3}'
For multimodal capacity tuning, 32K is the conservative starting point, 64K–96K is the practical target range, and 128K is aggressive on 32 GB. Validate the chosen image/video limits and encoder-cache budget on your runtime before production.
curl http://127.0.0.1:8000/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{
"model":"qwen38-nvfp4-mtp",
"messages":[{"role":"user","content":"Explain speculative decoding briefly."}],
"max_tokens":256,
"chat_template_kwargs":{"enable_thinking":false}
}'
from openai import OpenAI
client = OpenAI(base_url="http://127.0.0.1:8000/v1", api_key="EMPTY")
r = client.chat.completions.create(
model="qwen38-nvfp4-mtp-vl",
messages=[{
"role": "user",
"content": [
{"type": "image_url", "image_url": {"url": "https://example.com/image.jpg"}},
{"type": "text", "text": "Describe this image."},
],
}],
max_tokens=256,
extra_body={"chat_template_kwargs": {"enable_thinking": False}},
)
print(r.choices[0].message.content)
flashinfer-cutlass is the preferred NVFP4 GEMM backend on SM120; the validated runtime also logged FlashInferCutlassNvFp4LinearKernel.max_num_seqs=1 reserves capacity for one very long conversation. Increase concurrency only after lowering context or measuring free KV blocks.expandable_segments:True reduces allocator fragmentation during long-context and multimodal workloads.| Component | Source |
|---|---|
| Official architecture | Qwen/Qwen3.8-27B |
| Quantized source | heretic-org/Qwen3.8-27B-heretic-ara @ 2dc9b364104881cbb85e390f00195ba6b9d745e9 |
| Behavioral lineage | Heretic / ARA / abliterated |
| Vision/video tower | 333 tensors retained from the same upstream checkpoint, BF16 |
| MTP head | 15 tensors retained from the same upstream checkpoint, BF16 |
| PTQ | NVIDIA Model Optimizer NVFP4 W4A4 |
| Portable packaging | compressed-tensors ModelOptNvfp4Converter |
Heretic v1.2.0+custom ARA de-censoring of Qwen/Qwen3.8-27B, published by trohrbaugh and mirrored under heretic-org. The two source repositories were checked and their model artifacts are byte-identical; the organization mirror adds base-model metadata.
| Component | Format |
|---|---|
| Language-model Linear layers | NVFP4 W4A4, group size 16 |
Vision/video tower (model.visual.*, 333 tensors) | BF16 |
MTP (mtp.*, 15 tensors) | BF16 |
lm_head and token embeddings | BF16 |
Gated DeltaNet conv1d | BF16 |
| Norms, biases and small state tensors | BF16/FP32 as exported |
Checkpoint metadata:
quant_method: compressed-tensors
format: nvfp4-pack-quantized
tensors: 2687
weight files: ~20.56 GB
calibration: 20 samples × 8192 tokens = 163,840 tokens
calibration dataset: abisee/cnn_dailymail, config 3.0.0
Hardware and runtime:
GPU: NVIDIA GeForce RTX 5090 32 GB (SM120)
GPU power limit: 400 W
Runtime: vllm/vllm-openai:qwen38-x86_64-cu130
Runtime digest: sha256:d392f621bb3e372ecc09f0b0cb88099afe9fa05d37a0450de45eeb8c12b6787e
vLLM build: 0.1.dev19754+g3a0914114
PyTorch: 2.13.0+cu130
KV cache: FP8
MTP: n=3
Verified paths:
GET /health → HTTP 200GET /v1/models → expected served modelA red square and a blue circle are displayed on a white background.The video shows a red square and a blue circle on a white background.Measured single-stream results from 1024-token generations:
| Metric | Result |
|---|---|
| Client-observed generation throughput with MTP | 120.5–134.7 tok/s |
| Mean MTP acceptance length | 2.83–2.86 |
| Per-position acceptance | 0.777/0.592/0.463 and 0.808/0.599/0.456 |
| Average draft acceptance | 61.1–62.1% |
| Runtime VRAM during multimodal request | ~28,984 MiB |
These are local measurements for the stated prompts/configuration. They are reproducibility evidence, not broad quality benchmarks or a guaranteed speedup over every non-MTP setup.
docker run --rm --gpus all --ipc=host --network=host \
-v ~/.cache/huggingface:/root/.cache/huggingface \
vllm/vllm-openai:qwen38-x86_64-cu130 \
--model lyf/Qwen3.8-27B-Heretic-ARA-NVFP4-MTP-VL \
--served-model-name qwen38-nvfp4-mtp-vl \
--host 0.0.0.0 --port 8000 \
--max-model-len 32768 \
--kv-cache-dtype fp8 \
--gpu-memory-utilization 0.92 \
--max-num-seqs 1 \
--max-num-batched-tokens 4096 \
--enable-prefix-caching \
--trust-remote-code \
--speculative-config '{"method":"qwen3_5_mtp","num_speculative_tokens":3}'
For short non-thinking responses, pass this at the top level of the request:
{"chat_template_kwargs": {"enable_thinking": false}}
Use the pinned profiles in Quick start for production. The 192K text-only profile is the recommended RTX 5090 long-context setup; 262K is the aggressive single-sequence target. The compact command above remains a readable 32K multimodal example.
Qwen3_5ForConditionalGeneration using CPU/disk offload.NVFP4_DEFAULT_CFG.lm_head, token embeddings, linear_attn.conv1d, visual.*, and mtp.* outside NVFP4.ModelOptNvfp4Converter:
weight → weight_packedinput_scale → reciprocal input_global_scaleweight_scale_2 → reciprocal weight_global_scaleThe converter excludes:
lm_head
model.language_model.embed_tokens
re:.*visual.*
re:.*conv1d.*
re:^mtp.*
See BUILD_MANIFEST.json, VALIDATION_REPORT.json, recipe.yaml, and SHA256SUMS in this repository.
ModelOptNvfp4Converter and portable nvfp4-pack-quantized packagingAll upstream behavioral changes belong to their respective source authors. This repository contributes quantization, packaging, and RTX 5090 runtime validation. It does not claim authorship of Qwen3.8, Heretic/ARA, or Blackfrost's model modifications.
Apache-2.0, following Qwen3.8 and the cited upstream checkpoint. The included LICENSE is copied from the upstream release.