quantized to OCP MXFP4 4-bit weights in the same Quark checkpoint container as The weights are plain RTN, not AWQ: see the note below. The 15 MTP tensors are kept in BF16; the radiance runtime loads them with RADIANCEQUARKBF16MTP=1. Why RTN instead of AWQ. The first build of this checkpoint used AWQ with the same smoothing recipe as AMD's release. The AWQ fold itself was mathematically consistent, but on this model a few layers converged to weights to 32-element MXFP4 blocks then destroyed those layers on real, outlier-carrying inputs (layer 7 output relative error ~324), and repairing the worst layers individually was not enough; the remaining smoothed layers still accumulated too much…
span-02 is an open-weight model for image and text to text from He Li, released under Apache License 2.0. It has 15.8B parameters and a 262,144-token context. At 16-bit it needs about 38 GB of GPU memory, which fits on 1x MI300X from $1.85 an hour, at the lowest prices in the SAVRN Index.
span-02 is a decision model: it answers typed questions about a state (JSON or text, plus up to 4 images) with a full probability distribution over the options, in the Decision Index /v1/systemone wire format.
Runs On
What it takes to serve span-02 (15.8B parameters): the memory its weights need at each precision, and the cheapest way to rent enough data-center GPUs to hold them.
| Precision | Weights | Memory needed | Cheapest setup | Per hour | Also fits |
|---|---|---|---|---|---|
| 16-bit | 31.6 GB | 38.0 GB | 1x MI300X (192 GB) Vultr |
$1.85 | 1x H100 $1.99 · 1x MI325X $2.00 |
| 8-bit | 15.8 GB | 19.0 GB | 1x MI300X (192 GB) Vultr |
$1.85 | 1x H100 $1.99 · 1x MI325X $2.00 |
| 4-bit | 7.9 GB | 9.5 GB | 1x MI300X (192 GB) Vultr |
$1.85 | 1x H100 $1.99 · 1x MI325X $2.00 |
Memory is the weights at that precision plus 20% for the runtime and a short context; a long context needs more. Prices are the lowest on-demand hourly rates in the SAVRN Index, read Oct 18, 2026.
span-02 on every accelerator the SAVRN Index prices, at every precision
Model Card
By He Li, published under apache-2.0, revision 80e7e3a0d4ce.
span-02 is a decision model: it answers typed questions about a state (JSON or text, plus up to 4 images) with a full probability distribution over the options, in the Decision Index /v1/systemone wire format. It is a fine-tune of Gemma 4 26B-A4B (mixture of experts, about 4B active parameters per token), quantized (NVFP4 experts, FP8 dense layers) and served by a custom Rust/CUDA engine for Blackwell GPUs (sm120: RTX 5090, RTX PRO 6000) that is included in this repo (engine/). Before answering it may think. If the top probability of the no-think answer is below 0.8, the model writes a greedy thought. Its length limit comes from a deterministic thought budget: a fixed cost model…
Read He Li's full model card
span-02 is a decision model: it answers typed questions about a state (JSON or text, plus up to 4 images)
with a full probability distribution over the options, in the Decision Index /v1/systemone wire format.
It is a fine-tune of Gemma 4 26B-A4B (mixture of experts, about 4B active parameters per token), quantized
(NVFP4 experts, FP8 dense layers) and served by a custom Rust/CUDA engine for Blackwell GPUs (sm_120: RTX 5090,
RTX PRO 6000) that is included in this repo (engine/).
Before answering it may think. If the top probability of the no-think answer is below 0.8, the model writes a
greedy thought. Its length limit comes from a deterministic thought budget: a fixed cost model (think_cost.json)
turns a 750 ms target into a per-question token cap that depends only on the request (prompt length, images,
number of questions and of thinking questions), so the same request always gets the same thought. After a thought
the answer is read out again, and the final distribution is the average of the two:
0.5 x the no-think distribution + 0.5 x the post-thought distribution, for every question type. A choice answer is
the option with the highest final probability. Thoughts are decoded with speculative decoding (Gemma's public MTP
draft). The verification is greedy, so the thought is token-identical to plain greedy decoding.
Outputs are typed: choice, noul (yes/no probability), score (ordinal levels) and number (a free-form number).
The model never returns free text as an answer.
Quantization
This checkpoint is engine-native. It cannot be loaded by transformers or vLLM.
| part | format |
|---|---|
| MoE experts | NVFP4 W4A4 (e2m1 weights, FP8-e4m3 scale per 16 elements, FP32 global scale; activations NVFP4 with static per-layer global scales) |
| attention and dense MLP linears | FP8 e4m3 W8A8 (per-output-row weight scale, dynamic per-token activation scale) |
| tied embedding / LM head | FP8 e4m3 per row |
| vision tower, router, norms, KV cache | bf16 |
model.safetensors is 16.4 GB. GPU memory in use at serving time is about 26 GB.
Hardware
- An NVIDIA Blackwell GPU with compute capability 12.0 (
sm_120a). Tested on an RTX PRO 6000 Blackwell (96 GB), where the latency below was measured, and on an RTX 5090 (32 GB). - NVIDIA driver with CUDA 12.9 support (R575 or newer).
- To build: CUDA toolkit 12.8+ (
nvcc) and Rust. No GPU is needed at build time.
Other GPU architectures are not supported, because the kernels use the sm_120a block-scaled FP4/FP8 tensor-core instructions.
Files
| file | what |
|---|---|
model.safetensors, config.json |
quantized weights and the Gemma-4 config |
tokenizer.json, tokenizer_config.json, chat_template.jinja, generation_config.json |
tokenizer and chat template |
processor_config.json |
Gemma-4 image processor at the served budget: max_soft_tokens 560 (about 1.3 MP) |
draft_vocab_16384.json |
pruned 16384-token vocabulary for the MTP draft head |
think_cost.json |
fixed cost model of the deterministic thought budget (--think-cost; calibrated on an RTX PRO 6000) |
engine/ |
source of dllm-server (Rust + CUDA; see engine/README.md) |
launch.sh |
finds or downloads the weights and the draft, then starts the server with the settings below |
Dockerfile, .dockerignore |
two-stage image: CUDA devel build, then CUDA base runtime |
NOTICE |
licenses and attributions |
The MTP draft model is not in this repo. launch.sh downloads the public
google/gemma-4-26B-A4B-it-assistant.
Quickstart
Docker:
hf download lihe07/span-02 --local-dir span-02 && cd span-02
docker build -t span-02 .
docker run --gpus all -p 8000:8000 -v "$PWD":/model:ro -e DLLM_MODEL_DIR=/model -v span02-data:/data span-02
Without -v "$PWD":/model ... DLLM_MODEL_DIR, the container downloads this repo itself. Pass -e HF_TOKEN for
that while the repo is private.
Without Docker (CUDA 12.8+ toolkit and Rust installed):
hf download lihe07/span-02 --local-dir span-02 && cd span-02
(cd engine && NVCC=/usr/local/cuda/bin/nvcc cargo build --release -p dllm-server)
bash launch.sh # serves on 0.0.0.0:8000; PORT / HOST / AR_API_KEY are optional
Startup takes about 10 s plus about 7 s of warmup. GET /health returns {"ok":true,...} when the server is ready.
API
POST /v1/systemone (POST /v1/decisions is an alias with the same body and response). The state field
accepts any JSON value. images (optional) is a list of up to 4 images as data URIs or bare base64.
Question types:
* choice: criteria maps each option key to its description (1 to 679 options). The answer is the argmax,
its confidence = (p_max - 1/n) / (1 - 1/n), and the probabilities in criteria order.
* noul: the probability that the statement is true. criteria is optional: {"true": ..., "false": ...}.
* score: criteria is an ordered array of 2 to 10 level descriptions, from low to high. The answer is
score = sum_i i x p_i, with the per-level probabilities, a legend and a confidence.
* number (our extension of the format): a free-form number, no criteria. The model writes the number greedily
after its (optional) thought, as it was trained (the plain decimal, e.g. 391 or 2.5, at most 32 tokens). The
answer is {"type": "number", "number": 391.0, "text": "391", "confidence": 0.98}: number is the parsed value
(null if the text is not a number), confidence = exp(mean log-probability of the generated answer tokens).
The think gate is trained for option questions only, so number questions think only with "think": "on".
Request:
curl -s localhost:8000/v1/systemone -H 'content-type: application/json' -d '{
"model": "span-02",
"state": {"customer": "My package arrived damaged and nobody answers my emails. I want a refund now.",
"order": {"id": 123, "days_late": 4}},
"questions": {
"dept": {"type": "choice", "instructions": "Which team should handle this?",
"criteria": {"returns": "Exchanges, wrong or damaged items",
"shipping": "Delivery status, delays, lost packages",
"billing": "Charges, invoices, payment problems"}},
"refund": {"type": "noul", "instructions": "Does the customer ask for a refund?"},
"anger": {"type": "score", "instructions": "How frustrated is the customer?",
"criteria": ["Not frustrated: calm or positive", "Somewhat frustrated: mild annoyance",
"Very frustrated: angry, hostile or threatening to leave"]}}}'
Response:
{"model": "span-02",
"answers": {
"dept": {"type": "choice", "choice": "returns", "confidence": 0.945,
"probabilities": {"returns": 0.963, "shipping": 0.024, "billing": 0.013}},
"refund": {"type": "noul", "noul": 0.99999},
"anger": {"type": "score", "score": 1.9999,
"legend": {"0": "Not frustrated: calm or positive", "1": "Somewhat frustrated: mild annoyance",
"2": "Very frustrated: angry, hostile or threatening to leave"},
"probabilities": {"0": 0.000008, "1": 0.00012, "2": 0.99987}, "confidence": 0.9998}},
"usage": {"input_tokens": 412, "output_tokens": 3,
"think": {"dept": false, "refund": false, "anger": false},
"trace_tokens": {"dept": 0, "refund": 0, "anger": 0}, "latency_ms": 41.7}}
(The token counts and latency in this response are illustrative.)
Extensions to the Decision Index format (clients that follow the official schema can ignore them):
* "think": "auto" | "on" | "off" in the request overrides the gate for that request. auto (the default)
uses the tau 0.8 gate; on thinks for every question, off never thinks.
* "budget_ms": <number> (0 to 600000) sets the wall-clock thinking budget of that request in milliseconds; 0
means no wall-clock budget (a thought ends at the end-of-thought token, EOS or the cap). Without it, a request
with "think": "on" thinks to completion (up to the cap) and other requests use the server's --budget-ms.
The deterministic --think-ms cap of the submission settings applies regardless; budget_ms only adds or removes
a wall-clock deadline (the submission server has none), so requests without it stay deterministic.
* "return_trace": true adds usage.traces = {question id: thought text} for the questions that thought.
* With images, the response also has a top-level image_tokens field (the total image soft tokens).
* usage.think and usage.trace_tokens report which questions thought and how long the thoughts were.
Errors are {"error": {"message": ...}}: 400 for invalid JSON or a context that is too long, 413 for a body over
64 MB, and 422 for schema errors, more than 4 images, an image that cannot be decoded, or too many options.
The capacity errors carry the Decision Index capacity markers, so the DI client records unsupported.
Serving settings (Decision Index submission)
--max-len 16384 --budget-ms 0 --tau 0.8 --cap 1024 --think-ms 750 --think-cost think_cost.json
--image-soft-tokens 560 --serial --no-prefix-cache --spec-max-branches 16 --pages 12000 --kv-gb 24
--budget-ms 0: there is no wall-clock limit; the clock is never read for thinking decisions.--think-ms 750 --think-cost think_cost.json: deterministic thought budget. Each request's per-question thought cap = floor((750 - fixed) / per_token(n)), where fixed is the modelled prompt, image and readout time of that request and per_token(n) the modelled time per thought token with n of its questions thinking together. It is a pure function of the request, so answers do not depend on the machine or its load. A thought ends at the end-of-thought token, at EOS, or at that cap (at most--cap 1024). A short single question gets about 330 thought tokens, a request with many thinking questions or a long prompt fewer.--tau 0.8: think when the no-think top probability is below 0.8. The final distribution is then 0.5 x no-think + 0.5 x post-thought (choice, score and noul alike).--spec-draft(passed bylaunch.sh): MTP speculative decoding of the thought with an adaptive draft depth and a pruned 16384-token draft vocabulary. It is lossless (token-identical to greedy decoding).--image-soft-tokens 560: the Gemma-4 image budget (about 1.3 MP; aspect ratio kept).--serial --no-prefix-cache --spec-max-branches 16: each answer is a deterministic function of its request. It does not depend on load or on earlier requests (for up to 16 questions of one request thinking at once).--serialruns one request at a time; concurrent clients queue.--pages 12000 --kv-gb 24: KV cache pools (full-attention layers 12000 x 16 = 192K tokens, 3.9 GB; sliding-window layers get the rest of--kv-gb 24, ~20 GB), sized so that every Decision Index request fits on its own under--serial(the largest needs about 3.7K full pages: many questions with long tails). The pool size does not change any answer. The server uses about 41 GB of GPU memory.
Latency
Measured with the submission settings on one RTX PRO 6000 Blackwell, one request at a time, as client wall time per request including HTTP (ms). The Decision Index rule requires the median, mean and p80 each to be at most 1000 ms.
| request mix | n | median | mean | p80 | accuracy (choice questions) |
|---|---|---|---|---|---|
| DI public text 0.3, stratified sample (42 benchmarks), DI kit | 400 | 71 | 308 | 712 | 0.923 (2725 questions) |
| DI public vision: CV-Bench, BLINK, RealWorldQA, DI kit | 150 | 186 | 291 | 642 | 0.747 |
| image rows of 6 DI vision benchmarks (incl. MMMU-Pro vision), DI kit | 210 | 292 | 389 | 699 | 0.652 |
| think-heavy question set (78 % of questions think) | 150 | 616 | 514 | 770 | 0.562 |
The rule is met on every mix measured, with margin. Against a plain 256-token cap on the same machine and requests, accuracy is the same within noise (pooled paired difference -0.03 points, 95 % CI [-0.39, +0.34]) and the tail is much shorter (DI text requests over 1 s: 34 -> 4 of 400; slowest 2.8 s -> 1.07 s). Against a blend that puts the post-thought half on the post-thought top option only (one-hot), the averaged distributions have the same accuracy within noise (+0.13 points, 95 % CI [-0.06, +0.35], 3,707 choice questions, same thoughts) and are better calibrated (log-loss 0.409 -> 0.397, Brier score 0.200 -> 0.193; on the questions that thought 1.368 -> 1.290 and 0.734 -> 0.689). Speculative decoding runs at about 480 thought tokens/s at batch 1 on real thoughts on this GPU (2.1 ms per token).
Capacity limits
Requests over these limits are rejected with the DI capacity markers. Nothing is truncated. * Choice questions: 1 to 679 options. * Images: at most 4 per request (PNG, JPEG, GIF, BMP, TIFF or WebP). Each image uses at most 560 soft tokens. * Context: the prompt tokens + 562 per image + the reserved thought tokens + 3 must fit in 16384 tokens. The reservation is the deterministic cap of a lone thinking question of that size (about 330 tokens for a short prompt, about 145 at 16k prompt tokens). That allows up to about 16240 prompt tokens without images. * KV cache: a request whose prompt pages (shared prefix + every question's own tail) exceed the whole KV pool is rejected with 422 "maximum context length"; none of the DI 0.3 public requests does with the pools above. * Request body: at most 64 MB.
License
The weights are a derivative of Google's Gemma 4 (google/gemma-4-26B-A4B-it) and are distributed under the
Gemma 4 license terms, which are Apache 2.0:
ai.google.dev/gemma/docs/gemma_4_license.
The serving engine in engine/ is Apache-2.0. It ports algorithms from vLLM, SGLang, FlashInfer and other
projects, which are credited in NOTICE and in the source file headers.
Configuration
- Architecture
- Gemma4ForConditionalGeneration
- Context length (tokens)
- 262,144
- Layers
- 30
- Hidden size
- 2,816
- Feed-forward size
- 2,112
- Attention heads
- 16
- Key/value heads
- 8
- Head dimension
- 256
- Vocabulary size
- 262,144
- Experts
- 128
- Sliding window (tokens)
- 1,024
- Model type
- gemma4
Identity and Version
- Repository
- lihe07/span-02
- Publisher
- He Li
- Task
- Image and text to text
- Modality
- Image and text
- Library
- Not stated by the source
- Parameters
- 15.8B parameters
- Languages
- moe
- Revision
- 80e7e3a0d4ce26549b91b361908d5df9cfe3aeb0
- First published
- 2026-10-13
- Last updated
- 2026-10-14
Files and Weights
101 files, 16.4 GB in total. The weights are 1 file totalling 16.4 GB in safetensors.
Every file
| File | Type | Size | SHA-256 |
|---|---|---|---|
| model.safetensors | Weights | 16.4 GB | 5105d39df626 |
| config.json | Configuration | 4.2 KB | — |
| draft_vocab_16384.json | Configuration | 112.8 KB | — |
| engine/crates/core/tests/data/draft_config.json | Configuration | 2.3 KB | — |
| engine/crates/core/tests/data/prompts.json | Configuration | 5.9 KB | — |
| engine/crates/server/tests/golden/expected.json | Configuration | 8.2 KB | — |
| generation_config.json | Configuration | 208 B | — |
| processor_config.json | Configuration | 1.7 KB | — |
| think_cost.json | Configuration | 298 B | — |
| NOTICE | Documentation | 3.4 KB | — |
| README.md | Documentation | 14.3 KB | — |
| engine/README.md | Documentation | 3.4 KB | — |
| Dockerfile | Other | 1.9 KB | — |
| chat_template.jinja | Other | 18.7 KB | — |
| engine/Cargo.lock | Other | 45.0 KB | — |
| engine/Cargo.toml | Other | 1.0 KB | — |
| engine/crates/core/Cargo.toml | Other | 270 B | — |
| engine/crates/core/src/config.rs | Other | 14.6 KB | — |
| engine/crates/core/src/lib.rs | Other | 406 B | — |
| engine/crates/core/src/loader.rs | Other | 7.9 KB | — |
| engine/crates/core/src/policy.rs | Other | 14.9 KB | — |
| engine/crates/core/src/quant.rs | Other | 4.0 KB | — |
| engine/crates/core/src/serving.rs | Other | 1.9 KB | — |
| engine/crates/core/src/tensor.rs | Other | 869 B | — |
| engine/crates/kernels/Cargo.toml | Other | 171 B | — |
| engine/crates/kernels/build.rs | Other | 2.5 KB | — |
| engine/crates/kernels/cuda/attn_decode.cu | Other | 13.9 KB | — |
| engine/crates/kernels/cuda/attn_prefill.cu | Other | 10.4 KB | — |
| engine/crates/kernels/cuda/common.cuh | Other | 2.4 KB | — |
| engine/crates/kernels/cuda/embed.cu | Other | 1.5 KB | — |
| engine/crates/kernels/cuda/fp4.cuh | Other | 4.7 KB | — |
| engine/crates/kernels/cuda/head.cu | Other | 11.7 KB | — |
| engine/crates/kernels/cuda/letter_readout.cu | Other | 1.3 KB | — |
| engine/crates/kernels/cuda/lin_common.cuh | Other | 4.0 KB | — |
| engine/crates/kernels/cuda/linear.cu | Other | 25.4 KB | — |
| engine/crates/kernels/cuda/lm_head.cu | Other | 2.8 KB | — |
| engine/crates/kernels/cuda/moe.cu | Other | 15.9 KB | — |
| engine/crates/kernels/cuda/moe_prefill.cu | Other | 13.7 KB | — |
| engine/crates/kernels/cuda/moe_route.cu | Other | 1.5 KB | — |
| engine/crates/kernels/cuda/norm.cu | Other | 8.6 KB | — |
| engine/crates/kernels/cuda/pdl.cuh | Other | 1.1 KB | — |
| engine/crates/kernels/cuda/qkv_prep.cu | Other | 5.9 KB | — |
| engine/crates/kernels/cuda/rmsnorm.cu | Other | 3.5 KB | — |
| engine/crates/kernels/cuda/rope_kv_write.cu | Other | 3.5 KB | — |
| engine/crates/kernels/cuda/spec.cu | Other | 6.9 KB | — |
| engine/crates/kernels/cuda/vision_attn.cu | Other | 13.7 KB | — |
| engine/crates/kernels/cuda/vision_gemm.cu | Other | 7.6 KB | — |
| engine/crates/kernels/cuda/vision_inject.cu | Other | 686 B | — |
| engine/crates/kernels/cuda/vision_misc.cu | Other | 8.2 KB | — |
| engine/crates/kernels/src/attn.rs | Other | 6.3 KB | — |
| engine/crates/kernels/src/backend.rs | Other | 3.8 KB | — |
| engine/crates/kernels/src/gpu.rs | Other | 6.5 KB | — |
| engine/crates/kernels/src/head.rs | Other | 1.9 KB | — |
| engine/crates/kernels/src/lib.rs | Other | 1.4 KB | — |
| engine/crates/kernels/src/linear.rs | Other | 4.8 KB | — |
| engine/crates/kernels/src/moe.rs | Other | 5.8 KB | — |
| engine/crates/kernels/src/norm.rs | Other | 1.7 KB | — |
| engine/crates/kernels/src/ops.rs | Other | 5.5 KB | — |
| engine/crates/kernels/src/spec.rs | Other | 2.9 KB | — |
| engine/crates/kernels/src/vision.rs | Other | 6.0 KB | — |
| engine/crates/kernels/tests/gpu.rs | Other | 12.7 KB | — |
| engine/crates/model/Cargo.toml | Other | 252 B | — |
| engine/crates/model/src/draft.rs | Other | 12.5 KB | — |
| engine/crates/model/src/gpu_model.rs | Other | 26.1 KB | — |
| engine/crates/model/src/gpu_model/forward.rs | Other | 8.3 KB | — |
| engine/crates/model/src/gpu_model/graphs.rs | Other | 4.7 KB | — |
| engine/crates/model/src/lib.rs | Other | 225 B | — |
| engine/crates/model/src/rope.rs | Other | 1.4 KB | — |
| engine/crates/model/src/spec.rs | Other | 14.5 KB | — |
| engine/crates/model/src/vision.rs | Other | 10.4 KB | — |
| engine/crates/model/tests/gpu.rs | Other | 5.4 KB | — |
| engine/crates/runtime/Cargo.toml | Other | 261 B | — |
| engine/crates/runtime/src/engine.rs | Other | 85.8 KB | — |
| engine/crates/runtime/src/fake.rs | Other | 13.4 KB | — |
| engine/crates/runtime/src/lib.rs | Other | 584 B | — |
| engine/crates/runtime/src/model.rs | Other | 9.2 KB | — |
| engine/crates/runtime/src/radix.rs | Other | 17.0 KB | — |
| engine/crates/runtime/src/tests/engine.rs | Other | 18.4 KB | — |
| engine/crates/runtime/src/tests/mod.rs | Other | 1.8 KB | — |
| engine/crates/runtime/src/tests/swa.rs | Other | 5.6 KB | — |
| engine/crates/runtime/src/think.rs | Other | 3.3 KB | — |
| engine/crates/server/Cargo.toml | Other | 523 B | — |
| engine/crates/server/src/lib.rs | Other | 49.9 KB | — |
| engine/crates/server/src/main.rs | Other | 133 B | — |
| engine/crates/server/src/wire.rs | Other | 3.6 KB | — |
| engine/crates/server/tests/golden.rs | Other | 2.8 KB | — |
| engine/crates/server/tests/golden/requests.jsonl | Other | 19.4 KB | — |
| engine/crates/vision/Cargo.toml | Other | 453 B | — |
| engine/crates/vision/src/decode.rs | Other | 11.4 KB | — |
| engine/crates/vision/src/lib.rs | Other | 10.7 KB | — |
| engine/crates/vision/src/png_fast.rs | Other | 22.9 KB | — |
| engine/crates/vision/src/pool.rs | Other | 1.3 KB | — |
| engine/crates/vision/src/resize.rs | Other | 18.6 KB | — |
| engine/crates/vision/tests/robust_test.rs | Other | 8.4 KB | — |
| launch.sh | Other | 3.6 KB | — |
| .dockerignore | Repository | 35 B | — |
| .gitattributes | Repository | 1.6 KB | — |
| engine/.gitignore | Repository | 8 B | — |
| engine/crates/core/src/tokenizer.rs | Tokenizer | 12.3 KB | — |
| tokenizer.json | Tokenizer | 32.2 MB | cc8d3a0ce364 |
| tokenizer_config.json | Tokenizer | 3.1 KB | — |
License and Download
- License
- apache-2.0
- Access
- Open weights, no gate
- Download size
- 16.4 GB
Released by He Li through its official repository on Hugging Face. Read the license.
Built From
- Derived from google/gemma-4-26B-A4B-it
Memory Requirements
| Precision | Weights in memory |
|---|---|
| As published | 16.4 GB |
| 16-bit | 31.6 GB |
| 8-bit | 15.8 GB |
| 4-bit | 7.9 GB |
Weights only, from the published parameter count; the key-value cache and runtime add to this.
Questions About span-02
How much GPU memory does span-02 need?
About 38 GB at 16-bit and 9.5 GB at 4-bit: the weights (15.8B parameters) plus a working margin. A long context needs more.
What is the cheapest GPU to run span-02 on?
At 16-bit, 1x MI300X from $1.85 an hour; at 4-bit, 1x MI300X from $1.85 an hour, at the lowest on-demand prices the SAVRN Index lists.
Can I use span-02 commercially?
Yes. span-02 is released under Apache License 2.0. The Apache License 2.0 is a permissive open-source license. It permits commercial use, modification and redistribution. It requires keeping the license and copyright notices and any NOTICE file, stating significant changes, and it includes an express patent grant from contributors.
What is span-02's context length?
262,144 tokens, from the maximum position embeddings in its published configuration.
Similar Models
Run one of these commands on a separate scorer workstation with SSH access to an idle native ARM64 DGX Spark. The launcher securely prompts for the serving API key, downloads and prepares the pinned model and ARM64 Docker image on the Spark, launches the exact accepted 2,630-slot configuration, opens an authenticated SSH tunnel, installs the pinned official scorer, and runs all 80 tasks twice. Reasoning on — reproduces the canonical 89.2151 run configuration: Reasoning off — reproduces the 86.6870 run configuration: Both options were live-tested against the published Spark service: SSH and host-key validation, authenticated tunnel, endpoint/model check, pinned scorer checkout, 73/73…
Runs on SparkInfer, SGLang and vLLM unmodified — configs for all three are below. Serving many users at once? See concurrency. SparkInfer × this NVFP4 build × the DSpark v2 drafter — an engine, a checkpoint, and a speculative drafter optimized against each other, compounding to 4.3×. The drafter never changes what the model says: the target verifies every drafted token. GeForce RTX 5090–specific NVFP4 checkpoint of Qwen/Qwen3.8-27B, quantized with NVIDIA Model Optimizer. Serves the full native 262,144-token context on 32 GB. With the DSpark v2 drafter: 264.8 tok/s overall — up to 420 on code — on SparkInfer (its bench harness; the HTTP server is autoregressive-only today) and 161.7 tok/s on…
Quantized version of https://huggingface.co/Qwen/Qwen3.8-27B
The RadixArk Qwen3.8-27B-NVFP4 model is the quantized version of Qwen/Qwen3.8-27B. The quantization was produced at RadixArk using NVIDIA Model Optimizer, following a mixed NVFP4 W4A4 recipe. Run on SGLang: launch command and per-platform recipes in the Qwen3.8-27B cookbook. This model is not owned or developed by RadixArk. It is a quantized derivative of Qwen's model; see the upstream Qwen3.8-27B model card for the source model's capabilities, training information, limitations, and license. Global Developers looking to deploy an off-the-shelf, pre-quantized model in AI agent systems, chatbots, RAG systems, and other AI-powered applications. Hugging Face 08/14/2026 via…
NVFP4 checkpoint of an abliterated Swift-Qwen3.8-27B (UkisAI's reasoning-efficient fine-tune of Qwen3.8-27B). For vLLM and SGLang. GGUFs for llama.cpp: The Swift 1.5 version is source). - Swift's own NVFP4 recipe, unmodified, from ukisai/Swift-Qwen3.8-27B-NVFP4, calibrated with NVIDIA ModelOpt. - MTP head and vision tower in BF16, bit-identical to the source. 21.9 GB, NVIDIA ModelOpt mixed-precision format. Needs a vLLM with ModelOpt mixed-precision support (tested on 0.29.0). No --quantization flag. Sampling, as for Swift and Qwen: temperature 1.0, topp 0.95, topk 20, minp 0. The model thinks before answering by default. Tested on an RTX 5090 (32 GB) with vLLM 0.29.0: NVFP4 layers on…