Connect with us

Inteligência artificial

Llama 2: Uma Imersão Profunda no Desafiador de Código Aberto para ChatGPT

mm
META LLAMA 2 LLM

Modelos de Linguagem Grande (LLMs) capazes de realizar tarefas de raciocínio complexo mostraram promessa em domínios especializados, como programação e escrita criativa. No entanto, o mundo dos LLMs não é simplesmente um paraíso de plug-and-play; existem desafios em usabilidade, segurança e demandas computacionais. Neste artigo, mergulharemos profundamente nas capacidades do Llama 2, enquanto fornecemos um guia detalhado para configurar este LLM de alto desempenho via Hugging Face e T4 GPUs no Google Colab.

Desenvolvido pela Meta em parceria com a Microsoft, este modelo de linguagem grande de código aberto visa redefinir os reinos da inteligência artificial gerativa e da compreensão da linguagem natural. O Llama 2 não é apenas outro modelo estatístico treinado em terabytes de dados; é uma encarnação de uma filosofia. Uma que enfatiza a abordagem de código aberto como a espinha dorsal do desenvolvimento de IA, particularmente no espaço de IA gerativa.

O Llama 2 e seu substituto otimizado para diálogo, Llama 2-Chat, vêm equipados com até 70 bilhões de parâmetros. Eles passam por um processo de ajuste fino projetado para alinhá-los estreitamente com as preferências humanas, tornando-os ambos mais seguros e eficazes do que muitos outros modelos publicamente disponíveis. Este nível de granularidade no ajuste fino é frequentemente reservado para LLMs “produto” fechados, como ChatGPT e BARD, que não estão geralmente disponíveis para escrutínio ou personalização pública.

Imersão Técnica Profunda do Llama 2

Para treinar o modelo Llama 2; como seus antecessores, ele usa uma arquitetura de transformador auto-regressiva transformer, pré-treinada em um corpus extensivo de dados auto-supervisionados. No entanto, ele adiciona um nível adicional de sofisticação ao usar Aprendizado por Reforço com Feedback Humano (RLHF) para se alinhar melhor com o comportamento e preferências humanas. Isso é computacionalmente caro, mas vital para melhorar a segurança e eficácia do modelo.

Arquitetura de treinamento do Meta Llama 2

Arquitetura de treinamento do Meta Llama 2

Pré-treinamento e Eficiência de Dados

A inovação fundamental do Llama 2 reside em seu regime de pré-treinamento. O modelo segue as pistas de seu antecessor, Llama 1, mas introduz várias melhorias cruciais para elevar seu desempenho. Notavelmente, um aumento de 40% no número total de tokens treinados e uma expansão dupla no comprimento de contexto se destacam. Além disso, o modelo aproveita a atenção de consulta agrupada (GQA) para ampliar a escalabilidade de inferência.

Ajuste Fino Supervisionado (SFT) e Aprendizado por Reforço com Feedback Humano (RLHF)

O Llama-2-Chat foi rigorosamente ajustado usando tanto SFT quanto Aprendizado por Reforço com Feedback Humano (RLHF). Neste contexto, o SFT serve como um componente integral do quadro RLHF, refinando as respostas do modelo para se alinhar estreitamente com as preferências e expectativas humanas.

OpenAI forneceu uma ilustração esclarecedora que explica as metodologias SFT e RLHF empregadas no InstructGPT. Assim como o LLaMa 2, o InstructGPT também aproveita essas técnicas de treinamento avançadas para otimizar o desempenho do modelo.

Etapa 1 na imagem abaixo se concentra no Ajuste Fino Supervisionado (SFT), enquanto as etapas subsequentes completam o processo de Aprendizado por Reforço com Feedback Humano (RLHF).

O Ajuste Fino Supervisionado (SFT) é um processo especializado destinado a otimizar um LLM pré-treinado para uma tarefa downstream específica. Ao contrário dos métodos não supervisionados, que não exigem validação de dados, o SFT emprega um conjunto de dados que foi pré-validado e rotulado.

Geralmente, criar esses conjuntos de dados é caro e demorado. A abordagem do Llama 2 foi qualidade sobre quantidade. Com apenas 27.540 anotações, a equipe da Meta alcançou níveis de desempenho competitivos com anotadores humanos. Isso se alinha bem com estudos recentes que mostram que mesmo conjuntos de dados limitados, mas limpos, podem impulsionar resultados de alta qualidade.

No processo SFT, o LLM pré-treinado é exposto a um conjunto de dados rotulado, onde os algoritmos de aprendizado supervisionado entram em jogo. Os pesos internos do modelo são recalibrados com base em gradientes calculados a partir de uma função de perda específica da tarefa.

Essa otimização permite que o LLM compreenda os padrões intricados e nuances embutidos no conjunto de dados rotulado. Consequentemente, o modelo não é apenas uma ferramenta generalizada, mas evolui para um ativo especializado, apto a realizar a tarefa alvo com um alto grau de precisão.

