Explicando o funcionamento dos LLMs de uma forma simples!

Explanando os componentes principais dos LLMs generativos em uma estrutura acessível…

Alex Souza
blog do zouza
16 min readMar 15, 2024

--

Nos últimos anos, testemunhamos uma rápida evolução de modelos generativos, os LLMs (Large Language Models), culminando na criação de ferramentas sem precedentes como o ChatGPT, Gemini, Copilot, Claude...

A IA generativa tornou-se agora um tema popular entre pesquisadores e o público em geral. Hoje em dia, mais do que nunca, é importante que os pesquisadores e engenheiros (ou seja, aqueles que constroem a tecnologia) desenvolvam a capacidade de comunicar as nuances das suas criações, da sua arquitetura a outros (todos nós).

Dentro desta visão geral, aqui veremos um pequeno passo para resolver estas questões, propondo e delineando uma estrutura simples de três partes para compreender e explicar LLMs generativos.

Os componentes principais dos LLMs generativos

A qualidade dos LLMs melhoraram muito nos últimos anos…

O objetivo desta visão geral é simples. A qualidade dos modelos de linguagem generativa melhorou drasticamente no último ano (ver acima), e queremos compreender que mudanças e novas técnicas catalisaram este aumento na qualidade. Aqui, nos limitaremos a modelos de linguagem baseados em transformadores, embora o conceito de modelo de linguagem seja anterior à arquitetura do Transformer remontando a arquiteturas recorrentes baseadas em redes neurais (por exemplo, ULMFit) ou mesmo a modelos de linguagem n-gram

Uma visão mais alto nível

Para explicar os LLMs generativos de uma forma clara e simples, devemos primeiro identificar as ideias e tecnologias chave que lhes estão subjacentes. No caso desta visão geral, nos concentraremos nos três componentes a seguir:

  1. Arquitetura do transformer: a arquitetura de rede neural usada pelos LLMs.
  2. Pré-treinamento do modelo de linguagem: o processo de treinamento (inicial) usado por todos os LLMs.
  3. O processo de alinhamento: como ensinamos os LLMs a se comportarem de acordo com nossa preferência.

Juntas, essas ideias descrevem a tecnologia que alimenta LLMs generativos como o ChatGPT. Nesta seção, desenvolveremos uma compreensão prática dessas ideias-chave e como elas se combinam para criar um LLM poderoso. Vamos lá?

Arquitetura do Transformer

(de [5] “Attention is all you need.”)

Quase todos os modelos de linguagem modernos são baseados na arquitetura do Transformer (mostrada acima) [5] — uma arquitetura de rede neural profunda (Deep Learning) que foi originalmente proposta para resolver tarefas Seq2Seq (por exemplo, resumo ou tradução de linguagem).

O Transformer recebe uma sequência de texto como entrada e é treinado para realizar alguma tarefa generativa (por exemplo, sumarização) ou discriminativa (por exemplo, classificação). Agora, vamos ver uma visão geral da arquitetura do Transformer e como ela é aproveitada pelos LLMs para produzir sequências de texto coerentes e interessantes. Para uma explicação mais aprofundada da arquitetura do Transformer em geral, confira o link aqui .

Arquitetura codificador-decodificador (Encoder-decoder architecture)

O Transformer possui dois componentes principais: o codificador e o decodificador. O codificador analisa a sequência completa de texto fornecida como entrada e constrói uma representação desse texto. Então, o decodificador toma essa representação como entrada e a utiliza para produzir uma sequência de saída.

Por exemplo, se treinarmos um transformador para traduzir uma frase do inglês para o chinês, o modelo executará as seguintes etapas de processamento:

  • O codificador ingere a frase em inglês.
  • O codificador gera uma representação para a frase em inglês.
  • O decodificador ingere a representação da frase em inglês do codificador.
  • O decodificador gera a tradução chinesa.
Arquitetura do Transformer somente decodificador (Decoder-only)

Decoder-only architecture (Arquitetura somente Decodificador)

