Transformers documentation
Introducción
Introducción
Transformers está diseñado para ser rápido y fácil de usar, de modo que todos puedan empezar a aprender o a construir con modelos transformer.
El número de abstracciones orientadas al usuario se limita a solo tres clases para instanciar un modelo y dos APIs para inferencia o entrenamiento. Esta guía de inicio rápido le presenta las funciones clave de Transformers y le muestra cómo:
Configuración
Para empezar, recomendamos crear una cuenta de Hugging Face. Una cuenta te permite alojar y acceder a modelos, conjuntos de datos y Spaces con control de versiones en el Hub de Hugging Face, una plataforma colaborativa para descubrir y construir.
Crea un User Access Token e inicia sesión en tu cuenta.
Pega tu User Access Token en notebook_login cuando se te solicite iniciar sesión.
from huggingface_hub import notebook_login
notebook_login()Asegúrate de que el paquete huggingface_hub[cli] esté instalado y ejecuta el comando siguiente. Pega tu User Access Token cuando se te solicite para iniciar sesión.
hf auth login
Instala PyTorch.
# remove ! if installing from the CLI
!pip install torchA continuación, instale una versión actualizada de Transformers y algunas bibliotecas adicionales del ecosistema de Hugging Face para acceder a conjuntos de datos y modelos de visión, evaluar el entrenamiento y optimizar el entrenamiento para modelos grandes.
# remove ! if installing from the CLI
!pip install -U transformers datasets evaluate accelerate timmHabilidades de agentes
Hugging Face Skills enseñan a tu agente de código a trabajar con Transformers. En lugar de escribir un script de entrenamiento por tu cuenta, pídele a tu agente que ajuste finamente un modelo de visión y deja que la habilidad lo guíe.
/plugin marketplace add huggingface/skills /plugin install hf-cli@huggingface/skills
codex plugin marketplace add huggingface/skills
Luego, ejecuta /plugins en Codex e instala una skill desde el repositorio huggingface/skills.
Consulte la guía de Instalación para conocer más plataformas compatibles, como Cursor y Gemini.
Una vez que se instala una habilidad, inclúyela en las instrucciones que le des a tu agente de programación.
Use the HF Trainer skill to fine-tune RT-DETRv2 on [Lekim89/sportsmot](https://huggingface.co/datasets/Lekim89/sportsmot) for basketball player tracking.Modelos preentrenados
Cada modelo preentrenado hereda de tres clases base.
| Clase | Descripción |
|---|---|
| PreTrainedConfig | Un archivo que especifica los atributos de un modelo, como el número de cabezas de atención o el tamaño del vocabulario. |
| PreTrainedModel | Un modelo (o arquitectura) definido por los atributos del modelo del archivo de configuración. Un modelo preentrenado solo devuelve los estados ocultos crudos. Para una tarea específica, use la cabeza de modelo adecuada para convertir los estados ocultos crudos en un resultado significativo (por ejemplo, LlamaModel frente a LlamaForCausalLM). |
| Preprocesador | Una clase para convertir entradas sin procesar (texto, imágenes, audio, multimodal) en entradas numéricas para el modelo. Por ejemplo, PreTrainedTokenizer convierte texto en tensores y ImageProcessingMixin convierte píxeles en tensores. |
Recomendamos usar la API AutoClass para cargar modelos y preprocesadores, ya que infiere automáticamente la arquitectura adecuada para cada tarea y marco de aprendizaje automático en función del nombre o la ruta de los pesos preentrenados y el archivo de configuración.
Utilice from_pretrained() para cargar los pesos y el archivo de configuración desde el Hub en la clase de modelo y preprocesador.
Al cargar un modelo, configure los siguientes parámetros para garantizar que el modelo se cargue de manera óptima.
device_map="auto"asigna automáticamente los pesos del modelo primero a tu dispositivo más rápido.dtype="auto"inicializa directamente los pesos del modelo en el tipo de datos en el que están almacenados, lo que puede ayudar a evitar cargar los pesos dos veces (PyTorch carga los pesos entorch.float32de forma predeterminada).
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-2-7b-hf", dtype="auto", device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-2-7b-hf")Tokeniza el texto y devuelve tensores de PyTorch con el tokenizador. Mueve las entradas tokenizadas al mismo dispositivo que el modelo antes de ejecutar la inferencia para que el modelo pueda procesarlas.
model_inputs = tokenizer(["The secret to baking a good cake is "], return_tensors="pt").to(model.device)El modelo ya está listo para inferencia o entrenamiento.
Para la inferencia, pase las entradas tokenizadas a generate() para generar texto. Decodifique los ids de tokens de vuelta a texto con batch_decode().
generated_ids = model.generate(**model_inputs, max_length=30)
tokenizer.batch_decode(generated_ids)[0]
'<s> The secret to baking a good cake is 100% in the preparation. There are so many recipes out there,'Salte a la sección Trainer para aprender a ajustar un modelo.
Pipeline
La clase Pipeline es la forma más práctica de ejecutar inferencia con un modelo preentrenado. Admite muchas tareas, como la generación de texto, la segmentación de imágenes, el reconocimiento automático del habla, la respuesta a preguntas sobre documentos, entre otras.
Consulte la referencia de la API de Pipeline para obtener una lista completa de las tareas disponibles.
Crea un objeto Pipeline y selecciona una tarea. De forma predeterminada, Pipeline descarga y almacena en caché un modelo preentrenado predeterminado para una tarea dada. Pasa el nombre del modelo al parámetro model para elegir un modelo específico.
Use Accelerator para detectar automáticamente un acelerador disponible para la inferencia.
from transformers import pipeline
from accelerate import Accelerator
device = Accelerator().device
pipe = pipeline("text-generation", model="meta-llama/Llama-2-7b-hf", device=device)Prompt Pipeline con algún texto inicial para generar más texto.
pipe("The secret to baking a good cake is ", max_length=50)
[{'generated_text': 'The secret to baking a good cake is 100% in the batter. The secret to a great cake is the icing.\nThis is why we’ve created the best buttercream frosting reci'}]Use Accelerator para detectar automáticamente un acelerador disponible para la inferencia.
from transformers import pipeline
from accelerate import Accelerator
device = Accelerator().device
pipeline = pipeline("image-segmentation", model="facebook/detr-resnet-50-panoptic", device=device)Pasa una imagen, una URL o una ruta local de la imagen, a Pipeline.

