QVB8 Inference Engine is Ready for Ripple-65B-Preview

#14
by addiesam - opened

Ripple-65B-Preview-QVB8R-2e-3

⚡ Runs on the QVB8 Inference Engine

This pack is made for the QVB8 Inference Engine. It does not load in transformers or other engines.
The engine decodes the compressed weights on the GPU, inside its own CUDA kernels, so a large model runs on small hardware.
Get the engine: github.com/addiesam/qvb8 -- use v1.0.1 or later (release).

Certified L∞-bounded compression: for every restored weight, the error against the original is less than the error bound tau.

the Ripple-65B-Preview language model, compressed with QVB8R (entropy-coded QVB8) at tau = 0.002. This is a weight pack for the
QVB8 inference engine; it is not loadable by transformers directly.

Source model ricursiveAI/Ripple-65B-Preview (bf16)
Format QVB8R (entropy-coded QVB8)
Certified for fp16 and bf16 (restore: fp16+bf16 in manifest.json)
tau 0.002 (for every restored weight, the error against the original bf16 value is less than tau)
Compressed tensors 642, average 4.70 bits per weight over them
Size on disk 38.1 GB

Download

All packs of this model. Use one target pack and one matching draft pack with the QVB8 Inference Engine.

Pack Format tau Size Download
Ripple-65B-Preview qvb8 1e-3 57 GB Ripple-65B-Preview-QVB8-1e-3
Ripple-65B-Preview qvb8r 1e-3 47 GB Ripple-65B-Preview-QVB8R-1e-3
Ripple-65B-Preview qvb8 2e-3 49 GB Ripple-65B-Preview-QVB8-2e-3
Ripple-65B-Preview qvb8r 2e-3 38 GB Ripple-65B-Preview-QVB8R-2e-3
DFlash2 draft model qvb8 5e-3 4.2 GB Ripple-65B-Preview-DFlash2-QVB8-5e-3
DFlash2 draft model qvb8r 5e-3 3.3 GB Ripple-65B-Preview-DFlash2-QVB8R-5e-3

Why certified L∞-bounded compression?

Most quantization is judged by an average: a perplexity or benchmark score. An average hides the worst case. A format can
look good on average and still leave a few weights with a large error, and a large error in the wrong weight can flip a
single token. The result is a sudden wrong word or a stray character from another language in the middle of a normal
answer, which an average score may not show. In our own tests with a 4-bit floating-point format we saw this in server logs.

L∞-bounded means the largest error is controlled, not the average. For this pack:

  • every restored weight differs from the original by less than tau (0.002), and no tensor is allowed to exceed it;
  • the check is made after packing, tensor by tensor, and the largest error found is stored in manifest.json (max_err);
  • tau is your choice: a smaller tau is a tighter bound, a larger file and a perplexity closer to the original; a larger
    tau is a smaller file and a higher perplexity. You choose the trade-off knowing the worst case.

What the bound does not do: it covers the stored weights only. It does not promise that the model's answers are
identical to the original's, or correct. See the engine README for the full disclaimer.

How it was made

Each weight matrix is packed with a per-row bit width and checked after packing: the largest error between the
restored value and the original bf16 weight is recorded per tensor in manifest.json (max_err), and no tensor
exceeds tau. The packing uses no calibration data; it depends only on the weights.

Use

Install the engine (https://github.com/addiesam/qvb8), then follow its README. The target pack and the drafter pack are passed as MODEL and DRAFT.

Update history

2026-11-09: escape_tables.json added (QVB8 Inference Engine v1.0.1)

  • New file next to manifest.json. The pack files are unchanged, so only this one small file needs to be downloaded.
  • This pack is certified for both fp16 and bf16, so its escape list (weights stored exactly) holds what fp16 needs plus what bf16 adds. The new file lists the fp16 table: 49 escapes instead of 1,737,599.
  • For an fp16 run, the engine reads only the fp16 table. In our test (the QVB8-1e-3 pack, fp16, one DGX Spark, one prompt, greedy) decoding went from about 1.8 to about 5.7 tokens per second. bf16 runs are unchanged.
  • Use the QVB8 Inference Engine v1.0.1 or later with this pack: it reads the file. Download the whole repo, so escape_tables.json sits next to manifest.json. An fp16 run (--dtype fp16) without the file stops at start-up and tells you to download it; a bf16 run does not need it. Engine v1.0.0 ignores the file and runs as before (fp16 without the speed-up).
  • The error bound is unchanged: for every restored weight, the error against the original is less than tau, in fp16 and in bf16.

2026-11-09: model card

  • Sizes in GB, a note that the pack runs on the QVB8 Inference Engine, a table of all packs, and the section "Why certified L∞-bounded compression?".

First release (with QVB8 Inference Engine v1.0.0)

  • The weight pack, certified for fp16 and bf16 (restore: fp16+bf16 in manifest.json); max_err per tensor is stored in manifest.json.

License and credits

The weights are derived from ricursiveAI/Ripple-65B-Preview (Apache-2.0) by Ricursive AI; this pack keeps that license.
The engine code is Apache-2.0. No warranty is given: see the engine README for the full disclaimer.

Support this work

I am an independent researcher, and I publish these packs and the engine openly. I need machines to run more tests:
other GPU generations, and more models. If this is useful to you, please support the work:

Sponsor Dr. Addie Sam on GitHub

Papers

Sam, Chi Ngai. Certified L∞-Bounded Compression for AI Models, I: The Contract and the Virtual-Band Index. doi:10.5281/zenodo.23815007

Sam, Chi Ngai. Certified L∞-Bounded Compression for AI Models, II: Compressing a Language Model's Weights, Key–Value Cache and Activations. doi:10.5281/zenodo.23816044

Does this inference engine support multiple Nvidia GPUs? I have a system with two Nvidia Ampere A40 GPUs(48GB VRAM each), would love to run this model on both of them for maximum speed.

Yes, the engine supports for dual card. However, I only have 2x16GB V100, I haven't tested for Ripple, to be honest, but Qwen. (Qwen path have not released, but will release when there is Qwen4, haha)

You can control how many layers per card.


Single card (the existing script)

MODEL=/path/Ripple-65B-Preview_qvb8_1e-3
DRAFT=/path/Ripple-65B-Preview-DFlash2_qvb8_5e-3
scripts/ripple_server.sh start


Tensor parallel across 2 cards

cd /mnt/data/workspace/qvb8_release
export PYTHONPATH="$PWD/src" PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
torchrun --nproc_per_node=2 -m ai_engine.cli.serve PACK
--host 0.0.0.0 --port 8080 --dtype bf16
--kv-cache qvb8 --kv-tau-threshold 0.1 --prefill-linear qvb8
PACK is the model pack directory.
Don't pass --device cuda:N under torchrun. Each rank picks its own card from LOCAL_RANK.


Pipeline split across 2 cards (single process)

export QV_PIPELINE_SPLIT=32 # layers 0..31 on QV_PIPELINE_FIRST, the rest on --device
export QV_PIPELINE_FIRST=cuda:0
python -m ai_engine.cli.serve PACK --device cuda:1 --host 0.0.0.0 --port 8080 --dtype bf16
QV_PIPELINE_SPLIT=32 is only a placeholder. Choose it so each card gets about half the layers.
--device must be a different card from QV_PIPELINE_FIRST, or the code raises an error.

Awesome, will give it a go and let you know the performance I get

Great!! I keep improving it.

The QVB8 inference engine is upgraded to totally support multiple machines and multiple GPU cards:

https://github.com/addiesam/qvb8

Sign up or log in to comment