Skip to content

Instantly share code, notes, and snippets.

@jesuino
Created March 19, 2025 16:17
Show Gist options
  • Save jesuino/ff690f059ebe6d6c237b111c8f508996 to your computer and use it in GitHub Desktop.
Save jesuino/ff690f059ebe6d6c237b111c8f508996 to your computer and use it in GitHub Desktop.
Sobre máscara de atencao

Eu: então além da matriz com os embeddings de um token eu ainda preciso passar essa máscara de entrada para uma LLM? isso é comum em todos os modelos de LLM?

deepseek: Sim, além da matriz de embeddings dos tokens, você geralmente precisa passar uma máscara de atenção (attention mask) para o modelo. Isso é comum na maioria dos modelos de LLM modernos, especialmente aqueles baseados em arquiteturas Transformer, como BERT, GPT, T5, entre outros.

Por que a máscara de atenção é necessária?

  1. Ignorar Tokens de Preenchimento:

    • A máscara de atenção informa ao modelo quais tokens são reais e quais são tokens de preenchimento (padding).
    • Isso é crucial porque os tokens de preenchimento não têm significado semântico e não devem influenciar o processamento do modelo.
  2. Eficiência Computacional:

    • Sem a máscara de atenção, o mecanismo de atenção do Transformer calcularia relações entre todos os tokens, incluindo os de preenchimento, o que seria um desperdício de recursos.
  3. Flexibilidade em Tarefas:

    • Em tarefas como tradução, sumarização ou classificação de texto, a máscara de atenção permite que o modelo se concentre apenas nas partes relevantes do texto.

Como funciona a máscara de atenção?

  • A máscara de atenção é uma matriz binária (ou tensor) com o mesmo formato que a matriz de embeddings.
  • Cada posição na máscara corresponde a um token na entrada:
    • 1 indica que o token é real e deve ser considerado.
    • 0 indica que o token é de preenchimento e deve ser ignorado.

Exemplo Prático

Suponha que você tenha o seguinte texto tokenizado:

Tokens: ["Eu", "amo", "aprender", "<pad>", "<pad>"]
IDs: [101, 102, 103, 0, 0]

A máscara de atenção correspondente seria:

Máscara: [1, 1, 1, 0, 0]

É comum em todos os modelos de LLM?

Sim, a maioria dos modelos de LLM modernos, especialmente os baseados em Transformers, requerem uma máscara de atenção. Isso inclui:

  • BERT: Usa máscaras de atenção para tarefas de classificação e compreensão de texto.
  • GPT: Embora o GPT seja autoregressivo e processe tokens sequencialmente, ele ainda pode usar máscaras de atenção para ignorar tokens de preenchimento em entradas de tamanho fixo.
  • T5, RoBERTa, XLNet, etc.: Todos usam máscaras de atenção para processar entradas de comprimento variável.

Bibliotecas como Hugging Face Transformers

Se você estiver usando uma biblioteca como Hugging Face Transformers, a máscara de atenção é gerada automaticamente quando você usa o tokenizer. Por exemplo:

from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
text = "Eu amo aprender"
inputs = tokenizer(text, padding=True, truncation=True, return_tensors="pt")

# inputs contém:
# - input_ids: os IDs dos tokens
# - attention_mask: a máscara de atenção

Nesse caso, inputs["attention_mask"] será a máscara de atenção que você precisa passar para o modelo junto com os embeddings.

Resumo

  • Sim, a máscara de atenção é necessária na maioria dos modelos de LLM modernos.
  • Ela é usada para ignorar tokens de preenchimento e garantir que o modelo processe apenas os tokens relevantes.
  • Bibliotecas como Hugging Face Transformers facilitam o uso da máscara de atenção, gerando-a automaticamente durante o tokenização.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment