Escrevendo um Transformer Apenas com Decodificador para LLM do Zero em Python
Google/DeepMind
OpenAI
Meta
O autor de uma série de artigos descreve em detalhes a implementação de um bloco transformer para um pequeno LLM apenas com decodificador usando o framework PyTorch. Os componentes abordados incluem: Atenção Multi-Cabeça com mascaramento, Rede Feed Forward com GELU, camada de normalização e conexões residuais. O artigo explica a diferença da arquitetura original: a pré-normalização (Pre-LN) é usada em vez da pós-normalização para estabilidade no treinamento.
O autor Vladimir, usando como exemplo a tarefa de marcação d'água em texto licenciado, implementa um bloco de transformer para uma LLM decoder-only. Ele explica que o transformer é uma arquitetura do artigo do Google "Attention Is All You Need", onde a sequência é processada em paralelo por meio do mecanismo de atenção. A base do Multi-Head Attention são três matrizes de projeção: Q, K e V. Na primeira etapa, calcula-se a similaridade entre os tokens (matriz de atenção); na segunda, o conteúdo dos tokens é misturado de acordo com os pesos encontrados. Para eficiência, todas as cabeças de atenção são implementadas por meio de uma única projeção linear grande. Após a atenção, aplica-se uma Feed Forward Network com ativação GELU e dropout. A montagem do transformer inclui normalização (Pre-LN) e conexões residuais. Também é adicionada uma máscara causal (causal mask) para o decoder. No geral, o bloco está pronto para uso na construção de LLMs, treinamento e geração de texto.
Fonte: Habr — хаб NLP —
original
