Inteligência artificial

Como funciona um LLM como o ChatGPT? Explicado em 3D

Siga uma frase real através de um modelo de linguagem real: divisão em tokens, vetores, atenção, rede neuronal, 24 camadas e escolha da palavra seguinte. Cada quadrado colorido é um número realmente calculado pelo modelo.

494 M
parâmetros no modelo apresentado
24
camadas atravessadas por cada palavra
896
números para descrever um token
96,4 %
de certeza para « Nak(amoto) »
Visualização interativa

Uma frase atravessa o modelo

Escolha uma frase e avance capítulo a capítulo. Passe o cursor sobre um bloco para ler os seus valores; arraste para rodar, use a roda do rato ou o gesto de pinça para fazer zoom.

A carregar o modelo…

Frase:

Arraste para rodar · roda do rato ou pinça para fazer zoom · setas ← → do teclado para mudar de capítulo

O que é um LLM? Uma máquina de adivinhar a palavra seguinte

O ChatGPT, o Gemini, o Mistral e o Llama são LLM, Large Language Models (grandes modelos de linguagem). Por trás das suas respostas de várias páginas, o mecanismo é de uma simplicidade desconcertante: o modelo lê um texto e calcula, para cada palavra possível, a probabilidade de ela vir a seguir. Escolhe uma, acrescenta-a ao texto e recomeça. Tudo o resto, a gramática, os factos, o raciocínio, emerge desta única tarefa, repetida milhares de milhões de vezes durante o treino.

A visualização no topo desta página não mostra um esquema de princípio, mas sim um modelo real: o Qwen2.5-0.5B, um modelo aberto publicado pela Alibaba, com 494 milhões de parâmetros, a ler a frase « Le bitcoin a été créé par Satoshi » («O bitcoin foi criado por Satoshi»). Cada célula colorida do 3D é um valor efetivamente calculado pelo modelo: a verde, os números positivos; a laranja, os negativos; a ciano e violeta, os pesos aprendidos. Passe o rato por cima de um bloco para ler o valor exato.

Etapa 1: dividir a frase em tokens

Um modelo não lê letras nem palavras, mas sim tokens: pedaços de texto retirados de um dicionário fixo com cerca de 150 000 entradas. As palavras frequentes têm o seu próprio token; as palavras raras são divididas em pedaços. A nossa frase dá 7 tokens, entre os quais « ·bitcoin » e « ·Satoshi » (o ponto representa o espaço que precede a palavra). Já « Eiffel », pelo contrário, torna-se « ·E », « iff » e « el », e o modelo escreverá « Nakamoto » em duas vezes: « ·Nak » e depois « amoto ».

Cada token é substituído pelo seu número no dicionário: « ·bitcoin » é o token n.º 17 873. A partir daí, o modelo só manipula números.

Etapa 2: os embeddings, palavras transformadas em vetores

O número serve de endereço numa grande tabela de 151 936 linhas por 896 colunas, a tabela de embeddings. Cada token vai lá buscar a sua linha: uma lista de 896 números que resume o que o modelo aprendeu sobre ele. Tokens com significados próximos têm vetores próximos. Estes 136 milhões de números não foram escritos à mão: foram ajustados durante o treino, como todos os outros pesos.

h^{(0)}_i=E\big[\mathrm{id}_i\big]\in\mathbb{R}^{896},\qquad E\in\mathbb{R}^{151\,936\times 896}

A nossa frase torna-se assim um bloco de 7 linhas por 896 colunas. É este bloco que vai atravessar todo o modelo, sendo enriquecido em cada camada: chama-se fluxo residual e corresponde à coluna luminosa do 3D.

Etapa 3: a atenção, ou como as palavras olham umas para as outras

Para compreender « créé par Satoshi », cada token tem de poder ir buscar informação aos outros. É esse o papel da atenção, o mecanismo central do transformer, a arquitetura de praticamente todos os LLM desde 2017. Cada vetor é primeiro normalizado e depois multiplicado por três matrizes de pesos para produzir três novos vetores:

  • uma consulta (Q): o que o token procura;
  • uma chave (K): o que ele oferece aos outros;
  • um valor (V): a informação que transmitirá se for escolhido.

