Avançado

O que realmente acontece quando você aperta enviar

Uma requisição atravessa admissão, tokenização, scheduling, execução, decoding, streaming e limpeza antes de o texto chegar ao usuário.

Atualizada em

1

Conceito

Apertar “enviar” inicia um workflow de sistemas distribuídos, não uma única chamada de modelo. Os componentes variam, mas um ciclo útil possui sete fronteiras: tratamento da requisição, montagem do prompt, tokenização, admissão e scheduling, execução do modelo, decoding e streaming, seguidos de limpeza. Cada fronteira possui falhas próprias de corretude e latência.

No edge ou API gateway, o serviço autentica quem chama, confere autorização e cota, valida o schema e atribui um request ID. Limites de bytes, mensagens, imagens, ferramentas e geração máxima precisam atuar antes do trabalho caro. Rate limiting fica aqui, não dentro de um prompt. Texto do usuário é dado não confiável; nunca pode ganhar autoridade sobre credenciais ou acesso a outro tenant.

A aplicação constrói a entrada do modelo. Combina instruções de system, histórico, resultados de ferramentas e a nova mensagem usando o chat template do checkpoint. Esse template insere tokens de papéis e fronteiras aprendidos no pós-treinamento. Dois templates visualmente parecidos podem criar sequências e comportamentos diferentes. A gestão do contexto trunca ou resume por uma política explícita; descartar a mensagem de system silenciosamente é bug.

O tokenizer mapeia texto para IDs inteiros. A validação precisa ocorrer antes e depois da tokenização, pois caracteres e tokens têm contagens diferentes. O servidor pode reutilizar um prefixo em cache quando a sequência inicial de tokens é idêntica. Caso contrário, a requisição entra na fila com comprimento do prompt, orçamento de saída, prioridade e necessidade de cache.

O scheduler decide a admissão. Pesos ocupam memória quase fixa; o KV cache cresce com sequências ativas. Uma requisição que cabe sozinha talvez não caiba ao lado do trabalho atual. Servidores modernos formam batches dinâmicos e combinam requisições em posições distintas, sem esperar o batch inteiro terminar. Fairness, deadlines e preemption decidem se uma geração longa bloqueia trabalho interativo curto.

Durante prefill, o modelo processa o prompt e grava keys e values em todas as camadas. A posição final produz logits para o primeiro novo token. O decoder aplica temperature, truncamento, constraints e uma regra de seleção. O token escolhido é anexado, e decode executa outro forward step usando os estados em cache em vez de recalcular o prompt.

O servidor faz detokenization incremental e envia eventos. Fronteiras de tokens não correspondem necessariamente a caracteres, palavras ou chunks UTF-8 válidos, então o buffer segue o decoder do tokenizer. Stop sequences, parsers de tool calls, filtros e structured output podem atrasar ou suprimir bytes. Backpressure importa: um cliente lento não deve reter memória ilimitada.

Cancelamento percorre o caminho inverso. Se a pessoa interrompe, a conexão fecha ou o deadline expira, a geração deve parar, o item deve sair da fila e os blocos voltar ao allocator. Cobrança e logs precisam da contagem real e do motivo final. Vazamentos de limpeza viram incidentes sob carga.

Observabilidade acompanha request IDs por essas etapas sem armazenar prompts sensíveis por padrão. Registre versões do modelo, tokenizer e template; fila; tokens de entrada e saída; cache; batch; TTFT; cadência; finish reason e erros. O modelo mental é um pipeline: a rede neural está no centro, mas scheduling, fronteiras e ownership decidem se ela vira serviço confiável.

2

Como explicar para uma criança de cinco anos

Um pedido de restaurante não sai da mesa e vira refeição instantaneamente. A recepção admite o grupo, a atendente normaliza o pedido, a cozinha reúne pratos que usam o mesmo equipamento, prepara a leva inicial e emprata cursos posteriores um por vez. Garçons fazem streaming dos pratos, enquanto pedidos cancelados liberam ingredientes e bancada. Um servidor de inferência coordena requisições, tokens, batches de GPU e blocos de cache da mesma forma.

3

Ensine de volta

Acompanhe uma requisição de chat da chegada HTTP até o primeiro token e cite uma falha ou métrica em três etapas diferentes.

Mínimo: 80 caracteres e 15 palavras. Seu texto fica somente neste navegador.

Salvo somente neste dispositivo.

Ver uma resposta-modelo

O gateway autentica e valida, o chat template serializa os papéis e o tokenizer produz IDs. O admission control verifica limites; o scheduler aloca KV cache e agrupa o prefill. O modelo calcula logits, o decoder seleciona um token, e o servidor faz detokenization e streaming. Queue time pode dominar antes do compute, templates errados mudam comportamento, falta de cache rejeita trabalho e time to first token mede o caminho até o fim do prefill, não toda a geração.

4

Teste seu entendimento

1. O que normalmente acontece antes de o modelo receber IDs de tokens?
Resposta e explicação

Validação, aplicação do chat template e tokenização — A camada de serving valida e serializa a conversa antes de mapeá-la ao vocabulário do modelo.

2. O que time to first token inclui?
Resposta e explicação

Fila e processamento do prompt até o primeiro token poder ser enviado — TTFT cobre admissão, fila, tokenização e prefill até a primeira saída.

Conclua o teach-back e acerte o quiz para finalizar a aula.

Fontes

  1. Woosuk Kwon et al. (2023). Efficient Memory Management for Large Language Model Serving with PagedAttention.