Duração estimada deste módulo: 1.5 - 2 horas
Objetivo: Capacitar o estudante a carregar independentemente qualquer modelo Transformer do Hugging Face, entender suas entradas e saídas e usá-lo para tarefas comuns como classificação, geração ou question answering — sem necessidade de fine-tuning.
Hugging Face não é apenas uma biblioteca. É um ecossistema completo para modelos de linguagem.
🔹 O que oferece:
transformers: a biblioteca principal para carregar, usar e treinar modelos.datasets: acesso a milhares de conjuntos de dados prontos para usar.tokenizers: ferramentas para converter texto em tokens (a entrada que os modelos entendem).evaluate: métricas padronizadas para avaliar modelos.🔹 Analogia útil:
Hugging Face é como a "App Store para modelos de IA".
Precisa de um modelo para resumir textos? Há dezenas.
Um para detectar emoções? Centenas.
Um em português? Também disponível.
Um pequeno o suficiente para rodar no seu laptop? Absolutamente!
É só buscar, instalar e usar.
Antes de começar, precisamos instalar as bibliotecas. Faremos isso em um ambiente limpo (recomendado: Google Colab ou um ambiente virtual local).
pip install torch transformers datasets
Nota:
torch(PyTorch) é o framework de deep learning que o Hugging Face usa por padrão. Você também pode usar TensorFlow, mas PyTorch é mais comum na comunidade.
Vamos começar com algo simples: um modelo que lê texto e diz se é positivo ou negativo.
Usaremos distilbert-base-uncased-finetuned-sst-2-english, um modelo pequeno, rápido e pré-treinado para essa tarefa.
from transformers import pipeline
# Criar um pipeline de classificação de texto
classifier = pipeline("sentiment-analysis")
# Testar com uma frase
result = classifier("I love this course! It's amazing and very clear.")
print(result)
# Saída: [{'label': 'POSITIVE', 'score': 0.9998}]
É isso! Em 3 linhas, você tem um modelo de IA funcionando.
🔹 O que o pipeline fez?
Hugging Face oferece pipelines para tarefas comuns:
"sentiment-analysis" → classificação de sentimento"text-generation" → geração de texto (GPT-2, etc.)"question-answering" → question answering (BERT, etc.)"translation" → tradução"summarization" → resumo"ner" → reconhecimento de entidades (pessoas, lugares, etc.)Exemplo: geração de texto com GPT-2
generator = pipeline("text-generation", model="gpt2")
text = "The future of artificial intelligence is"
result = generator(text, max_length=50, num_return_sequences=1)
print(result[0]['generated_text'])
Saída possível:
"The future of artificial intelligence is one of the most exciting areas of research today. It has the potential to revolutionize..."
Pipelines são mágicos... mas para entender realmente o que está acontecendo, precisamos ver o processo manual.
Vamos pegar o mesmo classificador, passo a passo.
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
# 1. Carregar tokenizer e modelo
model_name = "distilbert-base-uncased-finetuned-sst-2-english"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
# 2. Tokenizar o texto
text = "This movie is absolutely wonderful!"
inputs = tokenizer(text, return_tensors="pt") # "pt" = tensores PyTorch
print(inputs)
Saída:
{
'input_ids': tensor([[ 101, 2023, 3042, 2003, 2675, 12712, 1029, 102]]),
'attention_mask': tensor([[1, 1, 1, 1, 1, 1, 1, 1]])
}
🔹 Explicação:
input_ids: cada número é um token. 101 = [CLS], 102 = [SEP], o resto são palavras.attention_mask: indica quais tokens são reais (1) e quais são padding (0). Aqui, todos são reais.# 3. Passar entradas para o modelo
outputs = model(**inputs)
# 4. Obter logits (saídas não normalizadas)
logits = outputs.logits
print("Logits:", logits) # Ex: tensor([[-4.5, 3.2]])
# 5. Aplicar softmax para obter probabilidades
probabilities = torch.softmax(logits, dim=-1)
print("Probabilities:", probabilities) # Ex: tensor([[0.001, 0.999]])
# 6. Obter rótulo predito
predicted_class = torch.argmax(probabilities, dim=-1).item()
labels = ["NEGATIVE", "POSITIVE"]
print("Predicted label:", labels[predicted_class]) # → POSITIVE
🔹 Por que fazer manualmente? Para entender como funciona, depurar erros ou personalizar o processo (ex: mudar o limiar de decisão).
Nem todos os modelos servem para tudo. Aqui está um guia rápido:
| Tarefa | Tipo de modelo | Exemplos de modelos no Hugging Face |
|---|---|---|
| Classificação de texto | Encoder-only (BERT-style) | bert-base-uncased, distilbert-base-uncased, nlptown/bert-base-multilingual-uncased-sentiment |
| Geração de texto | Decoder-only (GPT-style) | gpt2, facebook/opt-350m, mistralai/Mistral-7B-v0.1 (requer mais RAM) |
| Question Answering (extrativo) | Encoder-only | bert-large-uncased-whole-word-masking-finetuned-squad, deepset/roberta-base-squad2 |
| Tradução / Resumo | Encoder-Decoder | t5-small, facebook/bart-large-cnn, Helsinki-NLP/opus-mt-en-es |
| Reconhecimento de Entidades (NER) | Encoder-only | dslim/bert-base-NER, Jean-Baptiste/roberta-large-ner-english |
🔍 Dica: No Hugging Face Model Hub, você pode filtrar por:
- Tarefa
- Idioma
- Tamanho do modelo
- Licença
- Framework (PyTorch, TensorFlow)
Sim, há muitos modelos em português!
Exemplo: classificação de sentimento em tweets em português.
classifier_pt = pipeline(
"sentiment-analysis",
model="nlptown/bert-base-multilingual-uncased-sentiment"
)
result = classifier_pt("Este curso é incrível, recomendo muito!")
print(result)
# Saída: [{'label': '5 stars', 'score': 0.8742}]
Outro modelo mais específico: punctat/saiber-bertimbau-sentiment-analysis (para português brasileiro).
Solução: Use um modelo menor (
distilbertem vez debert-large) ou execute na CPU (mais lento, mas funciona).
model = AutoModelForSequenceClassification.from_pretrained(model_name).to("cpu")
Solução: Trunque o texto.
inputs = tokenizer(text, return_tensors="pt", truncation=True, max_length=512)
Solução: Verifique o nome exato no Model Hub. Use autocompletar no site.
Escolha uma tarefa que te interesse (ex: resumir notícias, detectar spam, traduzir frases).
Vá ao Hugging Face Model Hub e encontre 2-3 modelos candidatos.
Compare suas métricas, tamanho, idioma e licença.
Qual escolheria? Por quê?
Texto → Tokenizer → input_ids + attention_mask → Modelo → logits → softmax → rótulo + probabilidade
↑ ↑ ↑ ↑
Converte Indica tokens Rede neural Converte para
em números reais vs padding pré-treinada probabilidade
Hugging Face removeu a barreira de entrada para usar modelos Transformer.
Você não precisa mais de semanas de configuração, GPUs caras ou conhecimento profundo de deep learning para começar.
Com algumas linhas de código, você pode ter um modelo de IA gerando texto, classificando emoções ou respondendo perguntas.Mas... isso é apenas o começo! No próximo módulo, aplicaremos tudo aprendido em um projeto guiado: construiremos um sistema de question answering que responde consultas sobre um dado texto — usando um modelo pré-treinado, sem fine-tuning.