2 pontos por GN⁺ 2023-09-24 | 1 comentários | Compartilhar no WhatsApp
  • O autor construiu manualmente um modelo transformer semelhante ao GPT-2 para prever sequências simples e obter uma compreensão mais profunda de transformers e do mecanismo de atenção.
  • O transformer não foi treinado com pesos preexistentes; cada peso foi atribuído manualmente.
  • A tarefa escolhida para o transformer foi prever a sequência "aabaabaabaab...", o que exige consultar os dois tokens anteriores para determinar a próxima saída.
  • O autor usou um esquema de tokenização que representa 'a' como 0 e 'b' como 1.
  • O código do modelo é baseado na implementação GPT-2 do picoGPT, de jaymody, com algumas modificações para simplificação.
  • As dimensões do modelo incluem comprimento de contexto de 5, tamanho de vocabulário de 2 e tamanho de embedding de 8.
  • O autor projetou os pesos de embedding, usando os 5 primeiros elementos para embeddings posicionais one-hot e os dois elementos seguintes para embeddings one-hot do id do token.
  • O bloco transformer foi projetado para gerar matrizes q, k e v, reprojetar o resultado de volta para embeddings e então reprojetá-lo novamente para um conjunto de logits do próximo token usando os pesos de embedding de token.
  • O autor fornece uma explicação detalhada do design do head de atenção e da projeção para o espaço de embeddings.
  • A etapa final envolve multiplicar o resultado da execução do bloco transformer pelos pesos de embedding de token transpostos para obter os logits finais.
  • O modelo usa a função softmax para inferência e pode gerar completações plausíveis para a sequência dada.
  • O modelo alcançou taxa de sucesso de 100% quando testado com contextos não ambíguos.
  • O autor incentiva os leitores a obter uma compreensão mais intuitiva de transformers e atenção, e a tentar construir seu próprio modelo.
  • O artigo inclui o código completo do modelo, usando numpy para realizar os cálculos e definir funções para tokenização, previsão e completação de sequência.
  • O autor sugere que a eficiência do modelo pode ser melhorada reduzindo a janela de contexto e usando técnicas como fused multiply-add e cache de kv.
  • Este artigo é voltado para pessoas interessadas na área de modelos de linguagem, especialmente em machine learning e IA.

1 comentários

 
GN⁺ 2023-09-24
Comentários do Hacker News
  • Este artigo discute a criação manual de um transformer para prever sequências simples.
  • O estudo relacionado "Thinking Like Transformers" apresenta o RASP, uma linguagem de programação primitiva que pode ser modelada com componentes de transformer.
  • Programas semelhantes ao RASP podem ser compilados em pesos de modelo sem treinamento.
  • Recomenda-se implementar transformers do zero para aumentar a compreensão, incluindo a importância do dropout e da paralelização do treinamento sobre tokens.
  • O artigo sugere que a experiência prática de lidar diretamente com transformers pode gerar aprendizados inesperados.
  • Um vídeo feito por Karpathy e outros é citado como material útil para entender transformers.
  • É proposta a ideia de uma interface intuitiva para pesos de modelo, que especialistas de domínio poderiam ajustar manualmente para acelerar o treinamento.
  • O artigo é bem elogiado por tornar conceitos técnicos mais acessíveis por meio de uma explicação clara sobre transformers.
  • Transformers são comparados a máquinas abstratas, como uma máquina de Turing ou uma máquina que faz parsing de expressões regulares.
  • O autor considera as aplicações práticas duvidosas, mas incentiva os leitores a tentarem construir seus próprios modelos.
  • O artigo é interessante e informativo, despertando discussões e ideias entre leitores com conhecimento técnico.