- Um guia abrangente sobre os métodos de sampling em grandes modelos de linguagem (LLMs), explicado de forma que até iniciantes consigam entender
- Explica em detalhe o que são tokens, por que são usados no lugar de palavras e como o modelo gera texto
- Sampling é o processo de controlar a diversidade e a naturalidade da saída, e o texto apresenta diversos algoritmos de sampling como Temperature, Top-K, Top-P e DRY
- Cada técnica de sampling é explicada com descrição conceitual e também com os princípios matemáticos e algorítmicos de funcionamento, comparando efeitos como prevenção de repetição, aumento de criatividade e ajuste de consistência
- O material também organiza a ordem de combinação entre samplers, interações e casos de conflito, sendo muito útil para desenvolvedores que querem controlar com precisão a qualidade da geração
Intro Knowledge
Short Glossary
- Logits são valores não normalizados que representam a pontuação de cada token
- Softmax é a função que converte logits em uma distribuição de probabilidade normalizada
- Entropy representa a incerteza da previsão; quanto maior, maior a incerteza sobre o próximo token
- Perplexity é uma métrica em que valores mais baixos indicam maior confiança do modelo
- n-gram é uma sequência contínua de n tokens
- Context window é o número máximo de tokens que o modelo consegue processar de uma vez
Why tokens?
Why not letters?
- A tokenização por letras torna a sequência longa demais, causando aumento do custo computacional e dificuldade de conectar informações
Why not whole words?
- A abordagem baseada em palavras tem problemas como explosão do tamanho do vocabulário e dificuldade para representar neologismos ou palavras raras
- A abordagem baseada em sub-word permite dividir prefixos, radicais e sufixos, sendo eficaz para compreender morfologia e para transferência de aprendizado multilíngue
How are the sub-words chosen?
- O vocabulário é construído encontrando as subpalavras (sub-words) mais frequentes por meio de amostras representativas dos dados de treino
How does the model generate text?
- Durante o treinamento, o modelo aprende a distribuição de probabilidade do próximo token a partir de grandes volumes de texto
- Na inferência, ele calcula a probabilidade de todos os tokens possíveis e seleciona o próximo token de acordo com a técnica de sampling
From Tokens to Text
- Etapa de previsão: cálculo da distribuição de probabilidade para todos os tokens candidatos
- Etapa de seleção: escolha do token conforme uma estratégia específica de sampling
- Como simplesmente escolher o token de maior probabilidade tende a gerar textos monótonos ou repetitivos, as técnicas de sampling são importantes
Sampling
Temperature
- Valores baixos produzem resultados mais conservadores e repetitivos, enquanto valores altos incentivam resultados criativos, mas aumentam a possibilidade de erros
- Divide os logits pelo valor de temperatura para ajustar a nitidez (concentração) da distribuição de probabilidade
Presence Penalty
- Reduz a chance de reaparecimento de um token que já apareceu ao menos uma vez
- Considera apenas se ele já foi usado ou não, sem levar em conta quantas vezes apareceu
Frequency Penalty
- Aplica penalização proporcional ao número de ocorrências
- Quanto mais frequente uma palavra, maior a penalização, o que ajuda a aumentar a diversidade
Repetition Penalty
- Aplica penalidade assimétrica a logits positivos e negativos para tokens já usados
- É eficaz para evitar loops de repetição, mas pode prejudicar a consistência do contexto
DRY (Don't Repeat Yourself)
- Detecta a repetição de padrões de n-gram e penaliza a probabilidade dos tokens que levariam à repetição
- Quanto mais longa e mais recente a repetição da frase, mais forte é a supressão
- É excelente para reduzir repetições mantendo a naturalidade em textos criativos
Top-K
- Mantém apenas os K candidatos mais prováveis e descarta os demais tokens
- Remove amostras extremas enquanto preserva certo nível de aleatoriedade
Top-P (Nucleus Sampling)
- Mantém apenas os tokens até que a probabilidade acumulada atinja P, descartando o restante
- É adaptativo porque o tamanho do conjunto de candidatos muda conforme a confiança do modelo
Min-P
- Mantém apenas os tokens que tenham pelo menos uma proporção mínima em relação ao token de maior probabilidade
- A filtragem se ajusta dinamicamente de acordo com a confiança do modelo
Top-A
- Filtra candidatos usando um limiar proporcional ao quadrado da probabilidade do token mais provável
- Quanto maior a confiança, mais rigorosa é a filtragem aplicada
XTC
- Com certa probabilidade, remove intencionalmente os candidatos mais prováveis para induzir escolhas menos óbvias
- É uma técnica voltada a respostas atípicas ou criativas
Top-N-Sigma
- Seleciona tokens válidos com base no desvio padrão da distribuição de probabilidade
- A filtragem baseada em características estatísticas responde com flexibilidade a diferentes situações
Tail-Free Sampling (TFS)
- Usa a segunda variação (curvatura) do gradiente de probabilidade para distinguir candidatos relevantes dos de cauda longa
- É uma forma de filtrar encontrando um ponto de corte natural
Eta Cutoff
- Ajusta dinamicamente o critério de filtragem de acordo com a entropia (incerteza) da distribuição
- Quanto maior a confiança, mais tokens são removidos; quanto menor a confiança, mais flexível ele é
Epsilon Cutoff
- Remove tokens de baixa probabilidade usando um limiar de probabilidade fixo
- É simples e previsível, além de útil para eliminar caudas longas desnecessárias
Locally Typical Sampling
- Prefere tokens cujo surprisal esperado (diferença em relação ao valor previsto) esteja próximo da média
- Em vez de escolher o token mais provável ou o mais estranho, induz uma escolha "típica"
1 comentários
Comentários no Hacker News
Não menciona que o sampler não consegue acessar o estado interno do modelo
Escrevi um guia de sampling para Ollama/llama.cpp
Quando se tenta fazer um LLM gerar uma "ideia", a seleção do vetor de logits acaba quebrando a ideia original
Tudo é explicado de forma simples, o que abre espaço para tentar coisas novas
Será que um modelo LLM poderia fazer tokenização implicitamente?
Relacionado a isso, nosso artigo sobre min_p ficou em 18º lugar entre 12.000 submissões no ICLR
Fico me perguntando se o sampling realmente resolve as limitações do modelo ou se apenas encobre um problema mais profundo
"Sampling" cobre muito mais coisas do que eu imaginava
Documento muito útil, com explicações claras e cobrindo bastante coisa
Eu não tinha percebido que tanta manipulação acontece depois da escolha inicial da temperatura do softmax