Hub documentation

Tâches

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Tâches

Qu'est-ce qu'une tâche ?

Les tâches, ou types de pipeline, décrivent la « forme » de l’API de chaque modèle (entrées et sorties) et servent à déterminer quelle API d’inférence et quel widget afficher pour un modèle donné.

Cette classification est relativement grossière (vous pouvez toujours ajouter des noms de tâches plus fins dans les étiquettes de votre modèle), de sorte que vous devriez rarement avoir à créer une nouvelle tâche. Si vous souhaitez ajouter la prise en charge d'une nouvelle tâche, ce document explique les étapes requises.

Aperçu

L'intégration d'une nouvelle tâche dans le Hub signifie que :

  • Les utilisateurs peuvent rechercher tous les modèles – et les jeux de données – d'une tâche donnée.
  • L'API d'inférence prend en charge la tâche.
  • Les utilisateurs peuvent tester les modèles directement avec le widget. 🏆

Notez que vous n’avez pas besoin d’implémenter vous-même toutes les étapes. L’ajout d’une nouvelle tâche est un effort communautaire, et plusieurs personnes peuvent y contribuer. 🧑‍🤝‍🧑

Pour commencer, ouvrez un nouveau ticket dans le dépôt huggingface_hub. Veuillez utiliser le modèle « Adding a new task ». ⚠️Avant de commencer à coder, il est conseillé de parcourir ce document. ⚠️

La première étape consiste à téléverser un modèle pour votre tâche proposée. Une fois que vous avez un modèle dans le Hub pour la nouvelle tâche, l'étape suivante est de l'activer dans l'API d'inférence. Il existe trois types de prise en charge parmi lesquels vous pouvez choisir :

  • 🤗 utilisation d'un modèle transformers
  • 🐳 utilisation d'un modèle d'une bibliothèque officiellement prise en charge
  • 🖨️ l’utilisation d’un modèle avec un code d’inférence personnalisé. Cette option expérimentale présente des inconvénients, nous recommandons donc d’utiliser l’une des autres approches.

Enfin, vous pouvez ajouter quelques éléments d’interface, tels que l’icône de la tâche et le widget, qui complètent l’intégration dans le Hub. 📷

Certaines étapes sont indépendantes ; il n’est pas nécessaire de les effectuer dans un ordre précis. Vous n’avez pas besoin de l’API d’inférence pour ajouter l’icône. Cela signifie que, même si l’intégration complète n’est pas encore en place, les utilisateurs peuvent toujours rechercher des modèles pour une tâche donnée.

Ajout de nouvelles tâches au Hub

Utilisation de la bibliothèque transformers de Hugging Face

Si votre modèle est un modèle basé sur transformers, il existe une correspondance 1:1 entre la tâche de l'API d'inférence et une classe pipeline. Voici quelques exemples de PR de la bibliothèque transformers :

Une fois le pipeline soumis et déployé, vous devriez pouvoir utiliser l'API d'inférence pour votre modèle.

Utiliser l’API d’inférence communautaire avec une bibliothèque prise en charge

Le Hub prend également en charge plus de 10 bibliothèques open source dans l'API d'inférence communautaire.

L’ajout d’une nouvelle tâche est relativement simple et nécessite 2 PR :

Ajout de l'API d'inférence communautaire pour un prototype rapide

Mon modèle n'est pris en charge par aucune bibliothèque. Suis-je condamné ? 😱

Nous recommandons d'utiliser Hugging Face Spaces pour ces cas d'usage.

Éléments d'interface

Le Hub permet aux utilisateurs de filtrer les modèles par tâche donnée. Pour ce faire, vous devez ajouter la tâche à plusieurs endroits. Vous pourrez également choisir une icône pour la tâche !

  1. Ajoutez le type de tâche à Types.ts

Dans huggingface.js/packages/tasks/src/pipelines.ts, vous devez faire quelques choses

  • Ajoutez le type à PIPELINE_DATA. Notez que les types de pipeline sont classés dans différentes catégories (NLP, Audio, Computer Vision, et autres).
  • Vous devrez également effectuer de légères modifications dans huggingface.js/packages/tasks/src/tasks/index.ts
  1. Choisir une icône

Vous pouvez ajouter une icône dans le répertoire lib/Icons. Nous choisissons généralement des icônes carbon depuis https://icones.js.org/collection/carbon. Ajoutez également l'icône à PipelineIcon.

Widget

Une fois la tâche déployée en production, que pourrait-il y avoir de plus excitant que d’implémenter un moyen pour les utilisateurs de manipuler directement les modèles dans leur navigateur ? 🤩 Vous pouvez trouver tous les widgets ici.

Si vous souhaitez contribuer avec un widget, vous pouvez consulter l'implémentation de tous les widgets.

Update on GitHub