Embora o transformador originalmente proposto tenha um módulo codificador e um módulo decodificador, os LLMs generativos usam principalmente uma arquitetura de Transformes somente decodificador — veja acima. Esta arquitetura elimina o codificador da arquitetura do Transformer, restando apenas o decodificador. Dado que o papel do decodificador no transformador é gerar saída textual, podemos entender intuitivamente por que os LLMs generativos usam apenas o componente decodificador — todo o propósito desses modelos é gerar sequências de texto!

Construindo a entrada

Para entender melhor como funcionam os Transformers somente decodificadores (Decoder-only), vamos dar uma olhada mais profunda na entrada desse modelo e como ele é criado. LLMs generativos recebem uma sequência de texto como entrada. No entanto, não podemos simplesmente passar texto ou caracteres brutos para o Transformer. Primeiro, tokenizamos este texto, ou o dividimos em uma sequência de tokens (isto é, palavras ou subpalavras)… veja abaixo:

Processo de tokenização

Depois de tokenizar a sequência de entrada, convertemos cada token em uma representação vetorial exclusiva e associada, formando uma lista de vetores que correspondem a cada token; Veja abaixo. Esses vetores de token são listas de números que descrevem quantitativamente cada token. Depois de adicionar os embeddings posicionais (Positional embedding) — vão para o Decoders Blocksou vetores extras que capturam a posição de cada token dentro da sequência de entrada — a esses vetores de token, ficamos com a entrada final que é passada para o transformador somente decodificador!

Gerando embeddings de token

Os vetores de token são armazenados em uma camada de incorporação (embedding layer) — uma grande matriz, onde cada linha armazena o vetor de um único token — que faz parte da arquitetura do Transformer. A princípio, esses vetores de token são inicializados aleatoriamente, mas nós os aprendemos durante o processo de treinamento como qualquer outro parâmetro de rede neural!

Representação de autoatenção mascarada (Masked Self-Attention)

Processando a entrada

Agora que entendemos como a entrada do modelo é construída, o próximo passo é entender melhor como cada uma das camadas do modelo transforma essa entrada. Cada “bloco” do Transformer somente decodificador recebe uma lista de vetores de token como entrada e produz uma lista de vetores de token transformados (com o mesmo tamanho) como saída. Esta transformação é composta por duas operações:

  1. Autoatenção Mascarada (Masked Self-Attention): transforma cada vetor de token considerando tokens que o precedem na sequência; veja acima e aqui para mais detalhes.
  2. Transformação feed-forward : transforma cada vetor de token individualmente através de uma sequência de camadas lineares e não linearidades (ex., ReLU ) — Veja abaixo:
Aplicando uma transformação feed-forward a cada vetor de token

Juntas, a autoatenção mascarada (Masked Self-Attention)e as transformações feed-forward nos permitem criar uma representação rica de qualquer sequência textual. Cada um desses componentes desempenha um papel distinto e crucial:

  • O componente de atenção obtém informações úteis da sequência mais ampla (isto é, tokens que precedem o token atual).
  • O componente feedforward aprende um padrão ou transformação que é aplicado individualmente a cada vetor de token.

Ao empilhar vários blocos Transformes somente decodificadores (Decoder-only) uns sobre os outros, chegamos à arquitetura que é usada por (quase) todos os LLMs generativos!

Pré-treinamento de modelo de linguagem (Language model pretraining)

“A aprendizagem auto-supervisionada (Self-supervised) obtém sinais de supervisão dos próprios dados, muitas vezes aproveitando a estrutura subjacente dos dados. A técnica geral de aprendizagem auto-supervisionada é prever qualquer parte (ou propriedade) não observada ou oculta da entrada a partir de qualquer parte observada ou não oculta da entrada. — de [7]

Agora que entendemos o Transformer, vamos mergulhar na próxima ideia-chave subjacente aos LLMs generativos — pré-treinamento auto-supervisionado (self-supervised pretraining).

