Modelos e plataformas de IA
Llama 2: Uma Imersão Profunda no Desafiador de Código Aberto para ChatGPT
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, mergulhamos 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 (MSFT ), este modelo de linguagem grande de código aberto visa redefinir os domínios da inteligência artificial gerativa e da compreensão da linguagem natural. O Llama 2 não é apenas um 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 mais seguros e eficazes do que muitos outros modelos disponíveis publicamente. Este nível de granularidade no ajuste fino é frequentemente reservado para LLMs fechados “produto”, 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-regressivo, pré-treinado em um corpus extensivo de dados auto-supervisionados. No entanto, ele adiciona uma camada 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.
Pré-treinamento e Eficiência de Dados
A inovação fundamental do Llama 2 reside em seu regime de pré-treinamento. O modelo segue 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 RLHF. Neste contexto, o SFT serve como um componente integral da estrutura 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.
A 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 modelo de linguagem grande 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 está alinhado com estudos recentes que mostram que mesmo conjuntos de dados limitados, mas limpos, podem impulsionar resultados de alta qualidade.
No processo de SFT, o modelo de linguagem grande pré-treinado é exposto a um conjunto de dados rotulado, onde os algoritmos de aprendizado supervisionado entram em ação. 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 função de perda quantifica as discrepâncias entre as saídas previstas do modelo e as etiquetas de verdade real.
Essa otimização permite que o modelo 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 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 entã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 atua 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
- Visite o Site da Meta: Navegue até o site oficial do Llama 2 da Meta e clique em ‘Baixar o Modelo’
- Preencha os Detalhes: Leia e aceite os termos e condições para prosseguir.
- 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 do repositório Git.
- Execute download.sh: Clone o repositório Git e execute o script
download.sh. Esse 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
- Receba o E-mail de Aceitação: Após obter acesso da Meta, vá para a Hugging Face.
- Solicite Acesso: Escolha o modelo desejado e envie uma solicitação para conceder acesso.
- Confirmação: Espere um e-mail de ‘acesso concedido’ dentro de 1 a 2 dias.
- 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 Transformadores é 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 que você está na versão mais recente dos Transformadores 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:
Instalação do Pacote
<p>!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
Utilize 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)
for seq in sequences:
print(f"Resultado: {seq['generated_text']}")
UI da A16Z para o LLaMa 2
A Andreessen Horowitz (A16Z) lançou recentemente uma interface de chatbot de ponta baseada em Streamlit para o Llama 2. Hospedada no GitHub, essa UI preserva o histórico de conversa de sessão e também fornece a flexibilidade de selecionar entre vários pontos de extremidade da API do Llama 2 hospedados no Replicate. Esse design centrado no usuário visa simplificar as interações com o Llama 2, tornando-o uma ferramenta ideal tanto para desenvolvedores quanto para usuários finais. Para aqueles interessados em experimentar isso, um demonstrativo ao vivo está disponível em Llama2.ai.
Llama 2: O que o torna diferente dos modelos GPT e de seu antecessor Llama 1?
Variabilidade em Escala
Ao contrário de muitos modelos de linguagem que oferecem escalabilidade limitada, o Llama 2 oferece uma variedade de opções de modelos com parâmetros variados. O modelo escala de 7 bilhões a 70 bilhões de parâmetros, fornecendo assim uma gama de configurações para atender a necessidades computacionais diversas.
Comprimento de Contexto Aumentado
O modelo tem um comprimento de contexto aumentado de 4K tokens em comparação com o Llama 1. Isso permite que ele retenha mais informações, melhorando assim sua capacidade de entender e gerar conteúdo mais complexo e extenso.
Atenção de Consulta Agrupada (GQA)
A arquitetura utiliza o conceito de GQA, projetado para acelerar o processo de computação de atenção ao armazenar pares de tokens anteriores. Isso melhora efetivamente a escalabilidade de inferência do modelo, aumentando assim a acessibilidade.
Referências de Desempenho
O Llama 2 estabeleceu um novo padrão em métricas de desempenho. Ele não apenas supera seu antecessor, Llama 1, mas também oferece uma concorrência significativa a outros modelos, como Falcon e GPT-3.5.
O modelo Llama 2-Chat de maior porte, o 70B, também supera o ChatGPT em 36% das instâncias e iguala o desempenho em outros 31,5% dos casos. Fonte: Paper
Código Aberto: O Poder da Comunidade
A Meta e a Microsoft pretendem que o Llama 2 seja mais do que apenas um produto; elas o veem como uma ferramenta impulsionada pela comunidade. O Llama 2 é gratuito para acesso tanto para fins de pesquisa quanto para fins não comerciais. Elas visam democratizar as capacidades de IA, tornando-as acessíveis a startups, pesquisadores e empresas. Um paradigma de código aberto permite o “depuração de crowdsourcing” do modelo. Desenvolvedores e éticos de IA podem testar, identificar vulnerabilidades e oferecer soluções a um ritmo acelerado.
Embora os termos de licença para o LLaMa 2 sejam geralmente permissivos, exceções existem. Grandes empresas com mais de 700 milhões de usuários mensais, como o Google, exigem autorização explícita da Meta para sua utilização. Além disso, a licença proíbe o uso do LLaMa 2 para a melhoria de outros modelos de linguagem.
Desafios Atuais com o Llama 2
- Generalização de Dados: Tanto o Llama 2 quanto o GPT-4 às vezes falham em um desempenho uniformemente alto em tarefas divergentes. A qualidade e diversidade dos dados são tão cruciais quanto o volume nesses cenários.
- Transparência do Modelo: Dada as falhas anteriores com a IA produzindo saídas enganosas, explorar a lógica de tomada de decisão por trás desses modelos complexos é fundamental.
Código Llama – O Lançamento Mais Recente da Meta
A Meta anunciou recentemente o Code Llama, que é um modelo de linguagem grande especializado em programação com tamanhos de parâmetro variando de 7B a 34B. Semelhante ao ChatGPT Code Interpreter; o Code Llama pode simplificar os fluxos de trabalho de desenvolvedores e tornar a programação mais acessível. Ele acomoda várias linguagens de programação e vem em variações especializadas, como Code Llama–Python para tarefas específicas de Python. O modelo também oferece diferentes níveis de desempenho para atender a requisitos de latência diversificados. Licenciado abertamente, o Code Llama convida a entrada da comunidade para melhoria contínua.
https://about.fb.com/news/2023/08/code-llama-ai-for-coding/
Conclusão
Este artigo o guiou pela configuração de um modelo Llama 2 para geração de texto no Google Colab com suporte da Hugging Face. O desempenho do Llama 2 é impulsionado por uma série de técnicas avançadas, desde arquiteturas de transformadores auto-regressivos até Aprendizado por Reforço com Feedback Humano (RLHF). Com até 70 bilhões de parâmetros e recursos como Atenção Fantasma, este modelo supera os padrões atuais da indústria em certas áreas, e com sua natureza aberta, ele abre caminho para uma nova era na compreensão da linguagem natural e na inteligência artificial gerativa. com até 70 bilhões de parâmetros e recursos como Atenção Fantasma, este modelo supera os padrões atuais da indústria em certas áreas, e com sua natureza aberta, ele abre caminho para uma nova era na compreensão da linguagem natural e na inteligência artificial gerativa.

















