# 3 ganhos do cache to cache (C2C) entre modelos pequenos

> Published 2026-10-11T20:23:37.117Z on https://www.crazystack.com.br/pt/p/3-ganhos-do-cache-to-cache-c2c-entre-modelos-pequenos/
> Source video: https://www.youtube.com/watch?v=8UusrbaP7nA

O cache to cache (C2C) transfere a memória KV de um modelo compartilhador direto para a de um receptor, sem gerar nenhuma palavra no caminho. No artigo de Fu e colegas, postado em outubro de 2025 e aceito no ICLR 2026, essa rota bateu a troca por texto em 3,1 a 5,4 pontos de acurácia média e eliminou a etapa de decodificação do compartilhador, que era a mais lenta do pipeline.

## O que é C2C (cache to cache) e por que o texto é o gargalo

C2C, sigla de cache to cache, é um método que passa a memória KV de um modelo diretamente para outro, sem gerar texto intermediário. No artigo de Fu e colegas, postado em outubro de 2025 e aceito no ICLR 2026, a rota textual serve de linha de base: o modelo compartilhador escreve uma frase de conhecimento prévio, e o receptor lê essa frase antes de responder.

O teste de tempo deixa o problema claro. Com o par Qwen 2.5 (0,5B) como compartilhador e Qwen 3 (0,6B) como receptor, escrever a frase no MMLU Redux exigiu 80 tokens e 1.312 milissegundos, cerca de 16 ms por token. O texto também comprime: o artigo diz que linguagem natural pode ser ambígua, então o receptor recebe só parte do que o compartilhador entendeu.

Os números deixam isso evidente: sem texto, o receptor acertou 52,6% nas perguntas de resposta aberta com consulta; com a frase, 44%. O compartilhador que não escreveu palavra ajudou mais do que o que escreveu uma frase inteira.

## Como o fuser transfere o cache KV entre dois modelos congelados

