- 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
Comentários do Hacker News