Do texto ao token, do token ao vetor, do vetor à probabilidade do próximo token, e o caminho paralelo dos modelos de embedding. Arquitetura de referência: transformer decodificador com RMSNorm, RoPE, atenção com grupos de chaves e valores e FFN SwiGLU.
Notação.V tamanho do vocabulário, n tokens no contexto, d dimensão do modelo, L número de blocos, h e hkv cabeças de consulta e de chave e valor, dh=d/h, dff largura da FFN, N documentos no índice. FLOPs contam multiplicação e soma como 2.
1. Tokenização
No BPE, o treino do tokenizador funde repetidamente o par adjacente mais frequente até o vocabulário chegar a V:
(a,b)∗=arg(a,b)maxfreq(ab),V←V∪{ab}
Na inferência, texto↦(t1,…,tn) com ti∈{1,…,V}. Vocabulário maior encurta n e barateia a atenção, mas aumenta as tabelas V×d da entrada e da saída.
2. Tabela de embeddings
E∈RV×d,xi(0)=Eti,:=eti⊤E
São Vd parâmetros, lidos uma linha por token. Comprimir a tabela economiza memória, não tempo.
A propriedade que interessa: ⟨Rmq,Rm′k⟩=⟨q,Rm′−mk⟩. O produto depende só da distância. É a mesma operação que a rotação de relação do RotatE e a ligação de fasores em computação hiperdimensional.
O estado final é a soma das contribuições de todas as camadas, xi(L)=xi(0)+∑ℓ(ai(ℓ)+fi(ℓ)). É isso que permite ler camadas intermediárias e atalhos entre camadas.
9. Cabeça de saída
z=WUh∈RV,p(tn+1=v∣t1:n)=∑uezu/Tezv/T
Cada logit é um produto escalar zv=⟨wv,h⟩: escolher o token é uma busca de produto interno máximo sobre V linhas, com 2Vd FLOPs por token.
10. Decodificação
Guloso: tn+1=argmaxvzv. Amostragem: tn+1∼p(⋅∣t1:n), com top-p restrito ao menor conjunto cuja soma passa de p.
11. Perda e gradiente
L=−n1i∑logp(ti+1∣t1:i),∂z∂Li=p−eti+1
Treinar custa cerca de 6P FLOPs por token; inferir, cerca de 2P.
A varredura exata custa 2Nd FLOPs por consulta. Um grupo de centro μc e raio Rc pode ser descartado com certeza quando o limite fica abaixo da k-ésima melhor pontuação já vista.
Contagem total
P≈Vd+Vd+L(2d2+2dhkvdh+3ddff)
Com a configuração pública do Llama 3 8B (V=128.256, d=4.096, L=32, hkv=8, dh=128, dff=14.336): tabela de entrada 525 M (6,5%), atenção 1.342 M (16,7%), FFN 5.637 M (70,2%), cabeça de saída 525 M (6,5%), total cerca de 8.030 M. Os valores de configuração estão citados de memória; as parcelas são calculadas com a fórmula.