Paralelização (Parallelization)
A paralelização executa várias chamadas ao LLM ao mesmo tempo e agrega os resultados. Duas variantes: seccionamento (dividir uma tarefa em subtarefas independentes em paralelo) e votação (executar a mesma tarefa várias vezes para melhorar confiabilidade ou cobertura). Reduz a latência e pode aumentar a qualidade.
Problema
Executar subtarefas independentes uma após a outra desperdiça tempo, e uma única amostra de uma tarefa difícil pode ser pouco confiável.
Quando usar
Use a paralelização quando as subtarefas são independentes (seccionamento), ou quando várias tentativas da mesma tarefa melhoram a confiança ou cobertura (votação).
Solução
Seccionamento: divida o trabalho em peças independentes, execute-as em paralelo e combine as saídas. Votação: execute o mesmo prompt várias vezes (ou com variações) e agregue por maioria, união ou um juiz.
Ambas reduzem o tempo real frente à execução sequencial; a votação além disso troca custo extra por maior confiabilidade em tarefas em que uma única amostra é arriscada.
Componentes
Benefícios
- Menor latência ao executar chamadas em concorrência.
- A votação melhora a confiabilidade e a cobertura.
- Cada chamada paralela se mantém simples e focada.
Riscos
- A votação multiplica o custo de tokens.
- A lógica de agregação pode ser difícil de acertar.
- Subtarefas assumidas independentes podem interagir na realidade.
Quando não usar
- Quando as subtarefas dependem da saída de outra: encadeie-as.
- Quando o custo é apertado e basta uma única chamada.
- Quando os resultados não podem ser agregados de forma significativa.
Tecnologias
Exemplos
- Resumir muitos documentos ao mesmo tempo e depois fundir os resumos.
- Executar uma verificação de segurança em paralelo com a resposta principal.
- Amostrar uma resposta várias vezes e tomar a maioria.
KPIs
- Redução de latência vs. sequencial
- Tempo economizado ao executar chamadas em paralelo; a razão de ser do padrão.
- Qualidade da agregação
- Se combinar as saídas paralelas preserva a correção; o difícil é a junção, não o fan-out.
- Custo de concorrência
- Tokens totais de todas as ramificações paralelas; você troca dinheiro por velocidade, vigie o multiplicador.
- Taxa de rate limit / throttle
- Com que frequência as chamadas paralelas batem nos limites do provedor, que as serializa ou falha em silêncio.
Modos de falha observados
- Erros de agregação: resultados paralelos corretos isoladamente mas mal combinados (dupla contagem, contradições).
- O rate limit transforma o paralelismo pretendido em chamadas lentas e serializadas.
- Surpresa de custo: N ramificações paralelas custam N× mesmo quando só um resultado é usado.
- Tratamento de falha parcial: uma ramificação falha e o agregador ou bloqueia ou a descarta em silêncio.
Lições aprendidas
- Projete primeiro o passo de agregação: combinar bem os resultados é mais difícil que dividir o trabalho.
- Respeite os limites de taxa do provedor com batching ou backoff, ou o paralelismo evapora.
- Paralelize só subtarefas independentes; dependências forçam uma sequência de qualquer forma.
- Decida explicitamente como as falhas parciais são tratadas antes que ocorram em produção.
FAQs
- Diferença entre seccionamento e votação?
- O seccionamento divide uma tarefa em subtarefas independentes distintas; a votação executa a mesma tarefa várias vezes para agregar por confiabilidade.
- A votação sempre melhora a qualidade?
- Muitas vezes, em tarefas em que as amostras variam, mas multiplica o custo. Reserve-a para passos críticos em que uma única amostra é arriscada.
- Como combino resultados paralelos?
- Conforme o caso: concatenar seções, tomar voto majoritário, unir os achados ou usar um modelo juiz para sintetizar.