provsalt's picture
Upload Qwen3.8 NVFP4 model with NVFP4 PLE
48d9819 verified
|
Raw
History Blame Contribute Delete
5.49 kB
---
library_name: vllm
license: other
license_name: qwen-community-1.0
license_link: LICENSE
base_model: Inferact/Qwen3.8-Flash-Next-NVFP4
base_model_relation: quantized
pipeline_tag: image-text-to-text
inference: false
tags:
- qwen
- qwen3.8
- qwen4
- modelopt
- nvfp4
- vllm
- custom-code
---
# Qwen3.8-Flash-Next NVFP4 with NVFP4 PLE
This repository is a serving derivative of
[`Inferact/Qwen3.8-Flash-Next-NVFP4`](https://huggingface.co/Inferact/Qwen3.8-Flash-Next-NVFP4).
It keeps the ModelOpt NVFP4 backbone unchanged and converts only the BF16
position-learning enhancement (PLE) n-gram table to NVFP4.
This repository contains model weights and Hugging Face metadata only. It does
not include runtime code, shell scripts, Docker files, or result artifacts.
The packed PLE format requires an external `qwen38-nvfp4-ple` runtime plugin.
Stock vLLM and Transformers cannot load it. The checkpoint retains the original
vision tower.
## Storage
| Artifact | Exact bytes | GiB |
|---|---:|---:|
| Source checkpoint payload | 182,738,792,440 | 170.189 |
| Source BF16 PLE table | 102,400,491,520 | 95.368 |
| Converted NVFP4 PLE table | 28,800,138,752 | 26.822 |
| Complete converted checkpoint | 109,138,439,672 | 101.643 |
The conversion saves 73,600,352,768 bytes, or 68.546 GiB. It does not use
REAP or remove experts.
## Why this fits on one DGX Spark
This release targets one NVIDIA DGX Spark because its GB10 CPU and GPU share
128 GB of LPDDR5x unified system memory. [NVIDIA documents the hardware and
memory layout](https://docs.nvidia.com/dgx/dgx-spark/hardware.html). The GPU
executes the NVFP4 backbone. The plugin keeps the 26.822 GiB packed PLE table
CPU-offloaded and decodes only requested rows to BF16. Both allocations draw
from the same physical memory pool.
In a measured full multimodal TP1 run, vLLM reported 73.97 GiB during model
loading and reserved a 2 GiB KV cache. The vision tower added 0.85 GiB over
text-only serving. The PLE worker has been tested only with vLLM's `mp`
executor at TP1.
API startup took about 639 seconds. After image and text requests, the host had
19.8 GiB available with 14.0 GiB of system-wide swap in use. The default
4,096-token context, single sequence, and 2 GiB KV cache are conservative.
This demonstrates fit; it is not a throughput claim.
## External runtime contract
| Component | Required or tested value |
|---|---|
| vLLM image | `vllm/vllm-openai:qwen38-flash-next@sha256:fc120ece0a388cc0aa1caad4a9f1cd92113484ab7ec2fd0efadd62585be05bf8` |
| vLLM version | `0.1.dev20073+g8e685d198` |
| PLE mode | CPU offload with BF16 lookup output |
| Serving model | Full `Qwen4ExpForConditionalGeneration` wrapper |
| Multimodal limits | One image, no video, 65,536-to-262,144-pixel budget |
| Executor | `mp`, including at TP1 |
| Validated GPU | NVIDIA GB10, compute capability 12.1 |
The pinned vLLM `uni` executor does not spawn the PLE CPU worker. The external
plugin must select `mp` and register itself inside vLLM's special PLE
subprocess.
## PLE format
Format `qwen38-nvfp4-ple-v1` stores each group of 16 values as packed E2M1
values, one E4M3 block scale, and one FP32 global decode scale per source PLE
shard. The runtime gathers only requested rows and decodes those rows to BF16.
It never expands the complete table.
## Evaluation
A controlled teacher-forced study used 32 calibration prompts and eight held-
out prompts, covering 236 next-token positions. The executable reference was
the official FP8 backbone with normal PLE behavior.
These measurements isolate changes to the PLE representation. They do not
measure the separate quality difference between the Inferact NVFP4 backbone
and the original model. This uploaded checkpoint uses the first row below;
the REAP rows are comparison experiments only.
| Perturbation | Top-1 agreement | Reference top-1 in candidate top-5 | KL, nats | NLL delta, nats | Logit cosine |
|---|---:|---:|---:|---:|---:|
| NVFP4 PLE only | 91.525% | 100.000% | 0.015591 | +0.019442 | 0.995399 |
| REAP only, 25% experts removed | 87.712% | 100.000% | 0.042569 | +0.043668 | 0.991027 |
| REAP and NVFP4 PLE | 91.102% | 99.576% | 0.040298 | +0.040545 | 0.990824 |
The converted checkpoint passed text-only and full multimodal vLLM smoke
tests. The multimodal run loaded the vision tower and served PNG inputs. With a
neutral prompt, it correctly identified a generated Moon scene, Earth, casual
clothing, and the absence of a spacesuit.
## Limits
- The alignment study is not a task-quality benchmark.
- The runtime checks are smoke tests, not throughput or vision benchmarks.
- Long-context, concurrent-request, tensor-parallel, and expert-parallel paths
have not been validated.
- The validated image path accepts one image within the default pixel budget.
Video is disabled by default and has not been validated.
- The source MTP weights remain in the checkpoint, but the validated runtime
did not enable MTP.
- The tested host had system-wide swap in use after inference.
- The PLE decoder uses ordinary PyTorch CPU operations. A fused decoder could
reduce lookup latency.
## Provenance and license
The backbone comes from
[`Inferact/Qwen3.8-Flash-Next-NVFP4`](https://huggingface.co/Inferact/Qwen3.8-Flash-Next-NVFP4),
which derives from
[`Qwen/Qwen3.8-Flash-Next`](https://huggingface.co/Qwen/Qwen3.8-Flash-Next).
Only the PLE representation changed here.
The model weights remain under the Qwen Community License 1.0 in `LICENSE`.