Pular para o conteúdo

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.

18 min de leitura · Fonte: Character.AI · Conteúdo revisado em 23 de outubro de 2026

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.

  1. 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.

    Diagrama da arquitetura: Inferência de referência, sem cache entre turnos
    CLUsuário
    NWBalanceador
    CPServidor de inferênciaexecuta o modelo
    CHCache KV na GPU
  2. 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.

    Diagrama da arquitetura: Inferência de referência, sem cache entre turnos
    CLUsuário
    NWBalanceador
    CPServidor de inferência
    CHCache KV na GPUlimita o lote
  3. 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.

    Diagrama da arquitetura: Inferência de referência, sem cache entre turnos
    CLUsuário
    NWBalanceador
    CPServidor de inferência
    CHCache KV na GPUreenchido a cada turno

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écnicaO que o post descreveEfeito declarado
Multi-Query AttentionAdotada em todas as camadas de atençãoReduz o cache KV em 8X frente à Grouped-Query Attention
Atenção híbridaAtenção local intercalada com global; só 1 em cada 6 camadas é globalHorizonte de 1024 na maioria das camadas sem impacto significativo nas métricas
KV compartilhado entre camadasCache KV compartilhado entre camadas vizinhasReduz 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.

  1. Consultas do mesmo diálogo são roteadas para o mesmo servidor por sticky sessions.

    Diagrama da arquitetura: Inferência com cache KV entre turnos
    CLUsuário
    NWRoteador com sessão fixasessão fixa
    CPServidor de inferência
    CPOutro servidor de inferência
    CHCache KV na GPU
    CHCache KV na memória do host
  2. Para cada consulta nova, o servidor calcula um hash rolante de cada prefixo do contexto.

    Diagrama da arquitetura: Inferência com cache KV entre turnos
    CLUsuário
    NWRoteador com sessão fixa
    CPServidor de inferênciahash dos prefixos
    CPOutro servidor de inferência
    CHCache KV na GPU
    CHCache KV na memória do host
  3. O cache na memória do host é consultado e o KV da maior correspondência de prefixo é recuperado, mesmo com mensagens parcialmente iguais.

    Diagrama da arquitetura: Inferência com cache KV entre turnos
    CLUsuário
    NWRoteador com sessão fixa
    CPServidor de inferência
    CPOutro servidor de inferência
    CHCache KV na GPU
    CHCache KV na memória do hostmaior correspondência
  4. Para cada prefixo processado e cada mensagem gerada, o KV é guardado na memória do host para consultas futuras.

    Diagrama da arquitetura: Inferência com cache KV entre turnos
    CLUsuário
    NWRoteador com sessão fixa
    CPServidor de inferência
    CPOutro servidor de inferência
    CHCache KV na GPU
    CHCache KV na memória do hostguarda o KV
  5. Com esse sistema, a empresa reporta taxa de cache de 95%.

    Diagrama da arquitetura: Inferência com cache KV entre turnos
    CLUsuário
    NWRoteador com sessão fixa
    CPServidor de inferência
    CPOutro servidor de inferência
    CHCache KV na GPU
    CHCache KV na memória do hosttaxa de cache alta

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.

  1. A plataforma Kubernetes gerenciada cuida de rede, gateway e roteamento interno do cluster.

    Diagrama da arquitetura: Plataforma de serving em GPUs AMD
    CLUsuário
    NWGateway da plataforma Kubernetesrede e roteamento
    CPServiço de serving com vLLM
    CPGPUs AMD Instinct
  2. O serving usa o framework aberto vLLM.

    Diagrama da arquitetura: Plataforma de serving em GPUs AMD
    CLUsuário
    NWGateway da plataforma Kubernetes
    CPServiço de serving com vLLMvLLM
    CPGPUs AMD Instinct
  3. As GPUs combinam paralelismo de dados, de tensor e de especialistas.

    Diagrama da arquitetura: Plataforma de serving em GPUs AMD
    CLUsuário
    NWGateway da plataforma Kubernetes
    CPServiço de serving com vLLM
    CPGPUs AMD Instinctparalelismo combinado

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.