kvloom β€” XKV translators

Trained translators for kvloom, the first public implementation of XKV (arXiv:2608.20617) β€” latent KV-cache communication between two frozen heterogeneous language models.

Source code: https://github.com/batuhanzorbeyzengin/kvloom

A translator reads the sharer's and the receiver's KV caches and writes a gated residual into the receiver's cache. Both language models stay frozen; only these 1–10M-parameter translators are trained. Each one is specific to its (sharer, receiver, dataset) triple.

The grid

30 translators: six ordered model pairs Γ— five split-evidence datasets. Scores are the primary metric (F1 for generative QA, accuracy for classification) on 80–100 validation examples, in the paper's setting where each model holds half the evidence.

Sharer Receiver Dataset receiver-only floor with the channel after 5 naive turns
qwen3-0.6b qwen3-0.6b ropes 40.85 46.17 0.00
qwen3-0.6b qwen3-0.6b qasc 55.50 75.40 3.22
qwen3-0.6b qwen3-0.6b strategyqa 57.50 70.00 7.04
qwen3-0.6b qwen3-0.6b musique 18.51 37.81 0.34
qwen3-0.6b qwen3-0.6b hotpotqa_bridge 18.19 39.15 0.53
qwen3-0.6b llama-3.2-3b-instruct ropes 38.09 53.67 0.52
qwen3-0.6b llama-3.2-3b-instruct qasc 79.63 94.33 3.01
qwen3-0.6b llama-3.2-3b-instruct strategyqa 78.75 77.50 15.62
qwen3-0.6b llama-3.2-3b-instruct musique 25.01 44.39 0.00
qwen3-0.6b llama-3.2-3b-instruct hotpotqa_bridge 39.33 57.77 0.42
gemma-3-1b-it qwen3-0.6b ropes 40.85 46.83 1.67
gemma-3-1b-it qwen3-0.6b qasc 55.50 75.07 5.41
gemma-3-1b-it qwen3-0.6b strategyqa 57.50 68.75 19.87
gemma-3-1b-it qwen3-0.6b musique 18.51 40.42 0.98
gemma-3-1b-it qwen3-0.6b hotpotqa_bridge 18.19 39.17 1.50
gemma-3-1b-it llama-3.2-3b-instruct ropes 38.09 53.33 0.15
gemma-3-1b-it llama-3.2-3b-instruct qasc 79.63 95.33 4.27
gemma-3-1b-it llama-3.2-3b-instruct strategyqa 78.75 83.75 0.14
gemma-3-1b-it llama-3.2-3b-instruct musique 25.01 46.43 0.00
gemma-3-1b-it llama-3.2-3b-instruct hotpotqa_bridge 39.33 55.80 1.33
llama-3.2-3b-instruct qwen3-0.6b ropes 40.85 50.67 0.85
llama-3.2-3b-instruct qwen3-0.6b qasc 55.50 75.07 9.87
llama-3.2-3b-instruct qwen3-0.6b strategyqa 57.50 62.50 8.11
llama-3.2-3b-instruct qwen3-0.6b musique 18.51 39.19 0.43
llama-3.2-3b-instruct qwen3-0.6b hotpotqa_bridge 18.19 38.65 1.00
llama-3.2-3b-instruct llama-3.2-3b-instruct ropes 38.09 52.17 0.00
llama-3.2-3b-instruct llama-3.2-3b-instruct qasc 79.63 94.83 0.80
llama-3.2-3b-instruct llama-3.2-3b-instruct strategyqa 78.75 75.00 0.00
llama-3.2-3b-instruct llama-3.2-3b-instruct musique 25.01 44.73 0.00
llama-3.2-3b-instruct llama-3.2-3b-instruct hotpotqa_bridge 39.33 55.05 0.00

Mean across the grid: floor 45.14, with the channel 59.63. The paper reports 57.04 over the same cells.

Read this before chaining turns

The last column is not a typo. These translators are trained single-turn, and re-applying one onto its own output destroys the channel within three turns β€” in 29 of 30 cells it falls below a quarter of its first-turn score.

Recomputing the residual against the original receiver cache instead (clean_base) holds the full advantage indefinitely: perfectly flat across five turns in 30 of 30 cells. Always use it for multi-turn work:

session = Session(..., strategy="clean_base")

The underlying finding β€” that receiver-aware pooling does not suppress evidence it has already sent, so error accumulates rather than self-correcting β€” is documented in the kvloom repository under docs/phase2-findings.md. Per-cell curves are in curves/.

Usage

from kvloom import Session, load_translator

translator = load_translator("qwen3-0.6b__llama-3.2-3b-instruct__ropes.pt")

session = Session(
    sharer="Qwen/Qwen3-0.6B",
    receiver="meta-llama/Llama-3.2-3B-Instruct",
    translator=translator,
    strategy="clean_base",
)
answer = session.turn(question=..., sharer_context=..., receiver_context=...)

Each .pt ships with a .pt.json provenance sidecar recording the model pair, the exact geometry it was trained against, the translator configuration, library versions and a weight hash. load_translator verifies that geometry against the models in use and raises CheckpointError on a mismatch, so a translator cannot be silently applied to the wrong pair.

Status and caveats

  • Exploration checkpoints. 50–75 optimiser steps at the paper's effective batch size of 256, one seed, 80–100 evaluation examples per cell. They reproduce the paper's ordering and beat its reported score in 16 of 30 cells, but this is not a finished sweep and carries no confidence intervals.
  • kvloom is consistently above the paper on MuSiQue and below on ROPES, on every pair. That is structure, not noise, and its cause is not yet identified.
  • Gemma-3 appears only as a sharer. As a receiver it is unsupported: rebuilding its interleaved sliding-window cache has no public path in transformers.

Licence

The translator weights are Apache-2.0. The base models carry their own licences (Qwen, Gemma, Llama 3.2 Community Licence); using these translators requires access to those models on their own terms.

Ablations

ablations/ holds 54 further translators reproducing the paper Table 3 variants (-RP, -RX, lcfp) over six pairs and three datasets. The per-cell table is in ablations/summary.md.

One component-level finding survives the per-dataset split: removing receiver-position retrieval costs 1.68 F1 on ROPES and gains 2.27 on QASC, i.e. it does measurable work on extractive reading and none on multiple choice. The other two variants show positive mean deltas when removed, which at 75 steps and a single seed points at the training budget rather than at the components β€” that is not yet a finding, and is written up as such in the repository.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for batuhanzorbey/kvloom-xkv-translators

Finetuned
Qwen/Qwen3-0.6B
Finetuned
(1240)
this model

Paper for batuhanzorbey/kvloom-xkv-translators