A aprendizagem auto-supervisionada refere-se à ideia de usar sinais que já estão presentes em dados brutos para treinar um modelo de aprendizado de máquina. No caso de modelos de linguagem generativos, o objetivo mais comumente usado para aprendizagem auto-supervisionada é a previsão do próximo token, também conhecido como objetivo de modelagem de linguagem padrão. Curiosamente, este objetivo — apesar de ser bastante simples de entender — é o núcleo de todos os modelos de linguagem generativa. Explicaremos agora esse objetivo, aprenderemos como funciona e compreenderemos por que é tão útil para LLMs generativos.

Pré-treinamento do modelo de linguagem com previsão do próximo token

Pré-treinamento LLM

Para pré-treinar um modelo de linguagem generativo, primeiro selecionamos um grande corpus de texto bruto (por exemplo, de livros, da web, de publicações científicas e muito mais) para usar como conjunto de dados. Começando com um modelo inicializado aleatoriamente, pré-treinamos o LLM executando iterativamente as seguintes etapas:

  1. Amostra de uma sequência de texto bruto do conjunto de dados.
  2. Passe esta sequência textual através do transformador somente decodificador (Decoder-only Transformer).
  3. Treine o modelo para prever com precisão o próximo token em cada posição da sequência.

Aqui, o objetivo de treinamento subjacente é auto-supervisionado, já que o rótulo que treinamos o modelo para prever — o próximo token na sequência — está sempre presente nos dados subjacentes. Como resultado, o modelo pode aprender com grandes quantidades de dados sem a necessidade de anotações humanas. Essa capacidade de aprender diretamente de um grande corpus textual por meio da previsão do próximo token permite que o modelo desenvolva uma compreensão impressionante da linguagem e da base de conhecimento. Para uma discussão mais aprofundada sobre o processo de pré-treinamento, confira o link aqui .

Gerando saída com um modelo de linguagem

Processo de inferência

LLMs generativos usam uma estratégia de previsão do próximo token para pré-treinamento e inferência! Para produzir uma sequência de saída, o modelo segue um processo auto regressivo (mostrado acima) composto pelas seguintes etapas:

  1. Tome uma sequência textual inicial (ou seja, um prompt) como entrada.
  2. Preveja o próximo token.
  3. Adicione este token à sequência de entrada.
  4. Repita as etapas 2–3 até que um token de termino/parada (ou seja, <EOS>) seja previsto.
Os melhores modelos básicos têm muitos parâmetros e são treinados com muitos dados (de [3, 9])

Chave para o sucesso

Um Transformer Somente Decodificador que foi pré-treinado (usando a previsão do próximo token) em um grande corpus textual é normalmente chamado de modelo base (ou pré-treinado). Exemplos notáveis ​​de tais modelos incluem GPT-3 [3], Chinchilla [9] e LLaMA-2 [10]. À medida que progredimos dos primeiros modelos básicos (por exemplo, GPT [1]) para os modelos que temos hoje, duas lições principais foram aprendidas.

  1. Modelos maiores são melhores: aumentar o tamanho (ou seja, o número de parâmetros treináveis, mais pesos para aprender durante o treinamento) do modelo subjacente produz um aumento suave no desempenho, o que levou à popularização dos LLMs .
  2. Mais dados: apesar de produzir um aumento suave no desempenho, aumentar o tamanho do modelo subjacente por si só não é o ideal. Devemos também aumentar o tamanho do conjunto de dados de pré-treinamento subjacente para obter os melhores resultados.

Simplificando, os melhores modelos básicos combinam grandes arquiteturas de modelos com grandes quantidades de dados de pré-treinamento de alta qualidade.

(de [8] “MPT-30B: Raising the Bar for Open-Source Foundation Models.”)

Custo computacional

Antes de prosseguirmos, devemos observar que o processo de pré-treinamento para LLMs generativos é incrivelmente caro — estamos treinando um modelo grande em um conjunto de dados massivo.

