Hub documentation
Tareas
Tareas
¿Qué es una tarea?
Las tareas, o tipos de pipeline, describen la “forma” de la API de cada modelo (entradas y salidas) y se utilizan para determinar qué API de inferencia y widget queremos mostrar para un modelo dado.

Esta clasificación es relativamente de grano grueso (siempre puedes agregar más nombres de tareas de grano fino en las etiquetas de tu modelo), por lo que rara vez deberás crear una nueva tarea. Si deseas agregar soporte para una nueva tarea, este documento explica los pasos requeridos.
Resumen
Tener una nueva tarea integrada en el Hub significa que:
- Los usuarios pueden buscar todos los modelos y conjuntos de datos de una tarea determinada.
- La API de Inferencia admite la tarea.
- Los usuarios pueden probar los modelos directamente con el widget. 🏆
Ten en cuenta que no necesitas implementar todos los pasos por ti mismo. Añadir una nueva tarea es un esfuerzo comunitario, y varias personas pueden contribuir. 🧑🤝🧑
Para comenzar el proceso, abre un nuevo issue en el repositorio huggingface_hub. Utiliza la plantilla “Adding a new task”. ⚠️Antes de escribir código, se sugiere repasar este documento. ⚠️
El primer paso es subir un modelo para la tarea propuesta. Una vez que tengas un modelo en el Hub para la nueva tarea, el siguiente paso es habilitarlo en la Inference API. Hay tres tipos de soporte entre los que puedes elegir:
- 🤗 usando un modelo de
transformers - 🐳 uso de un modelo de una biblioteca oficialmente admitida
- 🖨️ el uso de un modelo con código de inferencia personalizado. Esta opción experimental tiene desventajas, por lo que recomendamos utilizar uno de los otros enfoques.
Por último, puedes añadir algunos elementos de interfaz, como el icono de la tarea y el widget, que completan la integración en el Hub. 📷
Algunos pasos son independientes; no es necesario realizarlos en orden. No necesitas la API de inferencia para añadir el icono. Esto significa que, aunque aún no exista una integración completa, los usuarios pueden buscar modelos de una tarea determinada.
Agregar nuevas tareas al Hub
Usando la biblioteca transformers de Hugging Face
Si su modelo es un modelo basado en transformers, existe una correspondencia 1:1 entre la tarea de la API de Inferencia y una clase pipeline. A continuación se muestran algunos ejemplos de PR de la biblioteca transformers:
Una vez que el pipeline se haya enviado y desplegado, deberás poder usar la Inference API para tu modelo.
Uso de la API de Inferencia de la Comunidad con una biblioteca compatible
El Hub también es compatible con más de 10 bibliotecas de código abierto en la Community Inference API.
Añadir una nueva tarea es relativamente sencillo y requiere 2 PRs:
- PR 1: Añadir la nueva tarea a la API validación. Este código garantiza que la entrada de inferencia sea válida para una tarea dada. Algunos ejemplos de PR:
- PR 2: Agrega la nueva tarea a la imagen docker de una biblioteca. También debes agregar una plantilla a
docker_images/common/app/pipelinespara facilitar la integración de la tarea en otras bibliotecas. Aquí hay un ejemplo de PR:
Agregando la API de Inferencia de la Comunidad para un prototipo rápido
Mi modelo no es compatible con ninguna biblioteca. ¿Estoy condenado? 😱
Recomendamos usar Hugging Face Spaces para estos casos de uso.
Elementos de la interfaz
El Hub permite a los usuarios filtrar modelos por una tarea dada. Para hacerlo, es necesario añadir la tarea en varios lugares. ¡También podrás elegir un icono para la tarea!
- Añade el tipo de tarea a
Types.ts
En huggingface.js/packages/tasks/src/pipelines.ts, necesitas hacer un par de cosas
- Añade el tipo a
PIPELINE_DATA. Ten en cuenta que los tipos de pipeline se clasifican en diferentes categorías (NLP, Audio, Computer Vision y otras). - También deberá completar los cambios menores en huggingface.js/packages/tasks/src/tasks/index.ts
- Elige un icono
Puedes añadir un icono en el directorio lib/Icons. Normalmente elegimos iconos de carbon desde https://icones.js.org/collection/carbon. También añade el icono a PipelineIcon.
Widget
Una vez que la tarea está en producción, ¿qué podría ser más emocionante que implementar alguna forma para que los usuarios interactúen directamente con los modelos en su navegador? 🤩 Puedes encontrar todos los widgets aquí.
Si te interesa contribuir con un widget, puedes consultar la implementación de todos los widgets.
Update on GitHub