Aprendizagem pessoal com IA
e orientação prática
Recomendação de recursos 1

Deepdive Llama3 From Scratch: Ensinando você a implementar modelos Llama3 a partir do zero

Introdução geral

O Deepdive Llama3 From Scratch é um projeto de código aberto hospedado no GitHub que se concentra na análise e implementação passo a passo do processo de inferência dos modelos Llama3. Ele é otimizado com base no projeto naklecha/lllama3-from-scratch e foi criado para ajudar os desenvolvedores e alunos a obter uma compreensão mais profunda dos conceitos principais e dos detalhes de raciocínio do Llama3. O projeto fornece comentários de código detalhados, caminhos de aprendizado estruturados e instruções de rastreamento dimensional de matriz, facilitando o início para os iniciantes. Com um código claro de desmontagem e implementação passo a passo, os usuários podem dominar o processo completo, desde a inferência do modelo até a computação complexa, que é um recurso de alta qualidade para aprender modelos de linguagem grandes.

Deepdive Llama3 From Scratch: ensinando você a implementar o modelo Llama3 do zero-1


 

Lista de funções

  • Raciocínio passo a passo para alcançarDescrição: fornece um detalhamento de cada etapa da inferência do modelo Llama3, incluindo a derivação matemática e a implementação do código.
  • Comentários detalhados do códigoAdicionar anotações detalhadas a cada parte do código para explicar sua função e papel e ajudar a entender a lógica subjacente.
  • Rastreamento dimensionalAnotar a alteração das dimensões da matriz no cálculo e mostrar claramente o processo de fluxo de dados.
  • Otimização das estruturas de aprendizagemReorganize a ordem do conteúdo e o índice para facilitar o aprendizado passo a passo.
  • Explicação do mecanismo de atenção do grupoDescrição: Uma explicação detalhada do mecanismo de atenção de consulta em grupo do Llama3 e sua implementação.
  • Descrição da rede SwiGLU FeedforwardSwiGLU: Dissecando a estrutura da rede SwiGLU e sua função no modelo.
  • Suporte à geração de várias palavrasDemonstra como gerar saída de várias palavras por meio de chamadas recursivas, incluindo o princípio de otimização do KV-Cache.

 

Usando a Ajuda

Como instalar e usar

O Deepdive Llama3 From Scratch é um projeto de código aberto do GitHub que pode ser usado sem um processo de instalação complicado. Abaixo estão as etapas detalhadas para você começar e explorar os recursos do projeto.

Obter o projeto

  1. Visite a página do GitHub
    Abra seu navegador e digite o URL https://github.com/therealoliver/Deepdive-llama3-from-scratchpara acessar a página inicial do projeto.
  2. Código de download
    • Clique no ícone verde Código Botão.
    • opção Baixar ZIP Faça o download do zip ou clone o projeto usando o comando Git:
      git clone https://github.com/therealoliver/Deepdive-llama3-from-scratch.git
      
    • Extraia o arquivo ZIP ou vá para a pasta do projeto clonado.
  3. Preparação ambiental
    O projeto se baseia no ambiente Python e em bibliotecas comuns de aprendizagem profunda, como o PyTorch. As etapas a seguir são recomendadas para a configuração:

    • Certifique-se de que o Python 3.8 ou superior esteja instalado.
    • Execute o seguinte comando no terminal para instalar a dependência:
      pip install torch numpy
      
    • Se você precisar executar a inferência completa do modelo, talvez seja necessário instalar adicionalmente o transformadores ou outras bibliotecas, dependendo dos requisitos específicos do código.

Funções principais