Cada token compara a sua consulta com as chaves de todos os tokens anteriores. Quanto maior for o produto, mais ele «olha» para esse token, e recupera uma mistura dos valores ponderada por essas pontuações. Nunca pode olhar para os tokens seguintes, o que dá às matrizes de atenção a sua forma triangular. A posição de cada palavra é injetada rodando os vetores segundo um ângulo que depende da sua ordem (a técnica RoPE).

\operatorname{Attention}(Q,K,V)=\operatorname{softmax}\!\Big(\frac{QK^{\top}}{\sqrt{64}}+M\Big)\,V,\qquad M_{ij}=\begin{cases}0&\text{se } j\le i\\-\infty&\text{se } j>i\end{cases}

O modelo faz este cálculo 14 vezes em paralelo, com 14 cabeças que aprendem, cada uma, a detetar algo diferente. No nosso exemplo, na 3.a camada, a cabeça n.º 1 dirige 87 % da atenção de « ·Satoshi » para « ·par ». Observa-se também um fenómeno bem conhecido dos investigadores: em média, 59 % da atenção do último token vai para o primeiro de todos, « Le », que serve de ponto de repouso quando não há nada de útil para ler.

Etapa 4: o MLP, a memória do modelo

Depois da atenção, cada token passa sozinho por uma rede MLP: o seu vetor de 896 números é projetado para 4 864 dimensões, filtrado por uma função de ativação (SwiGLU) e depois reduzido de novo a 896. Estas matrizes contêm cerca de dois terços dos parâmetros do modelo. Os trabalhos de interpretabilidade sugerem que é em grande parte aí que ficam armazenadas as associações aprendidas, como de « Satoshi » para « Nakamoto ».

\operatorname{MLP}(x)=\Big(\operatorname{SiLU}\big(xW_{\text{gate}}\big)\odot xW_{\text{up}}\Big)\,W_{\text{down}},\qquad\operatorname{SiLU}(u)=\frac{u}{1+e^{-u}}

O resultado da atenção, tal como o do MLP, nunca substitui o vetor: é-lhe somado. Cada camada escreve a sua contribuição no fluxo residual, que acumula a informação de baixo para cima.

Etapa 5: 24 camadas, e uma resposta que só chega no fim

A atenção seguida do MLP forma um bloco. O Qwen2.5-0.5B empilha 24 blocos de forma idêntica, cada um com os seus próprios pesos. Os modelos muito grandes empilham 80 ou mais, com vetores de mais de 8 000 números.

Algoritmo 1 · A passagem direta (forward pass) de um LLM

\begin{array}{rll} \textbf{Entrada:}&\text{uma frase } x&\\ 1:&\text{ids}\leftarrow\operatorname{tokenizar}(x)&\triangleright\ n\ \text{tokens}\\ 2:&h\leftarrow E[\text{ids}]&\triangleright\ n\times 896\\ 3:&\textbf{para }\ell=1\textbf{ até }24:&\\ 4:&\quad h\leftarrow h+\operatorname{Attn}_\ell\big(\operatorname{RMSNorm}(h)\big)&\triangleright\ \text{atenção}\\ 5:&\quad h\leftarrow h+\operatorname{MLP}_\ell\big(\operatorname{RMSNorm}(h)\big)&\triangleright\ \text{rede neuronal}\\ 6:&z\leftarrow\operatorname{RMSNorm}(h_n)\,E^{\top}&\triangleright\ 151\,936\ \text{pontuações}\\ 7:&p\leftarrow\operatorname{softmax}(z/T)&\triangleright\ \text{probabilidades}\\ \textbf{Saída:}&p&\triangleright\ p(\text{« Nak »})=96{,}4\,\% \end{array}

É possível espiar o modelo pelo caminho: à saída de cada camada, traduz-se o vetor do último token numa palavra, como se o modelo tivesse de responder de imediato. É a logit lens, apresentada à direita de cada camada no 3D. O resultado é impressionante: durante 22 camadas, as propostas não fazem qualquer sentido (fragmentos de código, caracteres chineses), e depois a resposta surge de repente. « ·Nak » só aparece na 24.a e última camada; para « La tour Eiffel se trouve à » («A Torre Eiffel fica em»), « ·Paris » aparece na 23.a.

Etapa 6: escolher a palavra seguinte, e a temperatura

O vetor final é comparado com cada uma das 151 936 linhas da tabela de embeddings, a mesma do início: uma por cada token do dicionário. Cada token obtém uma pontuação, que é transformada em probabilidade. Aqui, « ·Nak » ganha com 96,4 %, muito à frente de « ·nak » (0,43 %). Na frase sobre a Torre Eiffel, o modelo hesita mais: « ·Paris » com 34,4 %, à frente de « ·la » com 13,5 %.

p_v=\frac{e^{z_v/T}}{\displaystyle\sum_{u=1}^{151\,936}e^{z_u/T}}\qquad\text{(}T\text{: a temperatura)}

Um chatbot nem sempre fica com a primeira escolha: faz um sorteio de acordo com estas probabilidades. A temperatura regula esse acaso. Baixa, torna o modelo previsível e repetitivo; alta, achata as probabilidades e torna-o mais criativo, até à incoerência. O controlo deslizante do 3D recalcula as barras em tempo real.

Etapa 7: gerar, um token após o outro

O token escolhido é acrescentado à frase, e tudo recomeça: divisão em tokens, embeddings, 24 camadas, probabilidades. Depois de « ·Nak », o modelo tem 99,5 % de certeza de que se segue « amoto » e, depois, escreve « en 2008 ». Uma resposta do ChatGPT com 500 palavras corresponde a cerca de 700 passagens completas pelo modelo. Para não recalcular tudo de cada vez, as chaves e os valores já calculados são guardados em memória (a KV cache).

Algoritmo 2 · A geração, token após token

\begin{array}{rll} \textbf{Entrada:}&\text{um início de texto } x_1,\dots,x_t&\\ 1:&\textbf{repetir}&\\ 2:&\quad p\leftarrow\operatorname{LLM}(x_1,\dots,x_t)&\triangleright\ \text{algoritmo 1}\\ 3:&\quad x_{t+1}\sim p&\triangleright\ \text{amostragem, ou }\arg\max p\\ 4:&\quad t\leftarrow t+1&\\ 5:&\textbf{até }x_t=\langle\text{fim}\rangle\ \text{ou comprimento máximo}&\\ \textbf{Saída:}&x_1,\dots,x_t& \end{array}

E o treino?

Ninguém programou os 494 milhões de pesos. No início, são números aleatórios. Mostram-se ao modelo quantidades imensas de texto (até 18 biliões de tokens, no caso da família Qwen2.5), pede-se-lhe que adivinhe, em cada posição, o token seguinte, e corrige-se ligeiramente cada peso na direção que teria reduzido o erro. Repetida biliões de vezes, esta correção basta para fazer emergir a língua e boa parte do conhecimento. Um assistente como o ChatGPT acrescenta depois uma segunda fase de treino com conversas, para aprender a seguir instruções.

Porque é que a IA precisa de GPU

Cada token gerado exige cerca de duas operações por parâmetro: mil milhões de operações para o nosso pequeno modelo, 140 mil milhões para um modelo de 70 mil milhões de parâmetros. Sobretudo, todos os pesos têm de ser relidos da memória a cada token. É a largura de banda da memória, mais do que a capacidade de cálculo, que limita a velocidade de um LLM.

\text{operações por token}\approx 2N,\qquad t_{\text{token}}\gtrsim\frac{\text{tamanho dos pesos}}{\text{largura de banda}}=\frac{70\ \text{GB}}{4{,}8\ \text{TB/s}}\approx 15\ \text{ms}

É exatamente por isso que as GPU de IA integram memória HBM: a NVIDIA H200 oferece 141 GB a 4,8 TB/s, o que permite alojar um modelo de 70 mil milhões de parâmetros em FP8 numa única placa. O GPT-3 (175 mil milhões de parâmetros) ocupa 350 GB em BF16 e exige pelo menos três H200 só para os seus pesos. E é também por isso que um chip de mineração não consegue executar uma IA: um ASIC é concebido fisicamente para um único cálculo, ao passo que um LLM encadeia multiplicações de matrizes cujos pesos mudam em cada camada. Explicamo-lo em detalhe em ASIC ou GPU: qual a diferença?

