Detalhes do GPT-4 vazaram?
(archive.md)- Um modelo de linguagem de escala gigantesca com cerca de 1,8 trilhão de parâmetros e 120 camadas, mais de 10 vezes maior que o GPT-3
- Arquitetura Mixture of Experts (MoE) com 16 experts, ativando apenas 2 experts por forward pass para reduzir custos
- Treinado com cerca de 13 trilhões de tokens, aplicando 2 epochs para texto e 4 epochs para código
- Arquitetura multimodal com um encoder de visão separado, com fine-tuning adicional de cerca de 2 trilhões de tokens após o pré-treinamento em texto
- Treinado em cerca de 25.000 A100 por 90 a 100 dias, com custo estimado de treinamento de cerca de US$ 63 milhões
Número de parâmetros e escala do modelo
- Estima-se que o GPT-4 seja mais de 10 vezes maior que o GPT-3, com um total de cerca de 1,8 trilhão de parâmetros distribuídos por 120 camadas
- A cada forward pass (geração de 1 token), usa apenas cerca de 280B parâmetros e cerca de 560 TFLOPs
- Em contraste, se fosse um modelo puramente dense, seriam necessários cerca de 1,8 trilhão de parâmetros e cerca de 3.700 TFLOPs
- Os parâmetros compartilhados para attention ficam na casa de cerca de 55B
Arquitetura Mixture of Experts (MoE)
- A OpenAI mantém os custos em um patamar razoável por meio do uso de modelo MoE
- Usa 16 experts dentro do modelo, e cada expert tem cerca de 111B parâmetros considerando o MLP
- A cada forward pass, o roteamento é feito para 2 experts
-
Roteamento MoE
- No meio acadêmico, discute-se muito algoritmos avançados de roteamento para selecionar experts por token, mas sabe-se que o roteamento atual do GPT-4 é bastante simples
-
Trade-off na escolha do número de experts
- Como nem todas as partes do MoE são usadas a cada geração de token, o processamento de inferência é muito complicado
- Algumas áreas ficam ociosas, reduzindo a taxa de utilização ao servir usuários
- Em pesquisas, 64 a 128 experts atingem loss menor que 16 experts, mas isso é apenas do ponto de vista puramente acadêmico
- Com mais experts, fica mais difícil generalizar para diversas tarefas e a convergência também se torna mais delicada
- Por esses motivos, a OpenAI escolheu conservadoramente 16 experts
- Como nem todas as partes do MoE são usadas a cada geração de token, o processamento de inferência é muito complicado
Dataset
- O GPT-4 foi treinado com cerca de 13 trilhões de tokens, número que não representa tokens únicos, mas sim a soma dos tokens incluindo repetições por epochs
- Foram aplicados 2 epochs para dados de texto e 4 epochs para dados de código
- Inclui milhões de linhas de dados de fine-tuning por instruções obtidos pela ScaleAI e internamente
-
Composição da mistura do dataset
- Dos 13 trilhões de tokens, CommonCrawl e RefinedWeb têm 5 trilhões de tokens cada
- Ao remover duplicações de epochs, restam dados secretos de “origem desconhecida”
- Há rumores de que parte veio de twitter, reddit e youtube
- Entre as fontes estimadas são citados LibGen (mais de 4 milhões de livros), Sci-Hub (mais de 80 milhões de artigos) e todo o GitHub
- Foi apresentada a visão de que os dados ausentes seriam um dataset de livros didáticos universitários coletado manualmente
- Após conversão para txt, é fácil processá-los em formato de instruções com self-instruct
- Isso teria criado a impressão de que o GPT-4 é “inteligente”, independentemente da área de formação
- Também existe um artigo que tenta identificar os dados de treinamento extraindo à força alguns livros memorizados pelo GPT-4
- Alguns livros são conhecidos muito bem por ele, tornando certo que foram usados no treinamento, e ele até se lembra dos IDs únicos de problemas do Project Euler
Contexto de 32K do GPT-4
- Na etapa de pré-treinamento, foi usado comprimento de contexto de 8k (seqlen)
- A versão com seqlen de 32k é resultado de fine-tuning do modelo de 8k após o pré-treinamento
Tamanho do batch
- O tamanho do batch foi aumentado gradualmente ao longo de vários dias no cluster, até usar finalmente tamanho de batch de 60 milhões
- Como nem todos os experts veem todos os tokens, por expert isso fica na casa de cerca de 7,5 milhões de tokens
- O tamanho real do batch só pode ser calculado dividindo esse número pelo seq len
Estratégia de paralelização
- Para paralelização em todas as GPUs A100, foi usado paralelismo tensorial 8-way (limite do NVLink)
- Além disso, foi aplicado paralelismo de pipeline 15-way
- Há possibilidade de terem usado ZeRO Stage 1 e também FSDP em nível de bloco
-
Motivo para não usar FSDP
- Parte da infraestrutura de hardware disponível pode ser de geração anterior
- Em clusters locais de computação, é comum atualizar a infraestrutura em várias “etapas” para evitar interrupções operacionais
- Parte da infraestrutura de hardware disponível pode ser de geração anterior
Custo de treinamento
- Os FLOPS de treinamento do GPT-4 são cerca de 2,15e25, por 90 a 100 dias em cerca de 25.000 A100, com MFU de cerca de 32 a 36%
- A taxa de utilização muito baixa se deve ao número excessivo de falhas que causaram reinícios a partir de checkpoints
- Assumindo cerca de US$ 1 por hora de A100, estima-se que apenas esse treinamento tenha custado cerca de US$ 63 milhões
- Pelos padrões atuais, o pré-treinamento poderia ser feito com cerca de 8.192 H100 em cerca de 55 dias, a cerca de US$ 2 por hora de H100, por cerca de US$ 21,5 milhões
Custo de inferência do GPT-4
- O GPT-4 custa 3 vezes mais que o Davinci de 175B parâmetros
- Isso se deve à exigência de clusters maiores e à taxa de utilização muito menor
- Estimativa de custo: ao inferir o GPT-4 com seqlen 8k em 128 A100, US$ 0,0049 cent por 1k tokens; em 128 H100, US$ 0,0021 cent
- Pressupõe a manutenção de uma taxa de utilização adequadamente alta e de um batch size grande
Multi-Query Attention (MQA)
- A OpenAI também usa MQA, como outros lugares
- Como apenas 1 head é necessário, a capacidade de memória do cache KV é reduzida de forma significativa
- Mesmo assim, o GPT-4 com seqlen 32k não roda em A100 de 40GB, e o de 8k tem limite no tamanho máximo do batch
Continuous Batching
- A OpenAI implementou tanto batch size variável quanto continuous batching
- Consegue, ao mesmo tempo, permitir uma latência máxima em certo nível e otimizar o custo de inferência
Multimodalidade de visão
- Um encoder de visão separado, distinto do encoder de texto, é conectado por cross-attention, em uma arquitetura semelhante ao Flamingo
- Parâmetros adicionais são acrescentados sobre os 1,8 trilhão de parâmetros
- Após o pré-treinamento apenas em texto, foi feito fine-tuning adicional com cerca de 2 trilhões de tokens
- Tentaram treinar o modelo de visão do zero, mas, por falta de maturidade, começaram com texto para reduzir riscos
- O principal objetivo da capacidade de visão é implementar agentes autônomos capazes de ler páginas web e transcrever conteúdo de imagens e vídeos
- Os dados de treinamento incluem dados combinando LaTeX/texto renderizado, screenshots de páginas web, amostragem de frames de vídeos do YouTube e transcrições baseadas em Whisper
Speculative Decoding
- Existe a possibilidade de uso de speculative decoding na inferência do GPT-4 (não é 100% certo)
- Um modelo menor e mais rápido decodifica previamente vários tokens, que depois são inseridos em um único batch no modelo oracle maior
- Se a previsão do modelo pequeno estiver correta, o modelo grande concorda e decodifica vários tokens em um batch
- Se o modelo grande rejeita, o restante do batch é descartado e o processo continua com o modelo grande
- A teoria conspiratória recente sobre queda de qualidade do GPT-4 pode se dever ao fato de o modelo oracle aceitar sequências de baixa probabilidade do modelo de speculative decoding
Arquitetura de inferência
- A inferência roda em clusters de 128 GPUs, com vários clusters em múltiplos datacenters
- É realizada com paralelismo tensorial 8-way e paralelismo de pipeline 16-way
- Cada nó de 8 GPUs contém cerca de 130B parâmetros
- Como o modelo tem 120 camadas, ele é carregado de forma distribuída em 15 nós
- O primeiro nó, que também precisa calcular os embeddings, pode ter menos camadas
- Por esses números, se seguisse o ótimo de Chinchilla, deveria ter sido treinado com o dobro de tokens, o que sugere a dificuldade de obter dados de alta qualidade
1 comentários
Comentários do Hacker News
Isso já tinha aparecido antes aqui e aqui
A fonte original é https://www.semianalysis.com/p/gpt-4-architecture-infrastruc..., e o post no Twitter parece ter praticamente parafraseado o post real do blog. Então provavelmente foi por isso que o tweet foi apagado
O uso de Mixture of Experts (MoE) era novidade e muito interessante, e eu queria saber mais sobre como fizeram isso funcionar. As variações de implementação podem explicar a oscilação na qualidade das saídas que as pessoas observaram. Esse modelo de visão mencionado aqui também ainda é pouco conhecido além de algumas demos de meses atrás, então sigo aguardando a divulgação
No contexto de IA, “MoE” normalmente significa “Mixture of Experts”, uma técnica de aprendizado de máquina que divide um problema em subproblemas, faz com que “especialistas” (modelos) especializados resolvam cada subproblema e depois combina as saídas
Se a informação de que o GPT-4 usa MoE era novidade, isso talvez dê alguma credibilidade adicional à alegação dele
Isso mostra que modelos de linguagem grandes são muito diferentes de inteligência artificial geral. Acoplar uma calculadora é só uma gambiarra; pode ser uma gambiarra útil, mas não acho que isso os torne capazes de fazer ciência
Este post ao menos, por enquanto, pode ser visto de graça
Se isso for verdade, o treinamento exigiu 21 yottaflops. Nem lembro a última vez que vi o prefixo yotta- em algum lugar
E o custo de treinamento do GPT-4 caiu para um terço do que era há um ano. A velocidade com que o preço de treinar modelos de linguagem grandes está caindo é realmente impressionante, e isso é uma boa notícia para o open source. O memorando do Google estava certo ao dizer que não havia fosso competitivo
Mesmo que o preço de atacado do arroz fosse US$ 0,001 por kg, se eu tenho US$ 1 milhão e você tem US$ 1.000, eu ainda consigo comprar 1.000 vezes mais arroz do que você
Além disso, para muitos usos, ser mais inteligente é melhor. Se eu posso comprar uma resposta mais correta por alguns centavos a mais, esses centavos sempre valem a pena. Enquanto for possível treinar modelos maiores e melhores com mais hardware e mais dados, isso é um fosso competitivo
Eu admiro a tecnologia, mas desta vez tenho medo porque é difícil imaginar o que isso vai significar no futuro. Provavelmente isso vai matar a web aberta, e leis relacionadas serão aprovadas para enterrá-la de vez
Dizer que “a teoria da conspiração de que a nova qualidade do GPT-4 piorou pode ser porque o modelo oráculo passou a aceitar sequências de menor probabilidade do modelo de decodificação especulativa” acaba reconhecendo a possibilidade de que a suspeita estivesse certa, e até propõe um mecanismo específico, ao mesmo tempo em que insulta e continua fazendo gaslighting com quem levantou a questão
Como isso não foi provado, é uma teoria; e como as pessoas acham que a OpenAI degradou deliberadamente seu serviço, é uma teoria da conspiração
Essa pessoa parece não saber do que está falando. Vive postando esse tipo de besteira no Twitter. Em geral é só copiar, colar e dar uma temperada
Por exemplo, vá lá que seja MoE, mas 16 especialistas de 111 bilhões de parâmetros não faz sentido. O GPT-3 já tinha 175 bilhões de parâmetros, e não parece provável que reduziriam o tamanho do modelo-base daqui para frente. Um número mais plausível seria algo como 220 bilhões de parâmetros por modelo e 8 modelos especialistas, com o mesmo custo total de inferência
O número de 13 trilhões de tokens de dados de treinamento também parece tirado do nada
O Google vem pesquisando Mixture of Experts para escalar modelos de linguagem grandes. O modelo GLaM, apresentado em 2022, tem 1,7 trilhão de parâmetros e 64 especialistas
https://icml.cc/media/icml-2022/Slides/17378.pdf
George Hotz disse recentemente, em uma entrevista ao Lex Fridman, que “Sam Altman não vai te contar que o GPT-4 tem 220 bilhões de parâmetros e usa 8 conjuntos de pesos em um modelo de mistura 16-way”
Pela reação do Lex, parecia que ele também sabia que isso era verdade
Isso carece de base. As únicas pessoas que sabem exatamente como o GPT-4 funciona são funcionários da OpenAI, e o resto só pode especular.
Mas a fonte secreta e o fosso defensável estão nos dados. Já ouvi rumores de que a OpenAI pagou participantes de programação competitiva para escrever e comentar código com informações como complexidade incluídas.
Mesmo com o Twitter cobrando caro demais pelo acesso à API e adotando medidas anti-scraping, eu me perguntava como um serviço gratuito premium como o Thread Reader ainda consegue operar.
O plano de API mais barato com permissão de leitura fica em US$ 100 por mês para ler 10 mil tweets, então isso só permitiria gerar algo como 500 dessas páginas sob demanda.
const puppeteer = require('puppeteer');Este texto tem umas partes estranhas para alguém que fala com tanta certeza, como se “soubesse todos os números”.
Diz que “hoje em dia, o pré-treinamento pode ser feito com cerca de 8.192 H100 por cerca de 55 dias, a um custo de US$ 21,5 milhões assumindo US$ 2 por hora por H100”, mas não entendo por que ajustar arbitrariamente tanto o tamanho do sistema quanto o tempo de treino.
Também diz que MoE é mais difícil de lidar na inferência porque nem toda parte do modelo é usada na geração de cada token, então parte fica ociosa e parte é usada, o que afeta negativamente a utilização ao atender usuários, mas não fica claro utilização de quê. Memória? Se a utilização na inferência preocupa tanto assim, não daria para simplesmente subir um modelo não-MoE?
Sobre MQA, também diz que “por isso só é necessário 1 head e a capacidade de memória do cache KV pode ser bastante reduzida”, o que está próximo, mas errado. Só é necessário um único head de Key e Value; o número de heads de Query continua o mesmo.
Meu palpite é que alguém relativamente entendido pegou a fórmula do paper de scaling de 2020 e montou um sistema imaginário cuja matemática bate. Eu também conseguiria inventar um texto parecido e fazê-lo soar plausível, mas estaria além do meu nível, então sairia parecido, porém definitivamente errado. Por isso essa sensação parece muito suspeita.
O ponto principal do MQA é que, por causa desse compartilhamento, o cache KV fica menor por um fator igual ao número de heads em comparação com o caso comum. Mesmo com vários heads de Query, isso não afeta o tamanho do cache, e o fator limitante na decodificação com MHA, tanto em capacidade de memória quanto em largura de banda, é o cache.