Inferência, sampling, modelos locais, custo
Na semana anterior você separou representação, consulta e geração. Agora escolherá uma forma de executar modelos sem confundir qualidade com tamanho, custo com preço de tabela ou velocidade com uma única duração. A pergunta prática é: qual configuração atende a uma tarefa com recursos e riscos aceitáveis?
Considere um assistente que resume documentos de atendimento. Ele pode usar um serviço remoto, um modelo com pesos disponíveis ou uma instalação local. A escolha exige comparar comportamento e operação. Um resumo rápido que remove uma condição importante é inadequado; um modelo local que excede a memória disponível também não atende ao projeto.
JavaScriptHugging FaceIA & MLAo terminar esta aula
- Configuração de geração muda variabilidade, não verdade.
- Abertura, localidade e licença são eixos distintos.
- Compare desempenho e custo por tarefa aceita.
Antes de continuar: Laboratório: Mapa de IA, LLMs, Transformer, tokens
Inferência e a escolha do próximo token
IA & MLInferência é executar um modelo com parâmetros já ajustados para produzir uma saída. Na geração, o sistema obtém valores associados a possíveis próximos tokens e aplica uma estratégia para selecionar um deles. Greedy decoding escolhe uma opção de maior probabilidade naquele passo. Sampling sorteia a partir de uma distribuição. As escolhas sucessivas alteram o contexto das próximas escolhas, portanto uma pequena diferença inicial pode produzir textos finais bastante diferentes. Isso explica por que repetir a mesma pergunta pode não devolver uma cópia literal.
Temperatura modifica a concentração da distribuição quando é suportada. Valores menores costumam concentrar a escolha; valores maiores podem ampliar variação. Top-p restringe candidatos usando massa acumulada de probabilidade, enquanto top-k limita a quantidade de candidatos considerados. Esses nomes não garantem suporte em todo endpoint ou modelo. A documentação do Transformers descreve mecanismos de geração, mas não autoriza copiar todos os seus parâmetros para uma API diferente. Para comparar modelos, registre configurações efetivamente aceitas, não um formulário universal fictício.
Variabilidade, criatividade e consistência
FundamentosUma temperatura baixa não transforma geração em uma função matematicamente reprodutível em qualquer serviço. Implementação, paralelismo e mudanças de modelo podem influenciar resultados. Também não corrige informação ausente: se o documento não informa o prazo de ativação, uma resposta uniforme ainda pode inventá-lo. Para resumo de políticas, a rubrica deve penalizar perda de exceções e inclusão de prazos inexistentes. Para brainstorming, diversidade pode ser útil, mas continua necessário filtrar ideias inviáveis. O parâmetro adequado depende do objetivo da tarefa.
Mude uma variável por experimento quando quiser atribuir uma diferença a ela. Compare três execuções de um mesmo caso antes de declarar que uma configuração é estável, e amplie a amostra conforme o risco da decisão. Três execuções são uma demonstração pequena, não evidência estatística universal. Preserve a entrada e a configuração. Se você muda instrução, modelo e limite de saída simultaneamente, observa uma mudança do sistema completo, mas não sabe qual componente causou o efeito. Essa distinção evita conclusões fortes a partir de exemplos escolhidos depois de ver os resultados.
Fechado, aberto e local são eixos diferentes
FundamentosUm serviço fechado pode expor uma API sem distribuir pesos. Um modelo com pesos disponíveis pode ser executado por diferentes provedores ou em hardware próprio. “Aberto” precisa de definição: disponibilidade dos pesos, código, dados de treinamento e permissões da licença são questões distintas. Local descreve o lugar de execução; não informa automaticamente licença, qualidade ou privacidade de toda a aplicação. Um aplicativo local ainda pode enviar telemetria, consultar serviços externos ou gravar dados em backups.
Ollama facilita servir modelos localmente por uma interface HTTP. Hugging Face oferece documentação, bibliotecas e repositórios de modelos; não é um único modelo com capacidades uniformes. Antes de baixar, leia o model card, a licença, requisitos de memória e limitações declaradas. Na comparação, registre o artefato exato e a configuração de execução. Uma máquina com pouca memória pode precisar de representação reduzida e gerar respostas com comportamento diferente do modelo remoto. A escolha entre local e remoto é um compromisso entre controle, manutenção, recursos, acesso e desempenho medido.
Quantização e multimodalidade
FundamentosQuantização representa pesos ou outras partes do processamento com menor precisão numérica. Reduzir bits pode reduzir memória, mas os efeitos sobre qualidade e velocidade dependem do método e do hardware. Uma GPU ou CPU pode ter caminhos eficientes para uma representação e não para outra. Não prometa que um modelo quantizado será sempre mais rápido ou preservará todas as respostas. Meça com a tarefa e o equipamento que serão usados, incluindo casos em que a distinção entre números próximos importa.
Multimodalidade permite entradas ou saídas além do texto conforme o modelo: imagens, áudio e outras modalidades precisam de contratos próprios. Uma imagem de uma tabela não equivale ao texto corretamente extraído dela. Resolução, orientação, detalhes pequenos e qualidade visual podem afetar interpretação. Para resumir uma política escaneada, valide a leitura de valores e exceções antes de avaliar a redação. Os limites de imagem e a contabilização de consumo são específicos do serviço. Não reutilize uma regra textual de tokens para estimar imagens sem documentação pertinente.
Latência, throughput e custo observável
FundamentosLatência é o tempo associado a uma requisição; pode ser dividido em espera, tempo até a primeira saída e conclusão. Throughput é a quantidade de trabalho processada por unidade de tempo. Um sistema pode responder rápido a uma pessoa e perder desempenho com muitas chamadas simultâneas. Meça uma carga representativa, incluindo tamanho de entradas e saídas. Em streaming, receber a primeira parte cedo melhora percepção, mas não significa que a resposta completa terminou ou que o custo diminuiu.
Custo por token depende de preços, modelo, tipo de token e regras do provedor. Registre preços com data e unidades em vez de gravar números permanentes no currículo. Para modelo local, energia, hardware e operação também existem, embora a chamada não gere uma cobrança remota. A comparação correta usa custo por tarefa aceita: uma opção barata que exige muitas correções pode sair mais cara no fluxo completo. Não esconda falhas para calcular custo médio. Separe estimativa, consumo reportado e despesas que não foram incluídas na conta.
Exemplo comentado e limites
FundamentosOs números do exemplo são fictícios e ensinam a preservar tentativas rejeitadas. O agrupamento mostra que uma resposta rápida pode falhar na rubrica. O modelo A possui uma aceitação em duas tentativas; B possui uma em uma tentativa. Esses tamanhos pequenos impedem declarar superioridade geral. O cálculo é descritivo do conjunto mostrado.
const execucoes = [
{modelo:"A",ms:1200,entrada:120,saida:40,aceita:true},
{modelo:"A",ms:1800,entrada:120,saida:45,aceita:false},
{modelo:"B",ms:2400,entrada:125,saida:32,aceita:true}
];
const porModelo = Object.groupBy(execucoes, x => x.modelo);
for (const [modelo, linhas] of Object.entries(porModelo)) {
console.log(modelo, {
tentativas:linhas.length,
aceitas:linhas.filter(x=>x.aceita).length,
duracaoMediaMs:linhas.reduce((s,x)=>s+x.ms,0)/linhas.length
});
}O campo entrada não é uma contagem calculada pelo programa. Em um experimento real, preencha-o com consumo reportado ou tokenização documentada. Também não há custo calculado porque faltam preços e categorias de cobrança. A ausência é deliberada: multiplicar um consumo inventado por um preço desatualizado produz um número preciso apenas na aparência.
Da distribuição à amostragem: uma conta completa
FundamentosConsidere logits [ln(6), ln(3), ln(1)]. São scores antes de normalizar, não probabilidades de uma afirmação ser verdadeira. Com temperatura T=1, softmax calcula exp(logit)/soma(exp(logits)), resultando em [0,6; 0,3; 0,1]. A soma é 1. A distribuição descreve a seleção do próximo token neste exemplo, não confiança factual na frase.
Top-k=2 conserva os dois tokens de maior probabilidade e renormaliza: [6/9; 3/9; 0], aproximadamente [0,667; 0,333; 0]. Top-p=0,7 conserva o menor prefixo ordenado cuja soma alcança 0,7: o primeiro token soma 0,6 e ainda não basta; os dois primeiros somam 0,9, portanto o conjunto coincide neste caso com top-k=2. A ordem de aplicação e detalhes de borda podem depender da implementação.
Com T=0,5, dividir os logits por T equivale a elevar [6;3;1] ao quadrado antes de normalizar: [36/46;9/46;1/46]. O maior valor sobe para aproximadamente 0,783. Agora top-p=0,7 já pode conservar só esse token. Temperatura e truncamento interagem; não espere que alterar os parâmetros produza efeitos independentes. T=0 exige tratamento especial no runtime e não deve ser colocado diretamente na divisão.
Tente antes de consultar a preparação: usando pesos [5;4;1], calcule top-k=2 e top-p=0,6 em T=1. Ambos precisam dos dois primeiros tokens e produzem [5/9;4/9;0]. Em T=0,5 a maior massa é 25/42, aproximadamente 0,595, ainda abaixo de 0,6: os dois primeiros continuam necessários. Esse contraexemplo mostra por que observar apenas a temperatura não permite prever a cardinalidade do conjunto.
Exercício aplicado
Um resumo omitiu a frase “ativação após confirmação manual”. Compare configurações e descreva que resultado pode ser atribuído à inferência e que resultado depende da avaliação.
- Execute o agregador sobre dados fictícios identificados como tais.
- Escreva uma rubrica que exija regra, exceção e ausência de fatos inventados.
- Colete entradas e saídas idênticas em três configurações documentadas.
- Separe latência total, tempo inicial quando disponível, consumo reportado e custo estimado com data.
Abrir resolução comentada
Primeiro classifique a omissão como falha de fidelidade ao documento. Depois compare a mesma entrada com configurações suportadas, preservando limite de saída suficiente para a condição. Se o documento já foi truncado antes da chamada, ajustar sampling não recupera o texto removido.
Uma escolha defensável explicita o requisito: resumos que preservem todas as condições de ativação. O relatório traz custo e duração das tentativas, proporção aceita na amostra e casos rejeitados. Se a execução local não couber no hardware, esse impedimento operacional também participa da decisão.
Uma entrega completa pode concluir que ainda não há amostra para escolher o vencedor. Essa conclusão é melhor que esconder falhas. A decisão seguinte pode ser ampliar casos longos, medir concorrência ou verificar licença do modelo local, dependendo da incerteza que impede a escolha.
A resolução agrega três configurações explicitamente fictícias, preserva uma entrada única e não remove rejeições. A rubrica verifica regra, exceção e ausência de promessa inventada. Tempo inicial e total ficam separados. Não há parâmetros de sampling não confirmados nem cálculo de custo sem preço e data. As medições de provedor são a etapa externa do estudante; o script testa as contas e o contrato de coleta, sem produzir um benchmark fictício apresentado como real.
import assert from "node:assert/strict";
const documento="Ativação após confirmação. Exceção: análise manual pode ser necessária.";
const rubrica={regra:"confirmação",excecao:"análise manual",proibido:"sempre imediato"};
function aceitar(texto){return texto.includes(rubrica.regra)&&texto.includes(rubrica.excecao)&&
!texto.includes(rubrica.proibido);}
const configuracoes=[{id:"A",artefato:"fixture-A",origem:"local-didática",parametros:{}},
{id:"B",artefato:"fixture-B",origem:"local-didática",parametros:{}},
{id:"C",artefato:"fixture-C",origem:"local-didática",parametros:{}}];
const execucoes=[
{config:"A",totalMs:1200,primeiroMs:400,entrada:120,saida:40,texto:documento},
{config:"A",totalMs:900,primeiroMs:200,entrada:120,saida:20,texto:"Ativação após confirmação"},
{config:"B",totalMs:1600,primeiroMs:300,entrada:125,saida:42,texto:documento},
{config:"C",totalMs:1100,primeiroMs:null,entrada:128,saida:25,texto:"Acesso sempre imediato"}
].map(e=>({...e,entradaEfetiva:documento,origem:"fixture, não medição de provedor",aceita:aceitar(e.texto)}));
const resumo=configuracoes.map(c=>{const linhas=execucoes.filter(e=>e.config===c.id);
return {config:c.id,tentativas:linhas.length,aceitas:linhas.filter(x=>x.aceita).length,
totalMedioMs:linhas.reduce((s,x)=>s+x.totalMs,0)/linhas.length,
primeiroToken:linhas.map(x=>x.primeiroMs),custoEstimado:null,
justificativaCusto:"preço, moeda e data reais não fornecidos"};});
assert.equal(configuracoes.length,3);assert.equal(execucoes.length,4);
assert.ok(execucoes.every(x=>x.entradaEfetiva===documento));
assert.equal(resumo[0].tentativas,2);assert.equal(resumo[0].aceitas,1);
assert.ok(execucoes.some(x=>!x.aceita));assert.ok(resumo.every(x=>x.custoEstimado===null));
console.log({status:"aprovado",rubrica,resumo,
politicaColeta:"registrar suporte a sampling e versão real antes de usar parâmetro",
limitacao:"nenhum modelo, preço ou tokenizador externo medido"});Como conferir seu resultado
- Falhas permanecem no conjunto.
- Sampling só usa parâmetros suportados.
- Preços e artefatos têm origem e data.
Aplique em um problema novo
Primeiro resolva sem consultar a resposta. Explique suas decisões e guarde a evidência. A conclusão de leitura é independente desta autoavaliação.
Confira seus pré-requisitos
- Somar probabilidades e calcular média.
- Distinguir licença e modo local/remoto.
Probabilidades 0,50;0,30;0,15;0,05: compare top-k=2 e top-p=0,90. Escolha modelo apenas por memória menor?
Conferir raciocínio e critérios de domínio
Top-k mantém dois; top-p mantém três, cuja massa soma 0,95.
Memória menor não prova qualidade/velocidade: medir tarefa e hardware.
Parâmetros suportados e licença dependem do modelo/endpoint.
Evidências para autoavaliação ou revisão por pares
- Cálculo: Top-k mantém dois; top-p mantém três, cuja massa soma 0,95.
- Critério de escolha: Memória menor não prova qualidade/velocidade: medir tarefa e hardware.
- Incerteza: Parâmetros suportados e licença dependem do modelo/endpoint.
Um erro frequente
Top-p corta 90% dos candidatos.
Top-p seleciona massa acumulada; top-k seleciona quantidade.
Teste sua compreensão
Responda com suas palavras antes de abrir o comentário. Saber explicar uma decisão é parte do domínio.
1. Temperatura baixa garante resposta verdadeira?
2. Pesos disponíveis significam uso sem restrições?
Não.
Licença e model card precisam ser conferidos; localidade e abertura são propriedades diferentes.
3. Primeiro token rápido equivale a resposta completa rápida?
Seu progresso fica salvo neste navegador. Concluir a leitura não substitui demonstrar o domínio nos exercícios.
Referências e aprofundamento
Documentação oficial e trabalhos originais. As referências registram o escopo e as limitações para você conferir o que sustentam.
- Generation
Hugging Face • consulta: 2026-10-06
Hugging FaceGenerationConfig, limites de geração, temperature, top_p, top_k e sampling.
Limites: Ramo main; top_k e temperature não são parâmetros universais das APIs e podem ser incompatíveis com certos modelos.
- Generation strategies
Hugging Face • consulta: 2026-10-06
Hugging FaceGreedy decoding, sampling e beam search; comportamento da geração.
Limites: Ramo main; exemplos e parâmetros dependem da versão do Transformers.
- Ollama API introduction
Ollama • consulta: 2026-10-06
APIsAPI local de execução de modelos e integração HTTP.
Limites: Modelo disponível localmente não implica licença permissiva; conferir model card, licença e recursos de hardware.
- Tokenization algorithms
Hugging Face • consulta: 2026-10-06
Hugging FaceTokenização, subwords e diferenças entre algoritmos de tokenização.
Limites: Ramo main; contagem e contexto máximo são específicos do tokenizer e do modelo.
- Images and vision
OpenAI • consulta: 2026-10-06
OpenAIEntradas multimodais de imagem, limites e custos associados.
Limites: Modalidades, limites e cobrança variam por modelo; não usar como suporte para quantização.
- Quantization overview
Hugging Face • consulta: 2026-10-06
Hugging FacePanorama de quantização e representação de pesos com menos bits.
Limites: Economia de memória não garante aumento de throughput nem preservação de qualidade; medir no hardware escolhido.
- Latency optimization
OpenAI • consulta: 2026-10-06
OpenAILatência, volume de tokens, paralelização e escolhas de arquitetura.
Limites: Recomendações do fornecedor; throughput e latência precisam de benchmark no caso real.
- API pricing
OpenAI • consulta: 2026-10-06
OpenAIAPIsEstrutura de cobrança por tokens, cache e serviços.
Limites: Preços variáveis; registrar data, modelo, moeda e tokens efetivamente medidos, sem fixar preço no currículo.