2 pontos por GN⁺ 2023-08-27 | 1 comentários | Compartilhar no WhatsApp
  • O artigo sobre reconhecimento de CEPs manuscritos de Yann LeCun e outros, de 1989, é um exemplo inicial importante de aplicação prática de redes neurais treinadas de ponta a ponta com retropropagação, e seu dataset, arquitetura, função de perda, otimização e forma de relatar taxa de erro lembram artigos modernos de deep learning
  • A reimplementação em PyTorch usou 7.291 imagens de dígitos em tons de cinza de 16x16 e uma rede pequena com cerca de 1.000 neurônios, e o treinamento de 3 dias do artigo original caiu para cerca de 90 segundos em uma CPU de MacBook Air M1
  • O artigo original reportava erro de treinamento de 0,14% e erro de teste de 5,00%; a reprodução não ficou exatamente igual por usar um dataset alternativo baseado em MNIST reduzido para 16x16, mas chegou a erro de treinamento de 0,62% e erro de teste de 4,09%
  • Ao aplicar técnicas de 2022 como entropia cruzada, AdamW, aumento de dados, Dropout e ReLU, o erro de teste caiu de 4,09% para 1,59%; o tempo de treinamento aumentou cerca de 4 vezes, mas a latência de inferência não mudou
  • Ao longo de 33 anos, a estrutura macro mudou pouco, mas a escala de dados, modelos e computação cresceu de forma avassaladora, e o fluxo de foundation models com fine-tuning está tornando rapidamente obsoleta a ideia de treinar redes neurais do zero para tarefas específicas

Por que reimplementar um artigo de 1989 em 2022

  • O artigo de 1989 de Yann LeCun e outros, Backpropagation Applied to Handwritten Zip Code Recognition, é um caso inicial historicamente importante de aplicação prática baseada em retropropagação
    • É considerado um dos primeiros artigos a aplicar redes neurais treinadas de ponta a ponta com retropropagação a um problema real
    • Na época, o dataset tinha 7.291 imagens de dígitos em tons de cinza de 16x16, e a rede tinha cerca de 1.000 neurônios
  • A estrutura do artigo é muito parecida com a de artigos modernos de deep learning
    • Define o dataset
    • Explica a arquitetura da rede neural
    • Trata da função de perda e da otimização
    • Reporta a taxa de erro de classificação nos conjuntos de treino e teste
  • O código da reimplementação foi escrito em PyTorch e publicado em karpathy/lecun1989-repro
  • A rede original foi implementada em Lisp e usava o simulador de retropropagação SN, de 1988, de Bottou e LeCun
  • O design das bibliotecas modernas de deep learning costuma se dividir em três partes
    • Uma biblioteca de tensores rápida baseada em C/CUDA
    • Um motor de autograd que rastreia o grafo de computação do forward e gera as operações de retropropagação
    • Uma API de alto nível programável em Python, com camadas, arquiteturas, otimizadores e funções de perda

