Conditional Program comprime a memória n-gram da DeepSeek de 203 para 51 GB com 2 bits
A memória condicional amplia a capacidade de um modelo de linguagem por meio de buscas seletivas em uma tabela, mas é preciso armazenar a tabela inteira. Os autores de um novo trabalho apresentaram o Conditional Program (CP): cada linha é codificada por um código curto de 2 bits e uma escala local, enquanto o programa de reconstrução é compartilhado por toda a tabela. O método se apoia em um trellis (treliça) gaussiano, na restauração da norma e em registros de linha que podem ser decodificados de forma independente. A divergência KL de saída cai de 41% a 63% em relação ao round-to-nearest de 2 bits. Na tabela da DeepSeek, o tamanho diminui de 203 para 51 GB. - Dois bits por código e uma escala local por linha - KL de 41% a 63% menor com o mesmo orçamento de bits - 203 GB → 51 GB, e a tabela cabe na GPU
Processado por IA de Hugging Face Daily Papers; editado por Hamidun News
As tabelas de memória n-gram dão ao modelo de linguagem capacidade extra quase sem aumentar o custo computacional: para cada token, são lidas apenas algumas linhas. O preço, porém, é o volume. Para responder a qualquer entrada possível, a tabela inteira precisa estar acessível. Um novo trabalho publicado no Hugging Face Daily Papers propõe o formato Conditional Program (CP), que armazena as linhas com dois bits por código e reconstrói apenas aquelas que a entrada solicitou. Na tabela da DeepSeek, o tamanho cai de 203 para 51 GB, e a divergência KL de saída fica de 41% a 63% menor do que no arredondamento ingênuo de 2 bits.
Como funciona o CP
A ideia é não quantizar a tabela como um tensor monolítico, e sim descrever cada linha com um registro compacto. Cada linha tem um código curto e uma escala local. O programa que converte o código de volta em vetor é o mesmo para todas as linhas. Ele é armazenado uma única vez para a tabela inteira e custa quase nada por linha.
Os autores implementam isso com três componentes. O primeiro é o trellis (treliça) gaussiano, um codebook estruturado em que o código escolhe um caminho na treliça, e não uma entrada em uma lista explícita. O segundo é a restauração da norma: depois da decodificação, o comprimento do vetor volta ao valor original, para que a quantização não desloque a escala das ativações. O terceiro são os registros de linha decodificáveis de forma independente. Esse é o requisito central para a memória condicional: para ler uma linha, não é preciso descomprimir os blocos vizinhos.
É justamente esse último ponto que distingue o problema da compressão comum de pesos. Nela, a decodificação ocorre em lotes, camada por camada. Aqui, o acesso é aleatório e esporádico, e o formato precisa suportar acesso arbitrário.
O que as medições mostraram
Os autores analisaram três famílias treinadas de memória n-gram. A conclusão tem duas partes. A estatística de cada coordenada é próxima da gaussiana, o que justifica o uso do trellis gaussiano. Ao mesmo tempo, permanecem relações aprendidas entre as linhas, e elas não podem ser tratadas como ruído. Ainda assim, com o mesmo orçamento de armazenamento, o trellis compartilhado superou tanto os codebooks ajustados aos dados quanto as variantes com correção de baixo posto (low-rank residual) testadas pelos autores.
Os principais números do resumo:
- código: 2 bits por elemento mais uma escala local por linha;
- KL de saída de 41% a 63% menor em relação ao round-to-nearest de 2 bits;
- tabela da DeepSeek: 203 GB → 51 GB, ou seja, cerca de 4 vezes;
- formato: programa de reconstrução compartilhado, registros de linha independentes;
- validação em três famílias de n-gram memory treinadas.
Uma observação sobre o ganho de quatro vezes. Se a tabela original for armazenada em 16 bits, 2 bits puros resultariam em compressão de oito vezes. O resumo não explica de onde vem a diferença. O custo adicional das escalas e dos registros de linha pode ser parte da explicação, mas vale conferir isso no texto completo do artigo.
Na prática: para onde vai a memória liberada
O principal efeito prático é descrito no próprio trabalho: quando a tabela fica na GPU, os gigabytes liberados podem ser usados em cargas maiores. Isso significa contexto mais longo, mais requisições simultâneas e batches maiores. A memória da placa de vídeo quase sempre esbarra no KV-cache, e os 150 GB economizados na tabela se convertem diretamente em folga para ele.
Há ainda outra opção para equipes que implantam modelos com memória condicional. É mais simples manter uma tabela de 51 GB inteira no acelerador do que uma de 203 GB, sem precisar movê-la para a memória do host, com latência a cada acesso. Isso elimina um dos principais argumentos contra a memória n-gram em produção.
Também é preciso cautela. A métrica de qualidade no resumo é a KL da distribuição de saída, e não um conjunto de benchmarks de tarefas. Antes de incluir o CP em uma stack de inferência, é necessário avaliar como a tabela de 2 bits se comporta em tarefas reais e qual é o custo de decodificar uma linha na GPU sob carga alta. Mesmo assim, a direção está clara: a memória condicional agora tem uma forma de pagar pela capacidade com dezenas de gigabytes, e não com terabytes.
Access Frontier LLMs & Multimodal AI in One Workspace
Discover NomadNet AI (nomadnet.ai) — unified access to frontier language models, research synthesis, and multimodal workflows.
O essencial da IA — uma vez por semana
Sete histórias que realmente importaram, escolhidas a dedo. Sem ruído nem releases.
Pronto! Verifique seu e-mail para a confirmação.