Buckets:

rtrm's picture
|
download
raw
10.1 kB
# 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()`.
> [!TIP]
> 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](https://github.com/huggingface/transformers) ofrece la funcionalidad necesaria para crear y usar esos modelos compartidos. El [Model Hub](https://huggingface.co/models) contiene millones de modelos preentrenados que cualquiera puede descargar y utilizar. También puedes subir tus propios modelos al Hub.
> [!TIP]
> ⚠️ 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:
```python
from transformers import pipeline
classifier = pipeline("sentiment-analysis")
classifier("I've been waiting for a HuggingFace course my whole life.")
```
```python out
[{'label': 'POSITIVE', 'score': 0.9598047137260437}]
```
Incluso podemos pasar varias oraciones:
```python
classifier(
["I've been waiting for a HuggingFace course my whole life.", "I hate this so much!"]
)
```
```python out
[{'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:
1. El texto se preprocesa en un formato que el modelo pueda entender.
2. Las entradas preprocesadas se pasan al modelo.
3. 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.
> [!TIP]
> Para ver una lista completa y actualizada de pipelines, consulta la [documentación de 🤗 Transformers](https://huggingface.co/docs/hub/en/models-tasks).
### 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.
```python
from transformers import pipeline
classifier = pipeline("zero-shot-classification")
classifier(
"This is a course about the Transformers library",
candidate_labels=["education", "politics", "business"],
)
```
```python out
{'sequence': 'This is a course about the Transformers library',
'labels': ['education', 'business', 'politics'],
'scores': [0.8445963859558105, 0.111976258456707, 0.043427448719739914]}
```
> [!TIP]
> ✏️ **Pruébalo**. Juega con tus propias secuencias y etiquetas y observa cómo se comporta el modelo.
## Generación de texto[[text-generation]]
```python
from transformers import pipeline
generator = pipeline("text-generation")
generator("In this course, we will teach you how to")
```
```python out
[{'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`](https://huggingface.co/HuggingFaceTB/SmolLM2-360M):
```python
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,
)
```
```python out
[{'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](https://huggingface.co/docs/inference-providers/en/index).
## Rellenado de máscaras[[mask-filling]]
```python
from transformers import pipeline
unmasker = pipeline("fill-mask")
unmasker("This course will teach you all about models.", top_k=2)
```
```python out
[{'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]]
```python
from transformers import pipeline
ner = pipeline("ner", grouped_entities=True)
ner("My name is Sylvain and I work at Hugging Face in Brooklyn.")
```
```python out
[{'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]]
```python
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",
)
```
```python out
{'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]]
```python
from transformers import pipeline
translator = pipeline("translation", model="Helsinki-NLP/opus-mt-fr-en")
translator("Ce cours est produit par Hugging Face.")
```
```python out
[{'translation_text': 'This course is produced by Hugging Face.'}]
```
## Pipelines de imagen y audio
### Clasificación de imágenes
```python
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
```python
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.