Velocidade de treinamento e limites da reprodução

  • O treinamento original fazia 23 passagens por 7.291 exemplos de treino, apresentando ao todo 167.693 pares de entrada/rótulo à rede
  • A rede de 1989 foi treinada por 3 dias em uma workstation SUN-4/260
  • A reimplementação em PyTorch levou cerca de 90 segundos em uma CPU de MacBook Air M1, ficando cerca de 3.000 vezes mais rápida em comparação simples
    • O conda usava build arm64 nativo, não emulação Rosetta
    • Se o PyTorch tivesse aproveitado totalmente a GPU e a NPU do M1, o ganho de velocidade poderia ter sido ainda maior
  • Rodar de forma direta em uma GPU A100 foi, na verdade, mais lento
    • A rede é muito pequena: um convnet de 4 camadas, no máximo 12 canais, 9.760 parâmetros no total, 64K MACs e 1K ativações
    • O SGD usava uma estrutura com apenas um exemplo por vez
    • Para aproveitar bem A100, CUDA e PyTorch, seria preciso aumentar a utilização da GPU com treinamento full-batch em vez de SGD por exemplo
  • O desempenho reportado no artigo original foi o seguinte
    • Treino: loss 2.5e-3, erro 0,14%, miss 10
    • Teste: loss 1.8e-2, erro 5,00%, miss 102
  • O resultado da 23ª passagem no script de reprodução foi o seguinte
    • Treino: loss 4.073383e-03, erro 0,62%, miss 45
    • Teste: loss 2.838382e-02, erro 4,09%, miss 82
  • Uma reprodução exata é difícil por vários motivos
    • O dataset original aparentemente se perdeu com o tempo
    • Em seu lugar, usou-se o MNIST: dígitos 28x28 reduzidos para 16x16 com interpolação bilinear e amostragem aleatória sem reposição na quantidade necessária
    • A explicação da inicialização dos pesos é abstrata, e problemas de formatação no PDF podem ter feito desaparecer pontos ou símbolos de raiz quadrada
    • A estrutura de conexões esparsas entre H1 e H2 não é tratada em detalhe no artigo, então foi necessário fazer estimativas razoáveis
    • Havia receio de que o tanh do artigo fosse na verdade o normalized tanh, comum na época
    • O artigo original usava um algoritmo especial de Newton com aproximação diagonal positiva da Hessiana, mas a reimplementação usou SGD mais simples

Redução da taxa de erro com técnicas de 33 anos depois

  • A primeira mudança foi trocar a formulação de regressão com MSE por uma formulação moderna de classificação multiclasse
    • Originalmente, a classificação em 10 classes era modelada como regressão com MSELoss para alvos em -1 ou +1
    • Removeu-se o tanh da camada de saída para produzir logits de classe e aplicou-se CrossEntropyLoss
    • Isso permitiu sobreajustar completamente o conjunto de treino, chegando a erro de treino de 0,00% e erro de teste de 4,38%
  • Em seguida, aplicou-se a família Adam no lugar de SGD
    • Foi usado AdamW com learning rate inicial de 3e-4, reduzido para 1e-4 durante o treinamento
    • O resultado foi erro de treino de 0,00% e erro de teste de 3,59%
    • O weight decay dos parâmetros padrão também ajudou a reduzir o sobreajuste
  • O aumento de dados consistiu em deslocar a imagem de entrada em até 1 pixel na horizontal ou vertical
    • Como isso simula aumento do tamanho do dataset, o número de passagens subiu de 23 para 60
    • Apenas aumentar o número de passagens na configuração original não trouxe grande melhora
    • O resultado foi erro de treino de 1,70% e erro de teste de 2,19%
  • A combinação de Dropout e ReLU trouxe melhorias adicionais
    • Foi adicionado um Dropout leve de 0,25 logo antes da camada H3, a de maior número de parâmetros
    • Como o Dropout zera ativações, considerou-se que ele combina melhor com ReLU do que com tanh, cuja faixa de ativação é [-1, 1]
    • Todas as não linearidades foram trocadas de tanh para ReLU, e o número de passagens aumentou para 80
    • O resultado foi erro de treino de 1,47%, erro de teste de 1,59% e miss 32 no teste
  • Apenas trocar tanh por ReLU não trouxe grande melhoria; a maior parte do ganho veio da adição de Dropout
  • Se essas técnicas pudessem ser levadas a 1989, o número de erros poderia cair de cerca de 80 para cerca de 30, com taxa de erro de teste em torno de 1,5%
    • Em troca, o tempo de treinamento quase quadruplicaria, de 3 dias para quase 12 dias no contexto de 1989
    • A latência de inferência não seria afetada

