Hugging Face Library Introduction¶
Qu'est ce que c'est ?¶
Hugging Face est une entreprise qui a un rôle très important dans la communauté open source en intelligence artificiel. C'est d'une part un site qui regroupe des datasets, des modèles et des "spaces" et d'autre part plusieurs librarys (transformers, diffusers et datasets principalement).
Pourquoi utiliser Hugging Face ? Hugging Face permet d'avoir accès à des modèles complexes de l'état de l'art de manière simple et de pouvoir utiliser des modèles complexes rapidement et efficacement. Il est aussi possible de tester des modèles via la catégorie "spaces" de leur site et de télécharger des datasets de la communauté. C'est un peu le "github" du deep learning.
Qu'est ce qu'on va apprendre dans ce cours ?¶
Ce cours est moins théorique que les précédents mais va permettre de toucher à des modèles très performants et de voir les capacités des modèles de deep learning actuels. Ce cours s'inspire des ressources disponbles sur le site de Hugging Face et du cours gratuit sur deeplearning.ai intitulé "Open Source Models with Hugging Face". Je vous invite à consulter ce cours qui montre de nombreuses applications en vision, audio et NLP.
Le plan de ce cours est le suivant :
- Dans l'introduction (ici), nous présentons le site de Hugging Face avec les 3 principales catégories : Models, Datasets et Spaces.
- Les 3 notebooks suivants sont dédiés à l'utilisation de la library transformers : le premier traîte des modèles de vision, le second du NLP et le troisième de l'audio.
- Après cela, un notebook sera dedié à la library diffusers qui permet d'utiliser des modèles de diffusion (Stable diffusion par exemple) pour génerer des images.
- Le dernier notebook présente gradio, une library permettant de faire des interfaces rapidement pour des démos par exemple.
Spaces¶
La catégorie la plus ludique et la plus facile d'accès est la catégorie spaces qui regroupe des démos de différents modèles.
La page d'accueil se présente comme cela :
Les démos (spaces) sont classé par utilisation et par "trending" mais vous pouvez utiliser la fonction "Search spaces" pour chercher un modèle particulier que vous souhaiteriez tester.
Je vous conseille également de parcourir régulierement les différents spaces, cela permet de se tenir au courant des nouveautés dans le domaine du deep learning.
Si vous entraînez vous-même un modèle, vous pouvez ensuite le partager gratuitement dans un space via l'outil de création "Create New Space". Pour cela, il faut avoir les bases de la library gradio qui nous traiterons dans le dernier notebook de ce cours.
Models¶
Parfois, un modèle que vous voudriez tester n'est pas disponible dans les spaces ou alors il est disponible mais vous voulez l'utiliser dans votre propre code. Pour cela, il faudra passer par la catégorie Models du site. La page Models regroupe énormement de modèles open-source.
Voici à quoi ressemble la page :
Il y beaucoup d'information sur cette page. D'une part, vous pouvez chercher un modèle particulier dont vous connaissez le nom via "Filter by name".
Vous pouvez également utiliser les filtres à gauche pour une recherche de modèles par catégorie.
Par exemple, imaginons que je cherche un modèle de "zero-shot object detection", ce qui permet de détecter n'importe quel objet sur l'image à partir d'un prompt.
***Prompt, qu'est ce que c'est ?** : Un *prompt est une entrée qui permet de guider le modèle dans sa tâche. En NLP, un prompt va simplement être l'entrée du modèle, c'est-à-dire le texte saisi par l'utilisateur. Un prompt peut également être une coordonée sur une image (pour une tâche de segmentation) ou même une image ou encore une vidéo. La plupart du temps, lorsqu'on fait référence à prompt, c'est pour parler d'un ajout de texte en input du modèle.
Dans le cas du "zero-shot object detection", si je cherche à détecter les bananes sur un image, l'entrée de mon modèle sera l'image et le texte "banana".
Pour chercher un modèle qui pourrait me convenir, j'utilise le filtrage de gauche en séléctionnant la catégorie zero-shot object detection et je consulte les modèles proposés.
Le modèle "IDEA-Research/grounding-dino-tiny" me parait bien, je le selectionne et j'arrive sur la page suivante :
La model card donne une description précise du modèle (son fonctionnement, ses capacités etc ...).
Pour obtenir le code permettant de l'utiliser directement en python (via la library transformers ou diffusers en fonction du modèle choisi), vous pouvez utiliser le bouton Use this model.
Pour le modèle choisi, on aura le bout de code suivant :
Dans les notebooks suivants, nous verrons comment utiliser ce code pour notre tâche.
Datasets¶
Si vous souhaitez entraîner votre propre modèle, il est nécessaire d'avoir un dataset. Vous pouvez choisir de le créer vous-même mais il existe beaucoup de datasets open-source que l'on peut notamment trouver sur Hugging Face.
La page Datasets se présente comme la page Models avec les fonctions de filtrage et la fonction de recherche :
Vous pouvez sélectionner un dataset et tomber sur la page suivante :
Comme pour les modèles, la Dataset card permet de visualiser les données du dataset et d'avoir une description de celui-ci. Pour l'utiliser directement en python, vous pouvez utiliser Use in Datasets library pour obtenir le code python correspondant.
Autres catégories¶
Le site est plus complet que ça mais cette introduction ne vise pas à être exhaustive. Je vous invite à naviguer par vous-même sur le site pour trouver des choses qui vous interessent.
Dans les notebooks suivants, nous présenterons une vue d'ensemble des types de modèles disponibles et leur utilisation en python via Hugging Face.