Hub documentation

Tareas

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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:

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!

  1. 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
  1. 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