Antes de modelos maiores, quem mais ajudou foi ampliar os dados

  • Depois disso, o espaço para melhorias fáceis foi diminuindo
    • Técnicas adicionais, como weight normalization, não trouxeram grande melhora
    • Um “micro-ViT” com número parecido de parâmetros e operações também não alcançou o desempenho do convnet
  • Houve muitas inovações nos últimos 33 anos, mas algumas fazem mais diferença principalmente em modelos muito maiores
    • residual connection, layer normalization e batch normalization têm mais relação com estabilizar a otimização em larga escala
  • Melhorias grandes adicionais provavelmente viriam do aumento do tamanho da rede, mas isso elevaria a latência de inferência no teste
  • Aumentar os dados também melhorou o desempenho
    • Usando o MNIST completo, o conjunto de treino foi ampliado de 7.291 para 50.000 exemplos, cerca de 7 vezes mais
    • Ao rodar o baseline de treinamento existente por 100 passagens, o erro de teste melhorou para 2,74%, com miss 54
  • O melhor resultado veio da combinação entre expansão de dados e técnicas modernas
    • Erro de treino de 1,07%, erro de teste de 1,25%, miss 24 no teste
    • Em 1989, apenas ampliar o dataset já poderia elevar o desempenho do sistema sem aumentar a latência de inferência

Observações que ligam 1989 a 2022 e a 2055

  • Em 33 anos, a estrutura macroscópica não mudou tanto
    • Ainda se constrói uma arquitetura de rede neural diferenciável em camadas e se faz otimização de ponta a ponta com retropropagação e descida de gradiente estocástica
    • A diferença é que a escala na época era muito menor
  • O dataset e o modelo de 1989 são muito pequenos para os padrões atuais
    • O conjunto de treino tinha apenas 7.291 imagens em tons de cinza de 16x16
    • Datasets modernos de visão usam até centenas de milhões de imagens coloridas em alta resolução coletadas na web
    • Há exemplos como o OpenAI CLIP, treinado com 400M imagens, e o Google JFT-300M
    • Calcula-se que isso representa algo como 100.000.000 vezes mais dados em termos de pixels de entrada
  • A rede de 1989 tinha cerca de 9.760 parâmetros, 64K MACs e 1K ativações
    • Redes neurais modernas de visão chegam à escala de bilhões de parâmetros e cerca de 1e12 MACs
    • Modelos de linguagem natural podem chegar à casa dos trilhões de parâmetros
  • Ao olhar para 2022 a partir de 2055, supõe-se que um padrão parecido possa se repetir
    • As redes neurais de 2055 poderiam ser, em termos macro, quase iguais às de 2022, apenas maiores
    • Os datasets e modelos de hoje poderiam parecer cerca de 10.000.000 vezes menores
    • É possível imaginar que até modelos de ponta de 2022 possam ser treinados em cerca de 1 minuto em um dispositivo pessoal, como um projeto de fim de semana
    • Supõe-se também que apenas mudar detalhes de modelo, função de perda, aumento de dados e otimizador possa reduzir o erro pela metade
  • A ideia de treinar uma rede neural do zero para uma tarefa específica está envelhecendo rapidamente
    • Foundation models como o GPT são treinados por poucas instituições com grande capacidade computacional
    • A maior parte das aplicações pode ser implementada com fine-tuning leve de parte da rede, prompt engineering ou destilação de dados/modelo para pequenas redes de inferência especializadas
    • Num cenário extremo, em 2055 um usuário poderia apenas falar ou pensar em inglês para um neural net “megabrain” 10.000.000 vezes maior e pedir uma tarefa, reduzindo ainda mais a necessidade de treinar redes neurais diretamente

