Hub documentation

Widgets

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Widgets

Qu'est-ce qu'un widget ?

De nombreux dépôts de modèles disposent d’un widget permettant à quiconque d’exécuter des inférences directement dans le navigateur. Ces widgets sont propulsés par les Inference Providers, qui offrent aux développeurs un accès unifié et simplifié à des centaines de modèles de machine learning, soutenu par nos partenaires d’inférence serverless.

Voici quelques exemples de modèles populaires actuels :

Vous pouvez explorer d'autres modèles et leurs widgets sur la page des modèles ou les essayer de manière interactive dans le Inference Playground.

Activer un widget

Les widgets sont affichés lorsque le modèle est hébergé par au moins un Inference Provider, garantissant des performances et une fiabilité optimales pour l'inférence du modèle. Les fournisseurs choisissent et contrôlent de manière autonome les modèles qu'ils déploient.

Le type de widget affiché (texte vers image, reconnaissance vocale automatique, etc.) est déduit du pipeline_tag du modèle, un tag spécial que le Hub tente de calculer automatiquement pour tous les modèles. La seule exception concerne le widget conversational, qui est affiché sur tous les modèles dont le pipeline_tag est soit text-generation, soit image-text-to-text. Nous avons choisi d’exposer un seul widget par modèle, pour des raisons de simplicité.

Pour certaines bibliothèques, telles que transformers, le type de modèle peut être inféré automatiquement à partir des fichiers de configuration (config.json). L’architecture peut déterminer le type : par exemple, AutoModelForTokenClassification correspond à token-classification. Si cela vous intéresse, vous pouvez consulter le pseudo-code dans ce gist.

Pour la plupart des autres cas d'utilisation, nous utilisons les étiquettes du modèle pour déterminer le type de tâche du modèle. Par exemple, si tag: text-classification figure dans les métadonnées de la carte du modèle, le pipeline_tag déduit sera text-classification.

Vous pouvez toujours remplacer manuellement le type de votre pipeline avec pipeline_tag: xxx dans les métadonnées de la carte de modèle. (Vous pouvez également utiliser l’éditeur de métadonnées pour ce faire).

Comment puis-je contrôler l'exemple d'entrée du widget de mon modèle ?

Vous pouvez spécifier l’entrée du widget dans la section métadonnées de la carte du modèle :

widget:
  - text: "This new restaurant has amazing food and great service!"
    example_title: "Positive Review"
  - text: "I'm really disappointed with this product. Poor quality and overpriced."
    example_title: "Negative Review"
  - text: "The weather is nice today."
    example_title: "Neutral Statement"

Vous pouvez fournir plusieurs exemples d’entrée. Dans le menu déroulant des exemples du widget, ils apparaîtront sous la forme Example 1, Example 2, etc. Facultativement, vous pouvez également fournir example_title.

widget:
  - text: "Is this review positive or negative? Review: Best cast iron skillet you will ever buy."
    example_title: "Sentiment analysis"
  - text: "Barack Obama nominated Hilary Clinton as his secretary of state on Monday. He chose her because she had ..."
    example_title: "Coreference resolution"
  - text: "On a shelf, there are five books: a gray book, a red book, a purple book, a blue book, and a black book ..."
    example_title: "Logic puzzles"
  - text: "The two men running to become New York City's next mayor will face off in their first debate Wednesday night ..."
    example_title: "Reading comprehension"

De plus, vous pouvez spécifier des exemples d’entrées non textuels dans les métadonnées de la carte du modèle. Consultez ici pour obtenir la liste complète des formats d’entrée d’exemple pour tous les types de widgets. Pour les types de widgets vision & audio, fournissez des exemples d’entrées avec src plutôt que text.

Par exemple, permettre aux utilisateurs de choisir parmi deux fichiers audio d’exemple pour les tâches de reconnaissance vocale automatique en :

widget:
  - src: https://example.org/somewhere/speech_samples/sample1.flac
    example_title: Speech sample 1
  - src: https://example.org/somewhere/speech_samples/sample2.flac
    example_title: Speech sample 2

Notez que vous pouvez également inclure des fichiers d'exemple dans votre dépôt de modèle et les utiliser comme suit :