Os custos de pré-treinamento variam de centenas de milhares (veja acima) até milhões de dólares, se não mais. Apesar desse custo, o pré-treinamento é uma etapa extremamente importante — modelos como o ChatGPT não seriam possíveis sem a criação ou acesso a um modelo básico de alta qualidade. Para evitar o custo do pré-treinamento do modelo de linguagem, a maioria dos profissionais simplesmente baixa modelos básicos de código aberto que foram disponibilizados on-line por meio de plataformas como o HuggingFace.

O Processo de Alinhamento

“Tornar os modelos de linguagem maiores não os torna inerentemente melhores em seguir a intenção do usuário. Por exemplo, os LLMs podem gerar resultados falsos, tóxicos ou simplesmente inúteis para o usuário. Em outras palavras, esses modelos não estão alinhados com seus usuários.” — de [6]

Após o pré-treinamento, o LLM pode realizar com precisão a previsão do próximo token, mas sua saída é muitas vezes repetitiva e desinteressante. Para obter um exemplo disso, podemos olhar para o início desta visão geral! Vejamos, o GPT-2 (ou seja, um LLM pré-treinado) se esforça para produzir conteúdo útil e interessante. Com isto em mente, poderíamos perguntar: O que falta a estes modelos? Como passamos disso para o ChatGPT?

O processo de alinhamento para LLMs

O processo de alinhamento, que ensina um modelo de linguagem como gerar texto que se alinhe aos desejos de um usuário humano, é a resposta à pergunta acima. Por exemplo, podemos ensinar o modelo a:

  • Siga instruções detalhadas
  • Obedeça às restrições no prompt
  • Evite saídas prejudiciais
  • Evite alucinações (ou seja, gerar informações falsas)
  • Praticamente tudo que pudermos demonstrar ao LLM!

Os objetivos do processo de alinhamento são normalmente chamados de critérios de alinhamento, e nós (ou seja, os pesquisadores que treinam o modelo) devemos definir esses critérios no início do processo de alinhamento.

Por exemplo, dois dos critérios de alinhamento mais comumente usados ​​na pesquisa de IA (por exemplo, ver LLaMA-2 [10] e IA Constitucional [11]) são utilidade (helpfulness) e inocuidade (harmlessness). Para inserir cada um desses critérios de alinhamento no modelo, realizamos o ajuste fino (fine tuning) por meio do ajuste fino supervisionado (SFT — supervised fine tuning) e da aprendizagem por reforço a partir de feedback humano (RLHF — reinforcement learning from human feedback).

(de [10] “Llama 2: Open Foundation and Fine-Tuned Chat Models.”)

O SFT é simples de entender, pois se baseia no mesmo objetivo do pré-treinamento — a previsão do próximo token . No entanto, em vez de treinar o modelo em um monte de texto bruto baixado da web, usamos um conjunto de dados de treinamento mais específico. Ou seja, treinamos o modelo em dados focados em alinhamento ou demonstrações — escritas por humanos ou geradas sinteticamente por outro LLM — de pares de prompts e respostas que satisfazem o conjunto de critérios de alinhamento desejados — veja acima. Para uma discussão mais aprofundada sobre SFT, confira o link aqui .

Embora o SFT seja eficaz e amplamente utilizado, a curadoria manual de um conjunto de dados de respostas de modelos de alta qualidade pode ser difícil. O RLHF resolve esse problema ajustando diretamente um LLM com base no feedback humano — veja abaixo uma representação.

(de [12] “Learning to summarize with human feedback.” )

Este processo prossegue em duas fases. Durante a primeira fase, começamos com um conjunto de prompts e usamos o LLM — ou um grupo de vários LLMs — para gerar duas ou mais respostas para cada prompt. Em seguida, um grupo de humanos classifica as respostas a cada prompt com base nos critérios de alinhamento definidos, e usamos esses dados para treinar um modelo de recompensa que prevê com precisão uma pontuação de preferência humana dada uma solicitação e a resposta de um modelo como entrada.