1 comentários

 
GN⁺ 2023-08-27
Opiniões no Hacker News
  • Há mais um ponto interessante. Originalmente, o treinamento levou 3 dias em uma workstation Sun 4/260; não consegui encontrar as especificações exatas, mas, sendo da era das primeiras workstations SPARC, o consumo total de energia provavelmente era algo em torno de 200 W.
    A CPU em si não consumia tanta energia, mas é bem provável que o sistema inteiro, incluindo disco e monitor, chegasse a esse nível. Então 200 W × 72 horas = 14.400 Wh.
    Karpathy rodou um treinamento do mesmo nível em um MacBook, e ainda sem utilizá-lo totalmente, em 90 segundos. Se for algo como 20 W × 0,025 hora = 0,5 Wh, isso significa uma melhora de quase 30.000 vezes na eficiência energética.

    • Isso é bem interessante; sempre achei que o desempenho de redes neurais deveria ser medido em unidades que tenham energia no denominador.
    • Pensando na Lei de Moore, 30.000 vezes nem parece tanto assim. Desde 1989, eu esperaria uma melhora maior, e o desempenho de supercomputadores aumentou mais de um milhão de vezes desde então.
    • Wh não é basicamente falar em joules (J), só com um fator constante de diferença?
  • O texto foi realmente muito bom. Só achei uma pena que a previsão para 2055 seja meta-linear. Ele evita o erro comum de pegar a tecnologia atual e fazer uma regressão linear dos números até 33 anos no futuro, mas ainda parece pressupor uma espécie de simetria de linha de mundo tendo o presente como origem.
    Como o horizonte temporal é longo o bastante, avanços e obstáculos inesperados podem fazer com que nenhuma dessas previsões acerte. Alguém pode descobrir uma estrutura de base muito mais simples do que “perceptron++”; todos podem estar treinando nuvens gaussianas 3D; ou computadores quânticos podem finalmente decolar, a ponto de ainda nem termos os substantivos para chamar os componentes que usaremos.
    Por outro lado, podemos esbarrar em limites de escala que ainda não vimos em hardware ou treinamento, ou pode haver um retrocesso civilizacional. Ainda assim, se eu fosse apostar, não apostaria exatamente contra a conclusão do texto. Se extrapolarmos conhecendo apenas o passado e o presente, acho que ela provavelmente está perto da melhor conclusão possível.

    • Acho que isso está certo. Os próximos 33 anos provavelmente serão bem diferentes de agora.
      Eu me inclino para um lado em que a mudança será mais dramática. Não apenas por recursos, mas porque há muito espaço para melhorias algorítmicas.
      Pelo lado mais óbvio, a maioria das bibliotecas ainda não aproveita suficientemente várias técnicas conhecidas de otimização por gradiente. Como foi fácil demais simplesmente acrescentar mais dados e throughput, ainda há um estoque de ferramentas a aplicar.
      E os grandes modelos bem-sucedidos estão dando pistas importantes. Por exemplo, modelos de linguagem estão aprendendo uma espécie de lógica da linguagem parecida com a forma como processamos pensamentos, e está claro que conseguem conectar informações muito heterogêneas de modo plausível.
      Quando algum dia entendermos a essência desse processamento, o processamento de linguagem poderá se simplificar drasticamente. Essa é apenas uma das oportunidades de avanços radicais em arquitetura e algoritmos, e seria de fato revolucionária.
  • Então, nos próximos 33 anos, basta fazer a mesma coisa, só aumentando dados e poder computacional? Se levarmos logicamente adiante o entusiasmo do tipo “finalmente estou vendo isso acontecer em vida” de quando os LLMs apareceram, junto com o clima de “é só aumentar o modelo e os dados”, chegamos a essa conclusão. Mas será que força bruta sozinha realmente nos leva até AGI?
    Há 33 anos, “IA conexionista” não era o paradigma dominante, e “IA simbólica” tampouco era a única abordagem alternativa. Também havia abordagens como o “funcionalismo robótico”, segundo o qual não se pode ter inteligência verdadeira sem interagir com o mundo físico.
    Daqui a 33 anos, essas outras abordagens podem ressurgir combinadas com o conexionismo, ou uma abordagem totalmente nova pode aparecer.

  • Excelente texto. Vivi pessoalmente os primeiros tempos das redes neurais artificiais. Em meados dos anos 1980, fiz parte do painel consultivo de ferramentas de redes neurais da DARPA, escrevi a primeira versão do produto comercial SAIC ANSim e também criei um modelo simples de backpropagation implantado em um detector de bombas que a empresa fez sob contrato com a FAA.
    Há 5 ou 6 anos, também gerenciei uma equipe de deep learning “tradicional” na Capital One. Os últimos 18 meses foram realmente empolgantes. Tenho usado o máximo de tempo possível explorando LLMs auto-hospedados e APIs da Hugging Face, OpenAI etc.
    Só de pensar na tecnologia daqui a 33 anos, minha cabeça quase explode.

  • A mudança mais fundamental está na diferença de com o que os modelos são treinados.
    Pequenas imagens de caracteres são mais próximas de um problema de quiz, e são completamente diferentes de treinar, na prática, toda a comunicação linguística e visual da humanidade.
    Mesmo que os recursos computacionais continuem a escalar pelos próximos 33 anos, não ficaremos presos à etapa de treinar modelos que imitam o comportamento e o conhecimento humanos. Esse problema — isto é, nós mesmos — já terá sido reduzido a um problema de brinquedo muito antes disso.

    • Acho que modelos de IA vão evoluir gerando dados sintéticos, filtrando-os e melhorando-os, e então treinando novamente com eles. Sistemas externos como execução de código, busca, pessoas, simulações e robôs também podem entrar no loop.
      A qualidade não vai cair, porque haverá muito esforço em filtragem de dados e garantia de diversidade. É sempre possível melhorar dando mais tempo ao modelo.
      A arquitetura do modelo não é importante em comparação com o dataset. Qualquer modelo da mesma família pode aprender as mesmas capacidades com os mesmos dados, mas, se você mudar os dados, as capacidades de todos mudam. A inteligência está nos dados.
      O futuro não é projetar arquiteturas de modelo, e sim engenharia de dados. Por analogia, a cultura humana evolui mais rápido que a biologia humana. Os dados estão evoluindo mais rápido que os modelos.
      Na IA recente, vemos uma queda acentuada em novas arquiteturas e um movimento em que datasets variados são aplicados aos mesmos modelos Transformer. Mesmo dentro dos Transformers, as variantes amplamente usadas são muito poucas, enquanto milhares foram descartadas.
      Gosto de pensar que o verdadeiro motor da inteligência é a evolução da linguagem por meio de memes. Nós e a IA estamos juntos surfando o crescimento exponencial da linguagem.
    • Antes, gostaria que quase resolvessem pelo menos o problema de brinquedo chamado direção autônoma. Ainda estou esperando.
  • Não está claro se a capacidade computacional continuará escalando nos próximos 33 anos como antes. Mas ela também não precisa necessariamente fazer isso
    Enquanto lia o texto, pensei: “Nossa, lembro que naquele fim de semana usei MSE em um projeto de machine learning por hobby e não deu certo. Eu tinha escolhido a função de perda errada”
    Os LLMs atuais, ou os LLMs do ano que vem, provavelmente serão capazes de me dizer bem como melhorar meu código e meus gráficos. Isso me permitiria aplicar técnicas de nível especialista que, de outra forma, estariam inacessíveis para mim por exigirem 50 mil horas de acúmulo de habilidade
    Uma parte de mim diz que os humanos acabaram e que, daqui a 33 anos, teremos criado um mundo em que os humanos serão irrelevantes. Mas outra parte diz que, se evitarmos esse destino e todas as outras formas de ruína, o futuro poderá ser bastante promissor

    • Já ouvimos muito esse tipo de conversa sobre “o LLM do ano que vem”, e continuaremos ouvindo. Os últimos 5 jardas são os mais difíceis e, sem eles, as 5 milhas anteriores também têm utilidade limitada
    • Acho que em algum momento chegará a hora de desacelerar a IA muito, muito fortemente para evitar resultados ruins. Concordo com a visão de Zvi Mowshowitz. Devemos incentivar o progresso e a aceitação de riscos em todas as áreas, exceto naquelas com risco de extinção
      Aplicar os LLMs de hoje a todo tipo de problema não vai acabar conosco. Mas uma AGI consciente e capaz de planejar pode surgir em poucos anos, e não sabemos qual é o limite superior de quão inteligentes poderemos torná-las
      Vejo que somos responsáveis por todo ser inteligente que trazemos ao mundo. Há quem lamente que não exista uma prova para se tornar pai ou mãe; então e quanto a criar um milhão de cópias de cérebros virtuais totalmente novos? Além disso, eles nasceriam, na prática, para uma vida inteira de trabalho forçado
  • Foi realmente excelente. Embora não tenha sido tratado explicitamente, acho que a diferença daqui a 33 anos estará nas entradas que os modelos processam. Em 1989, os modelos de ponta usavam imagens em escala de cinza de 16×16; hoje temos imagens coloridas de alguns megapixels
    Daqui a 30 anos, um desktop talvez consiga treinar o CLIP em 90 segundos, mas com o que os modelos de ponta daquela época serão treinados?

    • Será comportamento humano em um sentido muito mais geral do que qual token será digitado em seguida. Para imitar humanos o mais de perto possível com métodos básicos de deep learning, será preciso treinar algo capaz de prever o comportamento humano como um todo
      Para isso, seriam necessárias de bilhões a trilhões de horas de vídeo e áudio de pessoas diversas realizando todo tipo de atividade humana, e provavelmente muitos outros tipos de entrada
    • Existem imagens em megapixels que podem ser obtidas facilmente com câmeras de celular, mas quase todos os modelos de visão realmente usados em larga escala recebem como entrada resolução 224×224, ou algo em torno de 384×384. Resoluções maiores acabam sendo reduzidas por downsampling
      Por enquanto, parece melhor gastar o orçamento computacional em um “cérebro” maior do que em “olhos” melhores
    • Também podem ser milhões de horas de dados capturados por headsets como o Vision Pro
      Não sei exatamente o que será capturado, mas deve ser possível treinar modelos com uma combinação de várias entradas, como áudio, vídeo, informações espaciais e íris
  • É interessante que, durante esse período, o interesse por redes neurais tenha sido quase completamente perdido e depois tenha voltado

    • Tive que refazer aulas de IA várias vezes na universidade. Isso porque eu não concordava com a visão de que “IA é busca simbólica
      Hoje, certamente há pessoas encadeando LLMs para fazê-los realizar raciocínio direto e reverso
    • Neste caso, há bons motivos para o ressurgimento, mas na verdade algo parecido se repete em quase tudo relacionado a software. A diferença é que, quanto mais mainstream é a tecnologia, mais curto costuma ser o ciclo de hype
    • Devemos agradecer ao Hinton por isso. É uma pena que não exista Prêmio Nobel para software
      Ainda assim, o Turing Award também é bastante excelente
  • É surpreendente, ao mesmo tempo, o quanto mudou pouco e o quanto mudou muito. Lembro de como foi revelador ler “A eficácia irracional dos RNNs”, e hoje parece que vivemos em um mundo completamente diferente

    • Se tomarmos aquele trabalho de 2015 como uma espécie de linha de base, acho que podemos ter uma conversa mais construtiva e calma
      A nova tecnologia é muito melhor, e suas implicações futuras são grandes. Mas, para quem já prestava atenção desde aquela época, havia um ponto de referência em que “ficou absurdamente melhor” não levava imediatamente a “está fora de controle”
      É verdade que ficou muito melhor
  • Os textos de Andrej Karpathy são sempre revigorantes. Quanto mais ele sabe, mais explora de forma direta e simples os fundamentos da ciência de machine learning
    Esta área está cheia de papers que propõem novas estruturas complexas para pequenas melhorias difíceis até de reproduzir e que, na esperança de superar o estado da arte, enchem 50 páginas inúteis para fazer seu trabalho parecer “sério”