widget:
  - src: https://huggingface.co/username/model_repo/resolve/main/sample1.flac
    example_title: Custom Speech Sample 1

Mais encore plus pratique, si le fichier se trouve dans le dépôt de modèle correspondant, vous pouvez simplement utiliser le nom du fichier ou le chemin du fichier dans le dépôt :

widget:
  - src: sample1.flac
    example_title: Custom Speech Sample 1

ou s'il était imbriqué dans le dépôt :

widget:
  - src: nested/directory/sample1.flac

Nous fournissons des exemples d’entrées pour certaines langues et la plupart des types de widgets dans le fichier default-widget-inputs.ts. Si certains exemples manquent, nous accueillons avec plaisir les PR de la communauté pour les ajouter !

Exemples de sorties

En complément des exemples d’entrées, pour chaque exemple de widget, vous pouvez également décrire de manière facultative la sortie correspondante du modèle, directement dans la propriété output.

Cela est utile lorsque le modèle n'est pas encore pris en charge par les Inference Providers, afin que la page du modèle puisse toujours présenter son fonctionnement et les résultats qu'il produit.

Par exemple, pour un modèle automatic-speech-recognition :

widget:
  - src: sample1.flac
    output:
      text: "Hello my name is Julien"

La propriété output doit être un dictionnaire YAML représentant le format de sortie des Inference Providers.

Pour un modèle qui génère du texte, consultez l’exemple ci-dessus.

Pour un modèle qui sort des étiquettes (comme un modèle de text-classification par exemple), la sortie doit ressembler à ceci :

widget:
  - text: "I liked this movie"
    output:
      - label: POSITIVE
        score: 0.8
      - label: NEGATIVE
        score: 0.2

Enfin, pour un modèle qui génère une image, un audio ou tout autre type d’actif, la sortie doit inclure une propriété url pointant vers un nom de fichier ou un chemin dans le dépôt, ou vers une URL distante. Par exemple, pour un modèle texte-vers-image :

widget:
  - text: "picture of a futuristic tiger, artstation"
    output:
      url: images/tiger.jpg

Nous pouvons également afficher les exemples de sortie dans l’interface utilisateur Hugging Face, par exemple pour un modèle texte-vers-image afin d’afficher une galerie de générations d’images impressionnantes.

Disponibilité des widgets et prise en charge des fournisseurs

Tous les modèles ne disposent pas de widgets. La disponibilité des widgets dépend de :

  1. Prise en charge des tâches : la tâche du modèle doit être prise en charge par au moins un fournisseur du réseau Inference Providers
  2. Disponibilité des fournisseurs : au moins un fournisseur doit servir le modèle spécifique
  3. Configuration du modèle : le modèle doit disposer de métadonnées et de fichiers de configuration appropriés

Pour consulter la liste complète des tâches prises en charge, consultez notre page de documentation dédiée.

La liste de tous les fournisseurs et des tâches qu’ils prennent en charge est disponible dans cette page de documentation.

Pour les modèles sans support de fournisseur, vous pouvez toujours mettre en avant les fonctionnalités à l'aide de sorties d'exemple dans votre carte de modèle.

Vous pouvez également cliquer sur Demander le support du fournisseur directement sur la page du modèle pour encourager les fournisseurs à servir le modèle, s'il y a suffisamment d'intérêt de la part de la communauté.

Explorer les modèles avec l’Inference Playground

Avant d'intégrer des modèles dans vos applications, vous pouvez les tester de manière interactive avec le Inference Playground. Le playground vous permet de :

  • Testez différents modèles de complétion de chat avec des invites personnalisées
  • Comparer les réponses de différents modèles
  • Expérimentez avec des paramètres d'inférence tels que la température, le nombre maximal de jetons, et plus encore
  • Trouvez le modèle parfait pour votre cas d'usage spécifique

Le playground utilise la même infrastructure Inference Providers que celle qui alimente les widgets, vous pouvez donc vous attendre à des performances et des capacités similaires lorsque vous intégrez les modèles dans vos propres applications.

Inference Playground
Update on GitHub