transformers_hf.ipynb
Notebook sobre modelos Transformer

Hugging Face · Transformers

Transformers con Hugging Face

Este notebook recorre los conceptos básicos de los modelos Transformer y muestra cómo usarlos con la librería transformers: desde un pipeline de una sola línea hasta cargar un tokenizer y un modelo a bajo nivel.

¿Qué es un Transformer?

Un Transformer es una arquitectura de red neuronal que procesa secuencias (texto, audio, imágenes en forma de parches) usando atención: cada elemento de la entrada puede "mirar" a todos los demás a la vez para decidir qué información es relevante.

Según cómo se combinan sus bloques, se suelen agrupar en tres familias: encoder (entiende el texto, p. ej. BERT), decoder (genera texto, p. ej. GPT-2) y encoder-decoder (transforma una secuencia en otra, p. ej. T5).

Instalación

En Colab, instala las librerías una sola vez por sesión.

!pip install -q transformers torch

Pipelines

pipeline es la forma más rápida de usar un modelo: descarga el modelo y su tokenizer por defecto, y los envuelve en una función lista para usar.

from transformers import pipeline

# Modelo por defecto para análisis de sentimiento
clasificador = pipeline("sentiment-analysis")
clasificador("I love learning about transformers")

Clasificación zero-shot

Con un modelo de natural language inference puedes clasificar texto en etiquetas que tú defines, sin entrenar nada adicional.

from transformers import pipeline

clasificador_zs = pipeline("zero-shot-classification", model="facebook/bart-large-mnli")

clasificador_zs(
    "El equipo ganó el campeonato anoche",
    candidate_labels=["deportes", "política", "tecnología"],
)

Generación de texto

Los modelos decoder predicen el siguiente token una y otra vez. Con set_seed los resultados son reproducibles.

from transformers import pipeline, set_seed

generador = pipeline("text-generation", model="gpt2")
set_seed(42)

generador("Hugging Face makes it easy to", max_new_tokens=25)

Tokenizers y modelos

Por debajo de cada pipeline hay dos piezas: un tokenizer que convierte texto en IDs numéricos, y el modelo que procesa esos IDs. Aquí las usamos directamente.

from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch

nombre = "distilbert-base-uncased-finetuned-sst-2-english"
tokenizer = AutoTokenizer.from_pretrained(nombre)
modelo = AutoModelForSequenceClassification.from_pretrained(nombre)

entradas = tokenizer("Transformers are amazing!", return_tensors="pt")
print(entradas["input_ids"])

with torch.no_grad():
    logits = modelo(**entradas).logits

print(modelo.config.id2label, torch.softmax(logits, dim=-1))

Explorar modelos

Filtra por arquitectura para ver algunos modelos populares del Hub de Hugging Face. Los nombres son identificadores del Hub; cada tarjeta enlaza a su página oficial.

Google110M params

bert-base-uncased

Encoder (comprensión)

  • Clasificación
  • NER
  • Preguntas y respuestas
Ver en Hugging Face ↗
Hugging Face66M params

distilbert-base-uncased-finetuned-sst-2-english

Encoder (comprensión)

  • Análisis de sentimiento
Ver en Hugging Face ↗

Siguientes pasos

  • Prueba otros pipelines: "summarization", "translation", "automatic-speech-recognition".
  • Revisa la documentación de transformers y el curso gratuito de Hugging Face.
  • Para entrenar o ajustar un modelo, usa la librería datasets y Trainer.

Volver al inicio del notebook.

Powered by NEXUS AI