Executar um modelo internamente, nos seus próprios servidores, mantém os dados dentro da empresa. Concebemos estas máquinas, da estação de trabalho ao servidor com 8 GPU: veja os nossos servidores GPU para IA e o nosso assistente de IA privado.

Os modelos por trás do ChatGPT são muito maiores e os seus detalhes não são públicos, mas pertencem à mesma família do modelo desta página, o transformer descodificador, descrita publicamente até ao GPT-3. Tem alguma pergunta sobre IA ou sobre o hardware que a faz funcionar? Ligue-nos para o +33 6 32 49 26 41.

Perguntas frequentes

LLM, tokens e GPU: as suas perguntas

O que é um LLM?

Um LLM (Large Language Model, grande modelo de linguagem) é uma rede neuronal treinada com enormes quantidades de texto para uma única tarefa: prever o token seguinte. O ChatGPT, o Gemini, o Mistral, o Llama ou o Qwen assentam em LLM. Responder, traduzir, resumir ou escrever código decorre desta previsão, repetida token a token.

O que é um token?

Um fragmento de texto: uma palavra comum, uma parte de uma palavra rara, um sinal de pontuação. O modelo só manipula estes fragmentos, cada um identificado por um número num dicionário com mais de 100 000 entradas. Em francês, conta-se frequentemente um pouco mais de um token por palavra, e é em tokens que se medem o comprimento dos textos que um modelo consegue ler e o preço dos serviços de IA.

Como é que o ChatGPT escolhe a palavra seguinte?

Em cada etapa, o modelo calcula uma probabilidade para cada um dos tokens do seu dicionário, com base em tudo o que vem antes. Escolhe um, segundo uma regra ajustada pela temperatura: baixa, escolhe quase sempre o mais provável; mais alta, permite-se escolhas menos esperadas. Depois recomeça com o texto acrescido de um token.

Um LLM compreende o que escreve?

Constrói, camada após camada, representações que captam a gramática, os factos e uma parte do raciocínio presentes nos seus dados de treino. Saber se isso merece a palavra « compreender » é discutível. Uma coisa é certa: calcula probabilidades, sem verificar os factos, e pode portanto afirmar com segurança algo falso (uma « alucinação »).

Porque são necessárias GPU para executar uma IA?

Porque todo o cálculo é feito de multiplicações de matrizes, que as GPU executam em paralelo em milhares de núcleos, e porque cada token obriga a reler todos os pesos do modelo: é preciso muita memória muito rápida. Um NVIDIA H200 oferece 141 GB a 4,8 TB/s, o suficiente para acomodar um modelo de 70 mil milhões de parâmetros em FP8.

É possível executar um LLM em casa ou na sua empresa?

Sim. Os pequenos modelos abertos, como o desta página, funcionam num computador comum. Os modelos de 30 a 70 mil milhões de parâmetros exigem uma ou várias placas GPU com muita memória. Concebemos e instalamos assistentes de IA privados e servidores de IA: os seus dados ficam consigo.

Que modelo é apresentado nesta página?

O Qwen2.5-0.5B, um modelo de 494 milhões de parâmetros publicado em acesso livre pela Alibaba. Os pesos do GPT e do ChatGPT não são públicos; por isso, escolhemos um modelo da mesma família (Transformer descodificador), suficientemente pequeno para que cada um dos seus cálculos possa ser mostrado. Todos os números apresentados são os deste modelo na frase escolhida.

Qual é a diferença entre o GPT e o ChatGPT?

GPT designa a família de modelos da OpenAI (Generative Pre-trained Transformer): LLM como o desta página, mas muito maiores. O ChatGPT é o assistente construído sobre eles, treinado adicionalmente para seguir instruções e dialogar. O núcleo do cálculo, a previsão do token seguinte, é o mesmo.

Executar a IA nas suas instalações?

Concebemos e instalamos servidores de IA privados, da estação de trabalho ao servidor de 8 GPU, para que os seus dados fiquem nas suas instalações.