O fuser é uma rede pequena de três camadas (um MLP) treinada para mapear o cache de um modelo para o espaço de outro. Os pesos dos dois modelos ficam congelados; só o fuser muda. Ele foi treinado com fine-tuning supervisionado em 500.000 amostras do [dataset OpenHermes 2.5](https://huggingface.co/datasets/teknium/OpenHermes-2.5), durante 1.929 passos.

O fluxo de uma pergunta segue esta ordem:

1. Os dois modelos leem a pergunta na fase de prefill, e o compartilhador não escreve token algum.
2. O fuser alinha as camadas dos dois modelos pelo esquema de alinhamento terminal: pares finais primeiro, depois camada por camada rumo ao início.
3. Como tokenizadores diferem, o método converte cada token do receptor de volta em texto e o redivide com o tokenizador do compartilhador; a regra de seleção de cobertura máxima resolve conflitos.
4. Um módulo de projeção junta os dois caches por camada, e uma camada de modulação consciente da entrada reescala o resultado.
5. Um portão aprendível decide, camada por camada, se a informação do compartilhador entra. Durante o treino ele é suave (Gumbel sigmoide, temperatura cai de 1,0 para 0,001); na inferência ele fica simplesmente ligado ou desligado.
6. O resultado entra no cache do receptor por conexão residual, então a leitura própria do receptor continua valendo.

O receptor mantém o próprio cache e recebe informação extra por cima. Um fuser treinado serve a um único par de modelos; cada par novo exige um treino novo, e o artigo lista esse custo de escalonamento como problema em aberto.

## Quanto tempo o cache to cache economiza de verdade

A economia de latência depende do cenário, e o artigo é explícito sobre isso. No caso do par Qwen 2.5/Qwen 3 na Tabela 3, os 1.312 ms de decodificação do compartilhador viraram cerca de 90 ms de fusão, uma etapa mais de 14 vezes mais curta. Essa é a magnitude máxima medida, não uma regra geral.

A média do artigo sobre todos os cenários fica em 2,5 vezes, e o texto cita casos individuais de 1,51x, 3,46x e 14,41x. O próprio trabalho não explica por que a média fica tão abaixo do pico. Três ressalvas limitam a generalização: a linha de base era uma frase de 80 tokens, os pares rodaram na mesma máquina (não há teste de envio de cache pela rede) e os modelos vão de 0,6 a 14 bilhões de parâmetros.

## O que os benchmarks mostram sobre acurácia

Nos testes do artigo, o cache to cache superou a rota textual e também rodar cada modelo sozinho. Os benchmarks são de múltipla escolha e consulta com consulta aberta: MMLU Redux, Open Book QA, ARC Challenge e CEval, avaliados em pares das famílias [Qwen 2.5 e Qwen 3](https://github.com/QwenLM/Qwen3), Llama 3.2 e [Gemma 3](https://ai.google.dev/gemma/docs).

No mesmo par que serve de exemplo ao longo do texto, o C2C venceu o texto por 1,9 ponto no MMLU Redux, 8,6 no Open Book QA e 5,0 no ARC Challenge. A média do resumo, na versão dois do artigo (março de 2026), é de 6,4% a 14,2% sobre os modelos individuais e de 3,1% a 5,4% sobre o texto.

Versão | Ganho sobre modelos isolados | Ganho sobre texto

v2 do artigo (março de 2026) — 6,4% a 14,2% — 3,1% a 5,4% página do GitHub e card no Hugging Face — 8,5% a 10,5% — 3,0% a 5,0%

Os números divergem porque as páginas públicas parecem refletir a primeira versão do artigo. Antes de citar qualquer figura, confira qual versão você está lendo.

## Limitações: quando a troca por cache falha

O cache resolve o gargalo de tempo, mas cria dois pontos cegos. Primeiro, o formato: com texto, você lê a dica e pode detectar um erro; um cache é uma lista de números, e o receptor não tem palavras para conferir. O apêndice A 4.6 do artigo registra a falha diretamente: o entendimento contextual do compartilhador nem sempre é preciso e pode induzir o receptor a errar.

Segundo, a força relativa dos modelos. A seção de limitações diz que um compartilhador muito mais fraco pode passar informação ruidosa e deixar um receptor mais forte pior. Um dado separado reforça a cautela: um compartilhador Qwen 3 4B base marcou 43,95 no MMLU Redux com C2C contra 43,87 com texto, um ganho quase nulo.

O artigo não relata teste com cache envenenado ou compartilhador construído para enganar, e nenhuma fonte mostra como um receptor detectaria um cache ruim. Qualquer afirmação sobre ataques aqui seria chute.

## Fusers disponíveis e como decidir se vale usar

O repositório Apache 2.0 liberou fusers para sete pares. Cinco combinam o Qwen 3 0.6B com outro modelo; os outros dois combinam Qwen 3 1.7B ou Qwen 3 8B com um modelo Qwen 2.5. Os pesos treinados ficam no [Hugging Face](https://huggingface.co/models), e a documentação diz que pares personalizados são suportados, desde que você treine um fuser para cada um.

Se o seu par não está entre os sete, planeje o treino do fuser antes. A troca é concreta: você abre mão de uma dica legível e da liberdade de trocar modelos à vontade, e recebe a eliminação da decodificação do compartilhador e, nos testes do artigo, notas mais altas.

A decisão prática fica assim:

- Par fixo de modelos pequenos, usado repetidamente: teste o C2C contra sua linha de base textual e meça os dois lados.

- Pares que mudam com frequência ou sem fuser lançado: texto continua sendo a escolha mais simples.

- Compartilhador muito mais fraco que o receptor: espere ruído; o artigo diz que o resultado pode piorar.

## Perguntas frequentes sobre cache to cache

- **O cache to cache funciona com quaisquer dois modelos?** Não. O fuser é treinado para um par específico de modelos, e cada par novo exige um treino novo. O artigo testou pares de quatro famílias (Qwen 2.5, Qwen 3, Llama 3.2 e Gemma 3) e chama caches de geralmente conversíveis, mas apenas sete pares têm fusers lançados.

- **Quanto o C2C acelera o pipeline?** No pior caso medido, a etapa de 1.312 ms do compartilhador virou 90 ms, mais de 14 vezes mais curta, mas a média do artigo é 2,5 vezes. A economia vale para essa configuração; não use 14x como número geral.

- **C2C substitui sempre a troca por texto?** Não. O texto é legível, auditável e independe de treino por par. O C2C só compensa quando você tem um par fixo, um fuser disponível ou disposição para treiná-lo.

- **Os resultados valem para modelos grandes?** Os testes cobriram modelos de 0,6 a 14 bilhões de parâmetros em benchmarks de múltipla escolha. Os números não dizem nada sobre respostas longas nem sobre modelos de fronteira.

- **O que acontece se o compartilhador estiver errado?** O receptor não tem como inspecionar um cache em números, e o apêndice A 4.6 registra que o entendimento impreciso pode induzir respostas erradas. Detectar um cache ruim continua sendo questão em aberto.

[Source video](https://www.youtube.com/watch?v=8UusrbaP7nA)
