Buckets:
Transformers, ¿qué pueden hacer?[[transformers-what-can-they-do]]
En esta sección veremos qué pueden hacer los modelos Transformer y usaremos nuestra primera herramienta de la librería 🤗 Transformers: la función pipeline().
Mira el botón Open in Colab de la esquina superior derecha. Haz clic para abrir un notebook de Google Colab con todos los ejemplos de código de esta sección.
Si quieres ejecutar los ejemplos de forma local, te recomendamos revisar la instalación.
Los Transformers están en todas partes[[transformers-are-everywhere]]
Los modelos Transformer se usan para resolver todo tipo de tareas en distintas modalidades, entre ellas procesamiento de lenguaje natural, visión por computador, audio y más. Estas son algunas de las empresas y organizaciones que usan Hugging Face y modelos Transformer, y que además contribuyen a la comunidad compartiendo sus modelos:
La librería 🤗 Transformers ofrece la funcionalidad necesaria para crear y usar esos modelos compartidos. El Model Hub contiene millones de modelos preentrenados que cualquiera puede descargar y utilizar. También puedes subir tus propios modelos al Hub.
⚠️ El Hugging Face Hub no se limita a modelos Transformer. Cualquiera puede compartir el tipo de modelos o datasets que quiera. Crea una cuenta en huggingface.co para aprovechar todas las funciones disponibles.
Antes de profundizar en cómo funcionan internamente los modelos Transformer, veamos algunos ejemplos de cómo se pueden usar para resolver problemas interesantes de PLN.
Trabajar con pipelines[[working-with-pipelines]]
El objeto más básico de la librería 🤗 Transformers es la función pipeline(). Conecta un modelo con sus pasos necesarios de preprocesamiento y posprocesamiento, de forma que podamos introducir texto directamente y obtener una respuesta comprensible:
from transformers import pipeline
classifier = pipeline("sentiment-analysis")
classifier("I've been waiting for a HuggingFace course my whole life.")
[{'label': 'POSITIVE', 'score': 0.9598047137260437}]
Incluso podemos pasar varias oraciones:
classifier(
["I've been waiting for a HuggingFace course my whole life.", "I hate this so much!"]
)
[{'label': 'POSITIVE', 'score': 0.9598047137260437},
{'label': 'NEGATIVE', 'score': 0.9994558095932007}]
Por defecto, este pipeline selecciona un modelo preentrenado concreto que se ha ajustado para análisis de sentimiento en inglés. El modelo se descarga y se almacena en caché cuando creas el objeto classifier.
Hay tres pasos principales cuando pasas texto a un pipeline:
- El texto se preprocesa en un formato que el modelo pueda entender.
- Las entradas preprocesadas se pasan al modelo.
- Las predicciones del modelo se posprocesan para que tengan sentido para ti.
Pipelines disponibles para distintas modalidades
La función pipeline() soporta múltiples modalidades, así que puedes trabajar con texto, imágenes, audio e incluso tareas multimodales. En este curso nos centraremos en tareas de texto, pero conviene entender el potencial de la arquitectura Transformer.
Para ver una lista completa y actualizada de pipelines, consulta la documentación de 🤗 Transformers.
Pipelines de texto
text-generation: genera texto a partir de un prompt.text-classification: clasifica texto en categorías predefinidas.summarization: crea una versión más corta de un texto conservando la información clave.translation: traduce texto de un idioma a otro.zero-shot-classification: clasifica texto sin entrenamiento previo sobre etiquetas concretas.feature-extraction: extrae representaciones vectoriales del texto.
Pipelines de imagen
image-to-text: genera descripciones de texto a partir de imágenes.image-classification: identifica objetos en una imagen.object-detection: localiza e identifica objetos en imágenes.
Pipelines de audio
automatic-speech-recognition: convierte voz en texto.audio-classification: clasifica audio en categorías.text-to-speech: convierte texto en audio hablado.
Pipelines multimodales
image-text-to-text: responde a una imagen a partir de un prompt de texto.
Veamos algunos de estos pipelines con más detalle.
Clasificación zero-shot[[zero-shot-classification]]
Empezaremos con una tarea más exigente: clasificar textos que no están etiquetados. Para este caso, el pipeline zero-shot-classification es muy potente: te permite especificar qué etiquetas usar, así que no dependes de las etiquetas del modelo preentrenado.
from transformers import pipeline
classifier = pipeline("zero-shot-classification")
classifier(
"This is a course about the Transformers library",
candidate_labels=["education", "politics", "business"],
)
{'sequence': 'This is a course about the Transformers library',
'labels': ['education', 'business', 'politics'],
'scores': [0.8445963859558105, 0.111976258456707, 0.043427448719739914]}
✏️ Pruébalo. Juega con tus propias secuencias y etiquetas y observa cómo se comporta el modelo.
Generación de texto[[text-generation]]
from transformers import pipeline
generator = pipeline("text-generation")
generator("In this course, we will teach you how to")
[{'generated_text': 'In this course, we will teach you how to understand and use '
'data flow and data interchange when handling user data. We '
'will be working with one or more of the most commonly used '
'data flows — data flows of various types, as seen by the '
'HTTP'}]
Puedes controlar cuántas secuencias distintas se generan con num_return_sequences y la longitud total del texto de salida con max_length.
Usar cualquier modelo del Hub en un pipeline[[using-any-model-from-the-hub-in-a-pipeline]]
Probemos el modelo HuggingFaceTB/SmolLM2-360M:
from transformers import pipeline
generator = pipeline("text-generation", model="HuggingFaceTB/SmolLM2-360M")
generator(
"In this course, we will teach you how to",
max_length=30,
num_return_sequences=2,
)
[{'generated_text': 'In this course, we will teach you how to manipulate the world and '
'move your mental and physical capabilities to your advantage.'},
{'generated_text': 'In this course, we will teach you how to become an expert and '
'practice realtime, and with a hands on experience on both real '
'time and real'}]
Inference Providers[[inference-providers]]
Todos los modelos pueden probarse directamente en el navegador usando Inference Providers, disponibles en el sitio web.
Rellenado de máscaras[[mask-filling]]
from transformers import pipeline
unmasker = pipeline("fill-mask")
unmasker("This course will teach you all about models.", top_k=2)
[{'sequence': 'This course will teach you all about mathematical models.',
'score': 0.19619831442832947,
'token': 30412,
'token_str': ' mathematical'},
{'sequence': 'This course will teach you all about computational models.',
'score': 0.04052725434303284,
'token': 38163,
'token_str': ' computational'}]
Reconocimiento de entidades nombradas[[named-entity-recognition]]
from transformers import pipeline
ner = pipeline("ner", grouped_entities=True)
ner("My name is Sylvain and I work at Hugging Face in Brooklyn.")
[{'entity_group': 'PER', 'score': 0.99816, 'word': 'Sylvain', 'start': 11, 'end': 18},
{'entity_group': 'ORG', 'score': 0.97960, 'word': 'Hugging Face', 'start': 33, 'end': 45},
{'entity_group': 'LOC', 'score': 0.99321, 'word': 'Brooklyn', 'start': 49, 'end': 57}
]
Question answering[[question-answering]]
from transformers import pipeline
question_answerer = pipeline("question-answering")
question_answerer(
question="Where do I work?",
context="My name is Sylvain and I work at Hugging Face in Brooklyn",
)
{'score': 0.6385916471481323, 'start': 33, 'end': 45, 'answer': 'Hugging Face'}
Resumen automático[[summarization]]
El resumen automático consiste en reducir un texto a una versión más corta conservando la información importante.
Traducción[[translation]]
from transformers import pipeline
translator = pipeline("translation", model="Helsinki-NLP/opus-mt-fr-en")
translator("Ce cours est produit par Hugging Face.")
[{'translation_text': 'This course is produced by Hugging Face.'}]
Pipelines de imagen y audio
Clasificación de imágenes
from transformers import pipeline
image_classifier = pipeline(
task="image-classification", model="google/vit-base-patch16-224"
)
result = image_classifier(
"https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
)
print(result)
Reconocimiento automático de voz
from transformers import pipeline
transcriber = pipeline(
task="automatic-speech-recognition", model="openai/whisper-large-v3"
)
result = transcriber(
"https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/mlk.flac"
)
print(result)
Combinar datos de múltiples fuentes
Una aplicación potente de los modelos Transformer es su capacidad para combinar y procesar datos procedentes de múltiples fuentes.
Conclusión
Los pipelines mostrados en este capítulo son sobre todo demostrativos. En el próximo capítulo aprenderás qué hay dentro de una función pipeline() y cómo personalizar su comportamiento.
Xet Storage Details
- Size:
- 10.1 kB
- Xet hash:
- 2b19bd0ce4d99f047c159ca03028776fe21732b28f63982e4210aac8c2ea69d1
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.