Second product · Apache-2.0

veloGB10

A from-scratch Rust + CUDA inference engine for one to four GB10 machines — NVIDIA DGX Spark and compatible OEM systems. Built for a hand-selected set of large models (Qwen3.5/3.6/3.8 family, Tencent Hy3, KAT-Coder), each ported, measured and gated on real hardware before it ships. No Python runtime, no framework serving stack: one binary plus its PTX kernels.

sm_121 Grace Blackwell 128 GB unified LPDDR5x ~255 GB/s measured bandwidth TP=2 / TP=4 speed mode
QWEN3.8 27B NVFP4 + DFLASH 2 avg peak sustained
Single node>40 tok/s~100~70
TP=2~56 tok/s~105~85
TP=4~85 tok/s~150~125
Single-stream decode, greedy. Averages span content types; peaks and sustained rates are reached on code generation.
Engineering

Subordinate to the memory bandwidth

The DGX Spark has one scarce resource: ~255 GB/s of sustainable memory bandwidth. Every design decision in veloGB10 is about spending it well — fewer bytes, not fewer kernel launches.

Engineered to the roofline

~94% GEMM- and weight-bandwidth-bound, tuned as such: on 9B the LM head sustains 229 GB/s — 90% of the machine's measured pure-read ceiling. NVFP4 tensor-core GEMMs, fused projections, frequency-ranked draft vocabularies.

Bitwise-lossless speculation

The serving GEMM runs one fixed shape, so decode and verify execute identical instruction sequences and greedy MTP speculation is exactly lossless — same tokens, same bytes. Gated under statistical process control, not pass/fail coin flips.

TP as a speed mode

Two or four GB10 boxes decode a single request measurably faster, not just bigger. Zero-config nodes (the head ships weights, settings and calibration at sync) and a per-step agreement guard that aborts loudly on any divergence.

Hybrid-native long context

GatedDeltaNet layers carry a fixed-size recurrent state, so KV grows only on periodic full-attention layers. Native GDN checkpoints make prefix caching (~99% prefill skip on hits) and lossless rollback work on the hybrid architecture. Up to 256K context on the 27B.

OpenAI-compatible server

Streaming, tool calling with schema-aware argument coercion, seedable sampling, continuous batching, prefix caching, reasoning-effort levels, vision on a GPU tower — plus /v1/tokenize endpoints for exact benchmark prompt construction.

Live telemetry out

The engine's --otel-* flags stream per-token generation telemetry (OTLP/HTTP-JSON) straight into VeloBenchmark's receiver — the same live instruments you see on chat, fed by the engine itself. Drops rather than blocks; absent flag means zero cost.

Live traces

Throughput, straight from the engine

Tokens-per-second traces pulled from the engine's live stats panel while serving Qwen3.8-27B NVFP4 + DFlash 2 — the full spread of a session (where throughput bottoms out and where it tops out), per deployment mode.

Single-node throughput trace
single node · mixed ~26 tok/s, code-heavy ~70
TP=2 throughput trace
TP=2 · mixed ~38, sustained ~85
TP=4 throughput trace
TP=4 · mixed ~51, sustained ~125
Supported models

One binary, a deliberate list

Model families are added deliberately rather than generically: each is ported, measured and gated on GB10 hardware before it ships. The model is a directory, not a build.

ModelArchitecture / recipe
Qwen3.5 0.8B–9Bdense hybrid, NVFP4 mixed/full
Qwen3.6 27Bdense hybrid, NVFP4 full
Qwen3.6 35B-A3BMoE hybrid, NVFP4 full
Qwen3.5 122B-A10BMoE hybrid, NVFP4 mixed / GDN4
Qwen3.8 27Bdense hybrid, NVFP4 + DFlash 2, 256K
Tencent Hy3 295B-A21Bpure-GQA MoE, NVFP4
KAT-Coder-V2.5-Dev35B-A3B MoE hybrid, code specialist
Getting it running

Release binary or source

Prebuilt packages on the releases page include the inference binary, the required PTX kernels, SHA-256 checksums and build provenance notes — no compiling required on a DGX Spark. From source it is cargo build --release with the CUDA toolkit present.

# single node, single user (maximum speed)
./gb10_inference --server --model-dir=/path/to/model \
  --port=9000 --max-seq-len=32768 --max-batch=1 \
  --prefix-cache=on --mtp=auto

# two nodes, TP=2 (peer first: zero configuration)
./gb10_inference --node --port 29500            # second GB10
./gb10_inference --server --model-dir=... --tp \
  --nodes <peer-ip>:29500 --port=9000           # head

Full setup guide: single node, TP=2, TP=4 →