segments = pipeline("https://huggingface.co/datasets/Narsil/image_dummy/raw/main/parrots.png")
segments[0]["label"]
'bird'
segments[1]["label"]
'bird'Use Accelerator para detectar automáticamente un acelerador disponible para la inferencia.
from transformers import pipeline
from accelerate import Accelerator
device = Accelerator().device
pipeline = pipeline("automatic-speech-recognition", model="openai/whisper-large-v3", device=device)Pase un archivo de audio a Pipeline.
pipeline("https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/1.flac")
{'text': ' He hoped there would be stew for dinner, turnips and carrots and bruised potatoes and fat mutton pieces to be ladled out in thick, peppered flour-fatten sauce.'}Trainer
Trainer es un bucle completo de entrenamiento y evaluación para modelos de PyTorch. Abstraer gran parte del código repetitivo que suele implicar la escritura manual de un bucle de entrenamiento, lo que permite comenzar a entrenar más rápido y centrarse en las decisiones de diseño del entrenamiento. Solo se necesita un modelo, un conjunto de datos, un preprocesador y un data collator para construir lotes de datos a partir del conjunto de datos.
Utilice la clase TrainingArguments para personalizar el proceso de entrenamiento. Ofrece numerosas opciones para el entrenamiento, la evaluación y más. Experimente con hiperparámetros de entrenamiento y características como el tamaño del lote, la tasa de aprendizaje, la precisión mixta, torch.compile y más para satisfacer sus necesidades de entrenamiento. También puede utilizar los parámetros de entrenamiento predeterminados para generar rápidamente una línea base.
Cargue un modelo, un tokenizador y un conjunto de datos para el entrenamiento.
from transformers import AutoModelForSequenceClassification, AutoTokenizer
from datasets import load_dataset
model = AutoModelForSequenceClassification.from_pretrained("distilbert/distilbert-base-uncased")
tokenizer = AutoTokenizer.from_pretrained("distilbert/distilbert-base-uncased")
dataset = load_dataset("cornell-movie-review-data/rotten_tomatoes")Crea una función para tokenizar el texto y convertirlo en tensores de PyTorch. Aplica esta función a todo el conjunto de datos con el método map.
def tokenize_dataset(dataset):
return tokenizer(dataset["text"])
dataset = dataset.map(tokenize_dataset, batched=True)Cargue un data collator para crear lotes de datos y pase el tokenizer a este.
from transformers import DataCollatorWithPadding
data_collator = DataCollatorWithPadding(tokenizer=tokenizer)A continuación, configure TrainingArguments con las características de entrenamiento y los hiperparámetros.
from transformers import TrainingArguments
training_args = TrainingArguments(
output_dir="distilbert-rotten-tomatoes",
learning_rate=2e-5,
per_device_train_batch_size=8,
per_device_eval_batch_size=8,
num_train_epochs=2,
push_to_hub=True,
)Por último, pasa todos estos componentes separados a Trainer y llama a train() para comenzar.
from transformers import Trainer
trainer = Trainer(
model=model,
args=training_args,
train_dataset=dataset["train"],
eval_dataset=dataset["test"],
processing_class=tokenizer,
data_collator=data_collator,
)
trainer.train()Comparte tu modelo y tokenizador en el Hub con push_to_hub().
trainer.push_to_hub()
¡Felicidades, acabas de entrenar tu primer modelo con Transformers!
Próximos pasos
Ahora que tienes una mejor comprensión de Transformers y de lo que ofrece, es momento de seguir explorando y aprendiendo lo que más te interese.
- Clases base: Obtenga más información sobre las clases de configuración, modelo y procesador. Esto le ayudará a comprender cómo crear y personalizar modelos, cómo preprocesar diferentes tipos de entradas (audio, imágenes, multimodales) y cómo compartir su modelo.
- Inferencia: Explora a fondo el Pipeline, la inferencia y el chat con LLMs, agentes, y cómo optimizar la inferencia con tu framework de machine learning y tu hardware.
- Entrenamiento: Estudia el Trainer en detalle, así como el entrenamiento distribuido y la optimización del entrenamiento en hardware específico.
- Cuantización: Reduzca los requisitos de memoria y almacenamiento mediante la cuantización y acelere la inferencia representando los pesos con menos bits.
- Recursos: ¿Buscas recetas de principio a fin sobre cómo entrenar y realizar inferencia con un modelo para una tarea específica? ¡Echa un vistazo a las recetas de tareas!