O aprendizado por reforço é a próxima etapa, visando alinhar o comportamento do modelo mais estreitamente com as preferências humanas.

A fase de ajuste fino aproveitou o Aprendizado por Reforço com Feedback Humano (RLHF), empregando técnicas como Amostragem de Importância e Otimização de Política Proximal para introduzir ruído algorítmico, evitando assim ótimos locais. Esse ajuste fino iterativo não apenas melhorou o modelo, mas também alinhou sua saída com as expectativas humanas.

O Llama 2-Chat usou um protocolo de comparação binária para coletar dados de preferência humana, marcando uma tendência notável em direção a abordagens mais qualitativas. Esse mecanismo informou os Modelos de Recompensa, que são usados para ajustar o modelo de IA conversacional.

Atenção Fantasma: Diálogos Multi-Turnos

A Meta introduziu uma nova funcionalidade, Atenção Fantasma (GAtt), projetada para melhorar o desempenho do Llama 2 em diálogos multi-turnos. Isso resolve efetivamente o problema persistente de perda de contexto em conversas contínuas. A GAtt age como uma âncora, ligando as instruções iniciais a todas as mensagens de usuário subsequentes. Acoplada com técnicas de aprendizado por reforço, ajuda a produzir respostas consistentes, relevantes e alinhadas com o usuário ao longo de diálogos mais longos.

A partir do Repositório Git da Meta Usando download.sh

  1. Visite o Site da Meta: Navegue até o site oficial do Llama 2 da Meta e clique em ‘Baixar o Modelo’
  2. Preencha os Detalhes: Leia e aceite os termos e condições para prosseguir.
  3. Confirmação por E-mail: Uma vez que o formulário for enviado, você receberá um e-mail da Meta com um link para baixar o modelo de seu repositório Git.
  4. Execute download.sh: Clone o repositório Git e execute o script download.sh. Este script solicitará que você se autentique usando uma URL da Meta que expira em 24 horas. Você também escolherá o tamanho do modelo — 7B, 13B ou 70B.

A partir da Hugging Face

  1. Receba o E-mail de Aceitação: Após obter acesso da Meta, vá para Hugging Face.
  2. Solicite Acesso: Escolha o modelo desejado e envie uma solicitação para conceder acesso.
  3. Confirmação: Espere um e-mail de ‘acesso concedido’ dentro de 1 a 2 dias.
  4. Gere Tokens de Acesso: Navegue até ‘Configurações’ na sua conta da Hugging Face para criar tokens de acesso.

A versão 4.31 dos Transformers é totalmente compatível com o LLaMa 2 e abre muitas ferramentas e funcionalidades dentro do ecossistema da Hugging Face. Desde scripts de treinamento e inferência até quantização de 4 bits com bitsandbytes e Ajuste Fino Eficiente de Parâmetros (PEFT), a caixa de ferramentas é extensa. Para começar, certifique-se de estar na versão mais recente dos Transformers e conectado à sua conta da Hugging Face.

Aqui está um guia simplificado para executar a inferência do modelo LLaMa 2 em um ambiente Google Colab, aproveitando um tempo de execução de GPU:

Modelo do Google Colab - T4 GPU

Modelo do Google Colab – T4 GPU

 

 

 

 

 

 

Instalação de Pacotes


!pip install transformers
!huggingface-cli login

Importe as bibliotecas Python necessárias.

from transformers import AutoTokenizer
import transformers
import torch

Inicialize o Modelo e o Tokenizador

Nesta etapa, especifique qual modelo Llama 2 você estará usando. Para este guia, usamos meta-llama/Llama-2-7b-chat-hf.

model = "meta-llama/Llama-2-7b-chat-hf"
tokenizer = AutoTokenizer.from_pretrained(model)

Configure o Pipeline

Aproveite o pipeline da Hugging Face para geração de texto com configurações específicas:

pipeline = transformers.pipeline(
"text-generation",
model=model,
torch_dtype=torch.float16,
device_map="auto")

Gere Sequências de Texto

Finalmente, execute o pipeline e gere uma sequência de texto com base na sua entrada:

sequences = pipeline(
‘Quem são os principais contribuintes para o campo da inteligência artificial?\n’,
do_sample=True,
top_k=10,
num_return_sequences=1,
eos_token_id=tokenizer.eos_token_id,
max_length=200)

Eu passei os últimos cinco anos me imergindo no fascinante mundo de Aprendizado de Máquina e Aprendizado Profundo. Minha paixão e especialização me levaram a contribuir para mais de 50 projetos diversificados de engenharia de software, com um foco particular em IA/ML. Minha curiosidade contínua também me atraiu para o Processamento de Linguagem Natural, um campo que estou ansioso para explorar mais.