Arquitetura real · Staff
Character.AI: otimização de inferência
Arquitetura real em produção. Pontos centrais: MQA, atenção local/global, KV compartilhado entre camadas, cache entre turnos e int8.
Resposta curta
Arquitetura real em produção. Pontos centrais: MQA, atenção local/global, KV compartilhado entre camadas, cache entre turnos e int8. O Character.AI projeta a arquitetura do modelo, a pilha de inferência e o produto de ponta a ponta. O post de junho de 2024 que guia este caso informa que a plataforma servia mais de 20.000 consultas de inferência por segundo.
01 · CONTEXTO
Uma plataforma de conversas em escala
O Character.AI projeta a arquitetura do modelo, a pilha de inferência e o produto de ponta a ponta. O post de junho de 2024 que guia este caso informa que a plataforma servia mais de 20.000 consultas de inferência por segundo.
Um estudo de caso publicado pela AMD fala em mais de um bilhão de consultas por dia e afirma que a infraestrutura de GPU virou o maior custo operacional da empresa.
02 · O GARGALO
O cache de chaves e valores limita o throughput
Segundo o post, o principal gargalo do throughput de inferência de LLMs é o tamanho do cache de chaves e valores de atenção (KV). Esse tamanho define o lote máximo que cabe na GPU e também domina o custo de I/O das camadas de atenção.
Neste desenho de referência, sem cache entre turnos, o usuário envia a mensagem a um balanceador, que escolhe um servidor de inferência.
O cache de chaves e valores de atenção fica na GPU e, segundo o post, determina o tamanho máximo de lote que cabe nela.
Sem reaproveitar o cache entre turnos, o KV teria de ser reenchido a cada mensagem, algo que a empresa descreve como proibitivamente caro quando os diálogos crescem.
A empresa afirma ter reduzido o cache KV em mais de 20X sem regredir a qualidade e que, com essas técnicas, a memória da GPU não é mais um gargalo para lotes grandes.
03 · ARQUITETURA DO MODELO
Técnicas para encolher o cache KV
A tabela resume as técnicas descritas no post, uma por linha.
| Técnica | O que o post descreve | Efeito declarado |
|---|---|---|
| Multi-Query Attention | Adotada em todas as camadas de atenção | Reduz o cache KV em 8X frente à Grouped-Query Attention |
| Atenção híbrida | Atenção local intercalada com global; só 1 em cada 6 camadas é global | Horizonte de 1024 na maioria das camadas sem impacto significativo nas métricas |
| KV compartilhado entre camadas | Cache KV compartilhado entre camadas vizinhas | Reduz o cache KV por um fator de 2-3x |
Nas camadas de atenção global, o cache KV de várias camadas globais é compartilhado entre blocos, porque essas camadas dominam o tamanho do cache KV em usos de contexto longo. O post afirma que compartilhar KV entre camadas não regride a qualidade.
04 · CACHE ENTRE TURNOS
Reaproveitar o KV entre mensagens do mesmo diálogo
A maioria das conversas é longa: o histórico médio de diálogo por mensagem é de 180 mensagens. Reencher o cache KV a cada turno seria proibitivamente caro à medida que os diálogos crescem.
A resposta da empresa é um sistema de cache entre turnos. Para cada prefixo já processado e cada mensagem gerada, os valores KV ficam na memória do host e são recuperados em consultas futuras. Eles são organizados num cache LRU com estrutura de árvore, semelhante ao RadixAttention, e indexados por um hash rolante dos tokens do prefixo: a cada consulta calcula-se o hash de cada prefixo do contexto e recupera-se o cache da maior correspondência, o que permite reaproveitar até mensagens parcialmente iguais.
Consultas do mesmo diálogo são roteadas para o mesmo servidor por sticky sessions.
Para cada consulta nova, o servidor calcula um hash rolante de cada prefixo do contexto.
O cache na memória do host é consultado e o KV da maior correspondência de prefixo é recuperado, mesmo com mensagens parcialmente iguais.
Para cada prefixo processado e cada mensagem gerada, o KV é guardado na memória do host para consultas futuras.
Com esse sistema, a empresa reporta taxa de cache de 95%.
No nível da frota, consultas do mesmo diálogo vão para o mesmo servidor por sticky sessions. Como o cache KV é pequeno, cada servidor consegue manter milhares de diálogos ao mesmo tempo, e a empresa reporta taxa de cache de 95%.
05 · QUANTIZAÇÃO E CUSTO
Int8 de ponta a ponta e o resultado em custo
A empresa usa quantização int8 em pesos, ativações e no cache KV de atenção. Em vez de quantizar depois do treino, treina os modelos nativamente em int8, o que elimina o risco de descompasso entre treino e serving.
O post afirma que o custo de serving caiu por um fator de 33 desde o fim de 2022 e que servir o mesmo tráfego com APIs comerciais líderes custaria pelo menos 13.5X mais. Ambos são números reportados pela própria empresa.
06 · HARDWARE E ORQUESTRAÇÃO
Outra alavanca: GPUs, vLLM e paralelismo
Segundo o estudo da AMD, a empresa trabalhou com a DigitalOcean para implantar um novo ambiente de inferência em GPUs AMD Instinct. Ela usa o framework aberto vLLM para serving, e um deployment de produção descrito no estudo foi construído em torno do modelo Qwen3-235B Instruct FP8.
A plataforma Kubernetes gerenciada cuida de rede, gateway e roteamento interno do cluster.
O serving usa o framework aberto vLLM.
As GPUs combinam paralelismo de dados, de tensor e de especialistas.
Um executivo da empresa afirma que as GPUs AMD Instinct permitiram melhora de 2X no throughput de inferência em produção e reduziram o custo por token em 50%.
Perguntas frequentes
O que é Character.AI: otimização de inferência?
Arquitetura real em produção. Pontos centrais: MQA, atenção local/global, KV compartilhado entre camadas, cache entre turnos e int8.
O que o design de Character.AI: otimização de inferência cobre?
Ele está organizado nestas seções: Uma plataforma de conversas em escala, O cache de chaves e valores limita o throughput, Técnicas para encolher o cache KV, Reaproveitar o KV entre mensagens do mesmo diálogo, Int8 de ponta a ponta e o resultado em custo e Outra alavanca: GPUs, vLLM e paralelismo.
Quanto tempo leva Character.AI: otimização de inferência e qual é o nível?
Leva cerca de 18 minutos para ler e tem nível Staff.
Agora projete você mesmo
Rode este caso como uma entrevista na escola de System Design: você toma as decisões, o tutor as questiona e você vê a nota do seu desenho.