35 pontos por GN⁺ 2024-05-20 | 1 comentários | Compartilhar no WhatsApp
  • Implementa o Llama3 do zero com um único tensor e multiplicação de matrizes.
  • Carrega diretamente os tensores do arquivo de modelo Llama3 fornecido pela Meta

Resumo da implementação do modelo LLaMA-3 do zero

Configuração do tokenizador

  • Configura o tokenizador usando a biblioteca Tiktoken
  • Define tokens especiais e os adiciona ao tokenizador

Leitura dos arquivos do modelo

  • Carrega o arquivo do modelo (consolidated.00.pth) usando PyTorch
  • Lê a configuração do modelo a partir do arquivo params.json
    • Inclui informações como número de dimensões (dim), número de camadas (n_layers) e número de heads (n_heads)

Conversão de texto em tokens

  • Converte o texto do prompt em uma sequência de tokens usando o tokenizador
  • Converte cada token em seu embedding correspondente
  • Normaliza os embeddings usando normalização RMS

Implementação da atenção

  • Carrega do modelo as matrizes de consulta (wq), chave (wk), valor (wv) e saída (wo)
  • Calcula os vetores de consulta, chave e valor para cada token
  • Adiciona informação posicional usando RoPE (Rotary Positional Embedding)
  • Calcula as pontuações de atenção por meio do produto interno entre consulta e chave
  • Aplica máscara nas pontuações de atenção para tokens futuros
  • Aplica a função Softmax para calcular a distribuição de atenção
  • Multiplica a distribuição de atenção pelos vetores de valor para obter o resultado da atenção

Atenção multi-head

  • Executa o cálculo de atenção para todos os heads de atenção
  • Concatena os resultados de cada head para gerar o resultado final da atenção

Rede feed-forward

  • Implementa a rede feed-forward com a função de ativação SwiGLU (Swish Gated Linear Unit)
  • Soma o resultado da atenção com a saída da rede feed-forward para gerar o embedding final

Repetição de todas as camadas

  • Repete os cálculos de atenção e da rede feed-forward para todas as camadas do transformer
  • Aplica normalização RMS ao embedding final

Predição de tokens

  • Multiplica o embedding final pela matriz de saída para calcular os logits
  • Prevê como próximo token aquele com o maior valor entre os logits
  • Decodifica e exibe o token previsto

Opinião do GN⁺

  • Este artigo é muito útil para entender a estrutura interna e o funcionamento do modelo Llama3. Em especial, o processo de implementação do zero deixa claro como cada componente do modelo interage com os demais.
  • Para engenheiros de software iniciantes, pode ser um pouco complexo. Ainda assim, a explicação passo a passo está bem organizada, então é possível entender acompanhando com calma.
  • Também é possível aprender como conceitos avançados, como RoPE (embeddings posicionais rotativos), ajudam a melhorar o desempenho do modelo. Isso pode ser útil ao implementar ou aprimorar outros modelos de NLP.
  • Este artigo ajuda a compreender em profundidade a estrutura interna e o funcionamento de modelos de deep learning. Isso será muito útil na hora de otimizar ou depurar modelos.

1 comentários

 
2147483647 2024-05-23

A Anya é fofa.