C2C (Cache-to-Cache) is the official code implementation of the paper "Cache-to-Cache: Direct Semantic Communication Between Large Language Models," accepted at the ICLR'26 conference. Its core goal is to enable large language models to communicate directly through KV-Cache, rather than first converting internal representations into text and then passing them to another model.
Purpose and Principle
C2C projects and fuses KV-Cache between models, enabling originally independent LLMs to share semantic representations in a richer and more direct way. According to the official description, this method improves accuracy by 8.5–10.5% compared to a single model, improves by 3.0–5.0% compared to text-based communication, and brings a 2.0x speedup in latency.
The Python package is named rosetta, taken from the Rosetta Stone—the same passage presented in multiple scripts, which unlocked the translation of ancient Egyptian hieroglyphs. C2C plays a similar role: translating between the KV-cache representations of multiple independent LLMs, letting them speak the same language.
Main Capabilities
- Direct cache communication: Transmits semantics between different models through KV-Cache projection and fusion, bypassing text generation.
- General-purpose wrapper: Provides the RosettaModel wrapper, which can apply C2C to your own LLM with a small amount of code.
- Multi-model fusion: Supports fusing the KV-cache of multiple sharer models into a single receiver (available since 2025/12, officially marked as preliminary).
- Pretrained Fuser: Provides released C2C Fuser weights on Hugging Face and a complete list of usable fuser pairings.
- Arbitrary model pairs: Automatically handles cases such as different hidden dimensions, different numbers of layers, different attention head configurations, and different tokenizers.
- Training and evaluation workflow: Only updates the C2C projector parameters, while the source model and target model remain frozen; provides configuration examples and a unified evaluation script.
- Interactive experience: Provides a live chat example and an online Demo, allowing side-by-side model comparison.
Usage
Environment setup: Create a new environment and install the package; training and evaluation require additional dependencies.
Using an existing Fuser: Load the released C2C from the Hugging Face collection Fuser weights and run the inference script.
Run the chat example: script/playground/live_chat_example.py provides an interactive chat example demonstrating cache-to-cache communication using a pretrained projector; multi-sharer support can also be found in this file.
Apply to any LLM: Through the RosettaModel general wrapper, you can integrate your own model with just a few lines of code.
Train the C2C Fuser: Prepare the training configuration in recipe/train_recipe/, specifying the base model, teacher model, projector type and parameters, training hyperparameters, dataset, and output directory; refer to C2C_0.6+0.5.json. During training, only the C2C projector parameters are updated.
Evaluation: Prepare the evaluation configuration in recipe/eval_recipe/, specifying the base model, teacher model, checkpoint directory, generation configuration, evaluation dataset, and output directory; refer to unified_eval.yaml, then run the evaluation.
Code Structure
- rosetta/: The main package. model/ contains the core model components; train/ contains training utilities; baseline/ contains baseline implementations; utils/ contains utility functions for evaluation and model registration.
- script/: Experiment scripts. train/ contains SFT_train.py; evaluation/ contains unified_evaluator.py; dataset/ contains dataset preparation scripts; examples/ contains usage examples.
- recipe/: Configuration files. train_recipe/ contains training configurations; eval_recipe/ contains evaluation configurations.
How to Extend
- Add a Projector: Add a new projector architecture in rosetta/model/projector.py, responsible for transforming the source model's KV-Cache into the target model's semantic space; key components include the projection network (MLP/concatenation-based), the layer-wise selection gating mechanism, and temperature annealing training. Register it in the configuration via {"projector": {"type": "MyProjector", "params": {...}}}.
- Add a Dataset: In rosetta/train/dataset_adapters.py, add a new dataset, and use {"data": {"type": "MyDataset"}} in the configuration.
- Add a Benchmark: Following the pattern of unified_evaluator.py, add evaluation logic in script/evaluation/.
Applicable Scenarios
- Research on non-text communication between LLMs and KV-Cache semantic fusion.
- Experimental comparison of the efficiency and accuracy of multi-model collaboration and model ensemble inference.
- Train and evaluate the C2C projector between your own model pairs.
Limitations and Notes
Multi-sharer support is still at a preliminary stage, and the official team states that it is still under active development. The project's latest updates mention that agent-managed KV-Cache and the corresponding service system will be released in the future. Other details (such as the specific license, pricing, platform requirements, etc.) are not yet provided in the materials.