Uma vez que o modelo de recompensa esteja disponível, usamos um algoritmo de aprendizagem por reforço (por exemplo, PPO) durante a segunda fase do RLHF para ajustar o LLM para maximizar as pontuações de preferência humana, conforme previsto pelo modelo de recompensa. Para uma discussão mais detalhada sobre RLHF, confira o link aqui .

Pipeline de ajuste fino

Embora SFT e RLHF sejam técnicas independentes, a maioria dos LLMs de última geração usam o processo de alinhamento em três etapas, incluindo SFT e RLHF. Esta abordagem, descrita abaixo, tornou-se um padrão na pesquisa LLM após a proposta do InstructGPT [6] — o antecessor do ChatGPT .

A técnica de alinhamento em três etapas (de [6])

Juntando tudo

Componentes principais de LLMs generativos (de [5, 6])

Levando em consideração que entendemos os conceitos que foram discutidos até aqui, agora teremos uma compreensão prática do ChatGPT. Em particular, os LLMs generativos modernos i) usam uma arquitetura Transformes, ii) são pré-treinados em um grande corpus de texto baixado da web e iii) são alinhados via SFT e RLHF — veja acima.

A progressão da pesquisa LLM

Para entender como esses três componentes de modelagem de linguagem influenciaram o desenvolvimento de LLMs e IA, podemos estudar a progressão de artigos proeminentes no domínio da modelagem de linguagem — veja abaixo. Antes do advento da arquitetura do transformer, os modelos de linguagem ainda existiam, mas eram baseados em arquiteturas mais simples (por exemplo, redes neurais recorrentes). Embora o transformer tenha sido originalmente proposto para resolver tarefas Seq2Seq, rapidamente vimos a variante somente decodificador da arquitetura do Transformer aplicada ao domínio de modelagem de linguagem com GPT e GPT-2 [1, 2].

Progressão da tecnologia e popularidade do modelo de linguagem

Esses primeiros modelos de linguagem baseados em transformer tiveram um bom desempenho, mas não vimos um desempenho verdadeiramente impressionante até que modelos de linguagem muito maiores (isto é, verdadeiros LLMs), como o GPT-3 [5], foram explorados. Descobriu-se que esses modelos têm capacidades impressionantes de aprendizado em poucas tentativas em uma variedade de tarefas à medida que aumentamos seu tamanho. No entanto, o tamanho do modelo por si só não é suficiente! Aprendemos com Chinchilla [9] que os melhores modelos básicos são criados combinando grandes modelos com grandes conjuntos de dados de pré-treinamento — tanto os parâmetros quanto a escala de dados são importantes .

LLMs pré-treinados podem resolver com precisão muitas tarefas, o que levou ao reconhecimento dentro da comunidade de IA. No entanto, estes modelos eram muitas vezes repetitivos ou desinteressantes, tinham dificuldade em seguir as instruções e geralmente careciam de utilidade. Para resolver este problema, o processo de alinhamento ajusta diretamente o LLM com base em um conjunto de critérios que descrevem o comportamento desejado do modelo.

Tal abordagem melhora drasticamente a qualidade do modelo subjacente, levando à criação de modelos poderosos como ChatGPT e a uma subsequente explosão de interesse em LLMs generativos — veja abaixo. Em outras palavras, o alinhamento é (sem dúvida) o principal avanço que tornou possíveis os poderosos LLMs que vemos hoje .

O alinhamento é a chave para treinar modelos de linguagem básicos poderosos

Qual é o próximo passo?

Neste ponto, entendemos tudo o que envolve a criação de um LLM como o ChatGPT. Tudo o que resta é aprender como aplicar tais modelos para resolver problemas práticos. Para resolver tarefas posteriores com um LLM, existem duas abordagens básicas que podemos adotar:

  1. Aprendizagem contextual : escreva um prompt para resolver a tarefa desejada.
  2. Ajuste fino (fine-tunning): realize treinamento adicional nos dados para a tarefa desejada.
Adaptando um LLM para resolver uma tarefa posterior (de [5, 6, 13])

Um outro ponto que destaco aqui, é o RAG, que dá uma contextualização melhor para sua necessidade… confira mais detalhes abaixo:

