Saltar al contenido

← AI con la librería de Transformers

Ecosistema de Hugging Face

Preview gratis Sección 1 · Introducción a Transformers

El ecosistema de Hugging Face

Cuando empiezas a trabajar con modelos de lenguaje en Python, el primer obstáculo no es el modelo: es el peso de la infraestructura alrededor. Hay que cargar pesos preentrenados, encontrar el tokenizador correcto y conocer qué arquitectura espera cada entrada. Hugging Face resuelve ese problema con un ecosistema integrado: un repositorio central de modelos y datos, más un conjunto de librerías que comparten una interfaz común. Entender cómo encajan sus piezas elimina la mayor parte del código repetitivo antes de escribir tu primera inferencia.

El Hub: el repositorio central

El Hugging Face Hub es la plataforma de referencia para machine learning abierto. Aloja más de dos millones de modelos, más de un millón de datasets y más de un millón de aplicaciones de demostración. Se organiza en tres tipos de recurso:

  • Models: checkpoints preentrenados que la comunidad publica para almacenar, descubrir y compartir. Se descargan con la librería huggingface_hub o directamente con transformers.
  • Datasets: colección de conjuntos de datos que abarca muchos dominios y tareas, lista para cargar y procesar.
  • Spaces: aplicaciones de demostración alojadas en el Hub para mostrar un modelo en funcionamiento.

Cada modelo trae una model card: un documento que describe para qué sirve, cómo se entrenó, sus limitaciones y, de forma central, su licencia. Revisar la licencia antes de usar un modelo en producción no es opcional: algunas permiten uso comercial libre y otras lo restringen.

Las librerías hermanas

La librería transformers es el núcleo: provee las arquitecturas de modelos y la API de inferencia. A su alrededor hay librerías especializadas que comparten convenciones:

  • tokenizers: tokenizadores rápidos, optimizados para investigación y producción, implementados en Rust.
  • datasets: carga y procesamiento eficiente de grandes conjuntos de datos.
  • accelerate: ejecuta entrenamiento distribuido en distintas configuraciones de hardware sin reescribir el bucle de entrenamiento.

La función pipeline(): la puerta de entrada

La función pipeline() es la API de inferencia más simple. Recibe un identificador de tarea y, opcionalmente, un modelo; internamente se encarga del preprocesamiento, la inferencia y el posprocesamiento. Con dos líneas obtienes un resultado utilizable:

from transformers import pipeline

# Carga modelo y tokenizador por defecto para la tarea
clasificador = pipeline("sentiment-analysis")

resultado = clasificador("La instalacion fue rapida y sin errores.")
print(resultado)
# [{'label': 'POSITIVE', 'score': 0.9998}]

# Acepta varias entradas a la vez (batch)
lote = clasificador([
    "El soporte respondio tarde.",
    "Funciona exactamente como esperaba.",
])
print(lote)

Si no especificas un modelo, pipeline() elige uno por defecto para la tarea. En código real conviene fijar el modelo de forma explícita con model="..." para que el resultado sea reproducible.

Las clases Auto*: control fino

Cuando necesitas más control que el que da pipeline(), usas las clases Auto*. Una AutoClass es un atajo que recupera automáticamente la arquitectura correcta a partir del nombre o ruta del modelo. Las dos piezas básicas son:

  • AutoTokenizer: carga el tokenizador que corresponde exactamente al modelo, con sus mismas reglas de tokenización. Debes instanciarlo con el mismo nombre de modelo para usar las reglas con las que ese modelo fue preentrenado.
  • AutoModel y sus variantes por tarea (AutoModelForSequenceClassification, AutoModelForTokenClassification, AutoModelForQuestionAnswering, etc.): cargan el modelo con la cabeza adecuada. Hay una clase AutoModelFor* por tarea.

Las tareas soportadas

El identificador de tarea que pasas a pipeline() determina toda la canalización. Entre las tareas de texto más comunes están text-classification (con el alias sentiment-analysis), ner para reconocer entidades como persona, organización o ubicación, question-answering, fill-mask y text-generation. También hay tareas de audio e imagen como automatic-speech-recognition e image-classification.

Trampas comunes

  • No fijar el modelo en pipeline(): el modelo por defecto puede cambiar entre versiones y romper la reproducibilidad. Indica siempre model="..." en producción.
  • Mezclar tokenizador y modelo distintos: el tokenizador debe provenir del mismo checkpoint que el modelo; de lo contrario los índices de tokens no coinciden.
  • Instanciar AutoModel o AutoTokenizer con su constructor: estas clases no se construyen directamente, solo con .from_pretrained().
  • Ignorar la licencia de la model card: no toda licencia permite uso comercial; verifícalo antes de desplegar.
  • Elegir mal la cabeza: AutoModel devuelve estados ocultos, no predicciones; para clasificar necesitas AutoModelForSequenceClassification.

Cierre

El ecosistema de Hugging Face tiene una progresión clara: empieza con pipeline() para validar una idea en minutos, y baja a las clases Auto* cuando necesites controlar el tokenizador, la cabeza del modelo o el preprocesamiento. El paso siguiente es abrir el Hub, buscar un modelo para tu tarea, leer su model card y reproducir el bloque de sentiment-analysis con ese checkpoint específico.