English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

visitante
1 / ?

Um Embedding É uma Consulta, Não uma Função

Uma Primeira Camada Após um Tokenizer

Um tokenizer fornece ao modelo IDs inteiros: [256, 1842, 7301, ...]. A primeira coisa que um transformer faz é converter cada ID em um vetor de floats de d_model. Esse vetor vive em um espaço de d_model dimensões (768 dimensões para ANDREA-120M).


Uma camada de embedding é uma tabela de consulta, não uma função. Imagine uma matriz gigante:


shape: (V, d_model)
linha 0:    [e_0_0, e_0_1, ..., e_0_767]
linha 1:    [e_1_0, e_1_1, ..., e_1_767]
...
linha 8448: [e_8448_0, e_8448_1, ..., e_8448_767]

O ID do token i seleciona a linha i. Acesso direto ao array. Sem aritmética, sem ativação. Apenas um índice.


Fluxo de embedding de token e posição


Floats Treináveis

Cada entrada nessa tabela começa como um float aleatório pequeno (geralmente extraído de uma distribuição normal escalada por 1/sqrt(d_model)). A retropropagação atualiza cada linha sempre que seu ID de token aparece em um lote. Após o treinamento, tokens semelhantes (cat, dog, pet) acabam com vetores semelhantes; tokens não relacionados (cat, Tuesday, xylophone) ficam distantes no espaço vetorial.


ANDREA-120M Custo de Embedding de Tokens
[BLOCK_TYPE SECTION/STEP]

[BLOCK_TYPE SECTION/STEP]

| Quantidade | Valor | [BLOCK_TYPE SECTION/STEP]

|------------|-----------| [BLOCK_TYPE SECTION/STEP]

| V | 8.449 | [BLOCK_TYPE SECTION/STEP]

| d_model | 768 | [BLOCK_TYPE SECTION/STEP]

| Parâmetros | 6.488.832 | [BLOCK_TYPE SECTION/STEP]


Aproximadamente 6,5M parâmetros residem apenas em uma tabela de embeddings de tokens, cerca de 5,4% do total de ANDREA-120M. Cada posição do vocabulário recebe esses 768 floats.

Dimensionamento de Tabelas de Embeddings

Calcule a contagem de parâmetros de embeddings de tokens para duas variantes futuras. (a) ANDREA-480M: V = 16.641 (um tokenizador de 16.384 segmentos mais 256 bytes mais 1 BOS), d_model = 1536. (b) ANDREA-12M: V = 4.353, d_model = 384. Mostre a aritmética V × d_model para cada uma.

Produtos Internos Medem Similaridade

Vetores como Setas

Um vetor de 768 dimensões vive em um espaço que humanos não conseguem visualizar, mas a mesma álgebra funciona em qualquer dimensão. Duas operações-chave importam para transformers:


Magnitude (comprimento de uma seta):


||v|| = sqrt(v_0² + v_1² + ... + v_767²)

Produto escalar (alinhamento entre duas setas):


u · v = u_0 × v_0 + u_1 × v_1 + ... + u_767 × v_767

O que um Produto Escalar Revela

Dois fatos que valem em qualquer dimensão:


- u · v = ||u|| × ||v|| × cos(theta), onde theta é o ângulo entre eles.

- Vetores que apontam na mesma direção produzem produtos escalares grandes e positivos.

- Vetores que apontam em direções opostas produzem produtos escalares grandes e negativos.

- Vetores em ângulo reto produzem um produto escalar igual a zero.


Produto escalar = similaridade não normalizada. Duas embeddings treinadas de tokens para cat e dog acabam com um produto escalar alto porque a retropropagação as aproximou (ambas preveem contextos relacionados a animais de estimação). cat e Tuesday acabam quase ortogonais porque preveem contextos diferentes.


Por que um Transformer se Importa

A Atividade 5 (grow_a_language_model_attention) constrói atenção a partir de produtos escalares: um vetor de consulta (query) multiplicado escalarmente por vetores-chave (key) gera pontuações que indicam quais tokens anteriores são relevantes para prever o próximo. Embeddings e produtos escalares juntos carregam toda interação dentro de um transformer.

Prever Similaridade

Após o treinamento, o embedding de ANDREA-120M para `believ` (linha de token 4287, hipotético) termina aproximadamente alinhado com `know`, `understand`, `learn`. Sem calcular valores exatos, preveja uma ordem do maior produto escalar para o menor: `believ · know`, `believ · stone`, `believ · understand`. Justifique sua ordenação em uma frase por par.

ANDREA Usa Embeddings de Posição Aprendidos

Um Problema