Principais conclusões

Dentro desta visão geral, passamos pelas principais tecnologias subjacentes aos LLMs generativos em uma estrutura de três partes que inclui i) a arquitetura do transformer, ii) pré-treinamento do modelo de linguagem e iii) o processo de alinhamento. Os pontos principais a serem lembrados em relação a cada um desses componentes são os seguintes:

  • LLMs generativos são baseados na arquitetura do Transformer somente decodificador.
  • Primeiro, pré-treinamos esses modelos em grandes quantidades de dados textuais usando o próximo objetivo de previsão de token.
  • Após o pré-treinamento, usamos SFT e RLHF (ou seja, a técnica de três etapas) para melhor alinhar esses modelos com os desejos dos usuários humanos.

Ao desenvolver uma compreensão profunda destes componentes e aprender como explicá-los a outros (em termos simples), podemos democratizar a compreensão desta importante tecnologia.

Hoje, os sistemas alimentados por IA estão impactando mais pessoas do que nunca. A IA não é mais apenas um tema de pesquisa, mas sim um tema de cultura popular. À medida que a IA continua a evoluir, é fundamental que construtores, engenheiros e pesquisadores (ou seja, pessoas como nós!) aprendam a comunicar eficazmente sobre a tecnologia, as suas armadilhas e o que está por vir.

Espero que tenha ficado mais claro como funciona uma LLM e deixem seus entendimentos e compreensão nos comentários para que possamos aprender e aprofundar mais no assunto.

Imagem gerada por ia…

Bibliografia

Este post foi baseado no post abaixo:

[1] Radford, Alec, et al. “Improving language understanding by generative pre-training.” (2018).

[2] Radford, Alec, et al. “Language Models are Unsupervised Multitask Learners.”

[3] Brown, Tom, et al. “Language models are few-shot learners.” Advances in neural information processing systems 33 (2020): 1877–1901.

[4] Howard, Jeremy, and Sebastian Ruder. “Universal language model fine-tuning for text classification.” arXiv preprint arXiv:1801.06146 (2018).

[5] Vaswani, Ashish, et al. “Attention is all you need.” Advances in neural information processing systems 30 (2017).

[6] Ouyang, Long, et al. “Training language models to follow instructions with human feedback.” Advances in Neural Information Processing Systems 35 (2022): 27730–27744.

[7] LeCun, Yann et al. “Self-supervised learning: The dark matter of intelligence”, https://ai.meta.com/blog/self-supervised-learning-the-dark-matter-of-intelligence/ (2021).

[8] “MPT-30B: Raising the Bar for Open-Source Foundation Models.” MosaicML, 22 June 2023, www.mosaicml.com/blog/mpt-30b.

[9] Hoffmann, Jordan, et al. “Training compute-optimal large language models.” arXiv preprint arXiv:2203.15556 (2022).

[10] Touvron, Hugo, et al. “Llama 2: Open Foundation and Fine-Tuned Chat Models.” arXiv preprint arXiv:2307.09288 (2023).

[11] Bai, Yuntao, et al. “Constitutional ai: Harmlessness from ai feedback.” arXiv preprint arXiv:2212.08073 (2022).

[12] Stiennon, Nisan, et al. “Learning to summarize with human feedback.” Advances in Neural Information Processing Systems 33 (2020): 3008–3021.

[13] Glaese, Amelia, et al. “Improving alignment of dialogue agents via targeted human judgements.” arXiv preprint arXiv:2209.14375 (2022).

Agradeço pela leitura e espero que tenha sido útil…

Obrigado! Mas, antes de você ir …

· 👏 Deixe suas palmas o story e me siga para mais assuntos

· 📰 Vejam mais conteúdos como este Blog do Souza

· 📰🚀 Diariamente dicas rápidas sobre dados 👉Alex Souza

· 💰 Venham conhecer a Comunidade de Análise de Dados

· 🔔 Sigam: Twitter (X) | LinkedIn | Instagram | Youtube | mais…

--

--