- Sam Altman anunciou que o ChatGPT atende cerca de 700 milhões de usuários por semana
- Ao executar um modelo do nível do GPT-4 localmente, a falta de VRAM e a queda de velocidade são graves, então surge a dúvida de como a OpenAI consegue lidar com esse uso em larga escala com baixa latência e alto desempenho
- A curiosidade é sobre técnicas que vão além de um simples cluster de GPUs, como otimização de modelos, processamento distribuído, hardware dedicado e balanceamento de carga
Resumo dos principais comentários
1. Estrutura de inferência distribuída em escala massiva
- Model Sharding
- Os parâmetros são distribuídos e armazenados em várias GPUs
- Quando chega uma requisição, cada GPU processa a sua parte dos parâmetros e depois os resultados são combinados
- Tensor Parallelism
- Várias GPUs executam em paralelo os cálculos dentro de uma mesma camada
- Pipeline Parallelism
- As camadas são divididas em várias etapas para processamento sequencial e simultâneo, como em um pipeline
- Processamento paralelo híbrido para otimizar memória de GPU e carga computacional
2. Otimização de memória e velocidade
- Quantization: converte os parâmetros para precisão de menos bits, reduzindo o uso de VRAM
- Offloading de camadas: move algumas camadas para a memória da CPU quando necessário
- LoRA / Adapter Layers: faz fine-tuning apenas para tarefas específicas, sem necessidade de recarregar o modelo inteiro
- KV Caching: reutiliza o contexto e elimina cálculos repetidos
3. Hardware dedicado e rede
- Uso em larga escala de NVIDIA H100, A100 e alguns TPUs
- Transferência de dados em altíssima velocidade entre GPUs com NVLink e NVSwitch, e entre clusters com InfiniBand
- Construção de uma rede backbone global entre data centers para minimizar a latência
4. Distribuição geográfica e balanceamento de carga
- Implantação de fazendas de GPU em várias regiões do mundo
- Uso de GeoDNS para conectar a requisição do usuário à região mais próxima
- Escalonamento dinâmico de clusters de GPU conforme o padrão de tráfego
- Redistribuição global do tráfego quando há concentração de carga em uma região específica
5. Otimização do processamento de requisições
- Batch Inference: agrupa requisições de vários usuários para executar a inferência de uma vez
- Pré-processamento com modelos menores: requisições simples vão para modelos pequenos, e só as complexas chamam modelos grandes
- Cache de resultados: retorna imediatamente do cache resultados para prompts idênticos ou requisições semelhantes
- Prompt engineering evita desperdício desnecessário de tokens
6. Operação e otimização de custos
- Monitoramento e agendamento do uso de GPU para minimizar recursos ociosos
- Melhoria da eficiência energética dos data centers e adoção de refrigeração líquida
- Otimização própria de compilador e runtime para acelerar a inferência
- Operação de pipelines automatizados para atualização e implantação de modelos
Exemplo de fluxo da arquitetura geral
- Recebimento da requisição do usuário → roteamento para a região mais próxima via GeoDNS
- Pré-processamento → requisições simples vão para modelos pequenos, e só as complexas seguem para modelos grandes
- Processamento de inferência distribuída
- Aplicação de model sharding + tensor parallelism + pipeline parallelism
- Troca de resultados intermediários por rede de alta velocidade entre GPUs
- Pós-processamento e cache de resultados → armazenamento em cache para requisições idênticas ou semelhantes
- Retorno da resposta → entrega do resultado em 1~2 segundos
Ainda não há comentários.