Um embedding de token informa ao modelo qual palavra está naquela posição. Ele não informa ao modelo onde essa palavra se encontra. Sem informação de posição, um transformer trata the cat sat on a mat e mat a on sat cat the de forma idêntica: um mesmo conjunto de tokens, sem sinal de ordem.


Existem três soluções na literatura de transformers:


Senoide (Vaswani 2017). Uma fórmula matemática fixa baseada em senos e cossenos. A posição 0 recebe um vetor específico de 768 dimensões; a posição 1 recebe outro; nunca é treinada, nunca é atualizada. Generaliza para qualquer posição por meio da fórmula.


RoPE (Rotary Position Embedding). Rotaciona os vetores de query e key com base na posição. Usado por LLaMA, Qwen. Sem parâmetros adicionais; a rotação é integrada à atenção.


Aprendida. Uma tabela de embeddings separada com formato (T, d_model), onde T é o comprimento do contexto. Cada linha é treinada via retropropagação, assim como os embeddings de tokens.


Escolha da ANDREA: Aprendida

ANDREA herda a abordagem de posições aprendidas do microGPT, que herdou do nanoGPT, que herdou do GPT-2. Um raciocínio:


- Simplicidade. Nenhuma matemática especial na atenção. Uma tabela de posições parece uma tabela de tokens.

- Compatibilidade com CUDA personalizado. O motor microgpt_cuda.cu do ANDREA trata duas buscas de embeddings de forma idêntica; nenhum kernel de sin/cos é necessário.

- Suficiente para contexto fixo. O ANDREA limita T a 1024. Uma tabela aprendida funciona bem para sequências de comprimento fixo.


Custo de Embedding de Posição do ANDREA-120M


QuantidadeValor
T (contexto)1.024
d_model768
Parâmetros786.432

0,79M parâmetros para posição. Combinados com embeddings de token: 6,49M + 0,79M = 7,27M parâmetros de embedding no total para ANDREA-120M.


Como Eles se Combinam

Em cada posição t de uma sequência de entrada:


x_t = token_embedding[token_id_t] + position_embedding[t]

Dois vetores de 768 dimensões, somados elemento a elemento. O resultado, x_t, flui para o primeiro bloco transformer. O modelo nunca os separa novamente; ele aprende a usar o sinal combinado.

Aprendidos Versus Senoidais

Compare duas estratégias de embedding de posição para um modelo ANDREA hipotético. Estratégia A: aprendida, T = 1024. Estratégia B: senoidal, T arbitrário (funciona para qualquer comprimento de sequência). Nomeie uma vantagem de cada uma. Em seguida, indique qual ANDREA escolhe e uma razão de uma perspectiva CUDA / engenharia.

Onde os Parâmetros dos Embeddings Vivem

Uma Camada de Embedding Completa ANDREA-120M


ComponenteFormaParâmetros
Tabela de embeddings de token8.449 × 7686.488.832
Tabela de embeddings de posição1.024 × 768786.432
Total7.275.264

Aproximadamente 7,3 milhões de parâmetros. O total de parâmetros do ANDREA-120M é de ~120M. Apenas a camada de embeddings representa 6%. Os 94% restantes estão nos blocos transformer (atenção + MLP, abordados nas atividades 5-7).


Embeddings Desvinculados vs Vinculados

Muitos designs de transformers (incluindo o GPT-2) vinculam um embedding de token a uma projeção final de saída: a mesma matriz V × d_model é usada na entrada e na saída (logits sobre o vocabulário). Vincular economiza parâmetros V × d_model e frequentemente melhora a qualidade.


ANDREA usa embeddings não vinculados: o embedding de entrada e a projeção de saída são treinados como matrizes separadas. A Atividade 7 (grow_a_language_model_transformer_block) cobre uma camada final.


Uma Passagem Direta Até Agora

Entrada: IDs de tokens [256, 1842, 7301, ...] (1024 deles). Cada ID busca um vetor de 768. Cada posição busca um vetor de 768. Soma elemento a elemento. Resultado: uma matriz (1024, 768) x de vetores token+posição. x flui para o bloco transformer 1.


A Atividade 5 (grow_a_language_model_attention) cobre o que o bloco 1 faz: atenção por produto escalar escalonado com máscara causal e softmax.

Prever a Estrutura dos Embeddings

Reflita: ANDREA-120M possui 8449 embeddings de token e 1024 embeddings de posição, compartilhando o mesmo espaço de 768 dimensões. Após o treinamento, o que você esperaria: (a) uma matriz de embeddings de token (padrões de cluster?), ou (b) uma matriz de embeddings de posição (gradiente suave?). Escolha uma e preveja em uma ou duas frases. Não existe resposta errada; o raciocínio é o que importa.