1. realização por raciocínio gradual
  • Descrição funcionalEste é o núcleo do projeto, fornecendo uma desmontagem de cada etapa da inferência do Llama3, desde a incorporação de entrada até a previsão de saída.
  • procedimento::
    1. Abra o arquivo principal na pasta do projeto (por exemplo llama3_inference.py (ou documentos com nomes semelhantes, dependendo da nomenclatura no projeto).
    2. Leia as instruções no início do documento para entender o processo geral de raciocínio.
    3. Execute os trechos de código passo a passo, com comentários que expliquem cada segmento. Exemplo:
      # Camada de entrada de incorporação para converter tokens em vetores
      token_embeddings = embedding_layer(tokens)
      
    4. Entenda os princípios matemáticos e a lógica de implementação de cada etapa por meio de comentários e comparações de código.
  • Dicas e truquesRecomenda-se executá-lo com o Jupyter Notebook para executar o código bloco a bloco e ver os resultados intermediários.
2. comentários detalhados do código
  • Descrição funcionalCada parte do código é acompanhada de anotações detalhadas, adequadas para que os iniciantes entendam conceitos complexos.
  • procedimento::
    1. Abra o arquivo de projeto em um editor de código, como o VS Code.
    2. Ao navegar pelo código, observe que o código que começa com # Notas que começam com, por exemplo:
      # RMS normalizado para evitar valores instáveis, eps para evitar o zeramento
      normalizado = rms_norm(embeddings, eps=1e-6)
      
    3. Depois de ler os comentários, tente modificar os parâmetros você mesmo e execute-o, observando como os resultados mudam.
  • Dicas e truquesTradução: Traduza as anotações para o seu próprio idioma para registrá-las e aprofundar sua compreensão.
3. rastreamento dimensional
  • Descrição funcionalRotulagem de alterações na dimensão da matriz para ajudar os usuários a entender as transformações na forma dos dados.
  • procedimento::
    1. Encontre locais para rotular as dimensões, por exemplo:
      # Entrada [17x4096] -> Saída [17x128], um vetor de consulta por token
      q_por_token = torch.matmul(token_embeddings, q_layer0_head0.)
      
    2. Verifique o formato do tensor gerado pelo código e verifique se ele está de acordo com os comentários:
      print(q_per_token.shape) # output torch.Size([17, 128])
      
    3. Compreensão do processo computacional dos mecanismos de atenção ou das redes feedforward por meio de alterações dimensionais.
  • Dicas e truquesDiagramas de transformação de dimensão (por exemplo, 4096 -> 128) para obter uma compreensão visual do fluxo de dados.
4. explicação do mecanismo de atenção do grupo
  • Descrição funcionalDescrição: Uma explicação detalhada do Grouped Query Attention (GQA) para Llama3, em que cada 4 cabeças de consulta compartilham um conjunto de vetores de valores-chave.
  • procedimento::
    1. Localize o segmento de código do Mecanismo de Atenção, geralmente no attention.py ou em um documento semelhante.
    2. Leia as notas relevantes, por exemplo:
      # GQA: Dividir o cabeçalho da consulta em grupos, compartilhar KVs, reduzir a dimensionalidade para [1024, 4096]
      kv_weights = model["attention.wk.weight"]
      
    3. Execute o código e observe como o agrupamento reduz a quantidade de cálculos.
  • Dicas e truquesCalcular a economia de memória do GQA em comparação com a atenção tradicional de várias cabeças.
5 Descrição da rede SwiGLU feed-forward
  • Descrição funcionalDescrição: Explique como as redes SwiGLU aumentam a não linearidade e melhoram a representação do modelo.
  • procedimento::
    1. Encontre o código de implementação da rede feedforward, por exemplo:
      # SwiGLU: w1 e w3 calculam combinações não lineares, w2 produz
      output = torch.matmul(F.silu(w1(x)) * w3(x), w2.)
      
    2. Leia as fórmulas anotadas e entenda seus princípios matemáticos.
    3. Modifique os dados de entrada, execute o código e observe as alterações na saída.
  • Dicas e truquesTente substituí-lo pelo ReLU e compare a diferença de desempenho.
6. suporte à geração de várias palavras
  • Descrição funcionalGeração de sequências de várias palavras por meio de chamadas recorrentes e introdução da otimização do KV-Cache.
  • procedimento::
    1. Encontre o código da lógica de geração, por exemplo:
      # Loop para prever a próxima palavra até encontrar o token final
      while token ! = "".
      next_token = model.predict(current_seq)
      current_seq.append(next_token)
      
    2. Leia as notas relacionadas ao KV-Cache para entender como o armazenamento em cache acelera a inferência.
    3. Digite uma frase curta (por exemplo, "Hello") e execute-a para gerar uma frase completa.
  • Dicas e truques: Ajustes max_seq_len para testar saídas de diferentes comprimentos.

advertência

  • Requisitos de hardwareO suporte à GPU pode ser necessário para executar a inferência completa, mas testes menores podem ser realizados na CPU.
  • Conselhos sobre aprendizadoLeia em conjunto com o documento oficial da Llama3 para obter melhores resultados.
  • Método de comissionamentoQuando você encontrar um erro, verifique a versão da dependência ou consulte a página de problemas do GitHub para obter ajuda.

Com essas etapas, você pode ter uma compreensão completa do Deepdive Llama3 From Scratch, desde o raciocínio básico até as técnicas de otimização!

Download de ferramentas
Não pode ser reproduzido sem permissão:Chefe do Círculo de Compartilhamento de IA " Deepdive Llama3 From Scratch: Ensinando você a implementar modelos Llama3 a partir do zero

Chefe do Círculo de Compartilhamento de IA

O Chief AI Sharing Circle se concentra no aprendizado de IA, fornecendo conteúdo abrangente de aprendizado de IA, ferramentas de IA e orientação prática. Nosso objetivo é ajudar os usuários a dominar a tecnologia de IA e explorar juntos o potencial ilimitado da IA por meio de conteúdo de alta qualidade e compartilhamento de experiências práticas. Seja você um iniciante em IA ou um especialista sênior, este é o lugar ideal para adquirir conhecimento, aprimorar suas habilidades e realizar inovações.

Entre em contato conosco
pt_BRPortuguês do Brasil