FastAI : Une API de Deep Learning accessible à tous

-
3
 m de lecture
-

FastAI est une bibliothèque open source très intuitive comprenant un vaste panel de fonctions utiles à un projet de Deep Learning. Cet article présente une vue d’ensemble des modules disponibles ainsi que les avantages que proposent FastAI.

Qu’est-ce que FastAI ?

Déployée en 2018, FastAI est une librairie Python de Deep Learning construite à partir de PyTorch. Il s’agit d’une librairie open source, dont le repository est disponible sur GitHub.

Le groupe fast.ai possède par ailleurs son propre site, alimenté d’un MOOC et de la documentation du package.

L’attrait principal de FastAI réside dans ses nombreux composants haut-niveau intégrés, permettant un déploiement rapide des architectures Deep Learning. Il est trivial de reproduire des résultats fondamentaux de Deep Learning, le tout avec très peu de lignes.

À contrario, il existe pléthore de fonctions bas-niveau, donnant la possibilité de manipuler, créer à sa guise de nouveaux modèles personnalisés.

FastAI regroupe la clarté et la rapidité d’exécution de Keras avec la flexibilité de PyTorch, formant un produit épuré et maniable. C’est avec cet état d’esprit que la bibliothèque est structurée, comme nous le verrons dans la section suivante.

Une API unique

Un aspect important de FastAI est la centralisation des modules. En général, il est de bon usage de n’importer que les fonctions nécessaires au projet ; cela peut requérir un effort supplémentaire qui peut très vite s’accroître à mesure que le projet avance.

FastAI évince cette contrainte : il suffit d’importer l’intégralité du ou des modules qui nous concernent. On verra souvent les importations suivantes qui forment le coeur de l’API :

Plus besoin alors de spécifier les fonctions à importer, contrairement à keras dont les performances vont de pair avec la maîtrise de l’utilisateur. 

En pratique, FastAI agit comme une API centralisée, regroupant toutes sortes de fonctions utiles à un projet de Deep Learning. A haut niveau, il est possible de travailler sur quatre domaines fondamentaux : Computer Vision, NLP, filtrage collaboratif et tabulation de données (analyse temporelle).

Le diagramme ci-dessus présente l’architecture hiérarchisée de FastAI. Si l’utilisateur souhaite modifier une partie de l’API haut niveau, il n’a pas besoin de connaître en amont le fonctionnement au plus bas niveau du modèle.

Une démocratisation du Deep Learning

Selon Jeremy Howard et Rachel Thomas (fondateurs de fast.ai), l’objectif derrière cette uniformisation est de démocratiser le Deep Learning afin de faciliter son accès au grand public. Pour respecter cette mission, la syntaxe est sensiblement moins prolixe que les autres bibliothèques de référence : quelques lignes seulement sont nécessaires pour créer un modèle de zéro.

Parmi les efforts fournis, il existe notamment une unique classe Learner qui prend en compte l’architecture du modèle, la data et l’optimiseur. FastAI propose des valeurs par défaut pertinentes, et choisit à notre place la fonction de coût adaptée aux besoins. Citons également la classe DataLoader qui construit automatiquement les sets de validation/test, induisant les étapes de preprocessing (mélange des données, stratification). Une aubaine pour un débutant qui oublierait de mettre de côté une partie de son jeu de données…

Comme mentionné précédemment, il est tout à fait possible pour les plus aguerris d’accéder aux couches inférieures de l’API et de le modifier à sa guise sans souci.

Un exemple d’application en Computer Vision

Prenons l’exemple d’un réseau de neurones convolutifs (ou Convolutional Neural Network, abrégé CNN). Ce genre de modèle est couramment utilisé en traitement d’images, comme par exemple en reconnaissance de features.

Pour en savoir plus sur le fonctionnement des CNN, vous pouvez consulter notre dossier dédié.

Avec FastAI, voici tout ce qu’il faut écrire pour réaliser notre modèle :

Comme vous pouvez le remarquer, certains paramètres ne sont pas spécifiés ; learn s’occupe d’attribuer les bonnes valeurs à ceux-ci. Il va télécharger un modèle pré-entraîné sur ImageNet, et initialiser entre autres l’optimiseur, le taux d’apprentissage, le weight decay, etc., sauf si l’utilisateur décide de renseigner ces données manuellement.

Pour observer un échantillon de notre jeu de données, il suffit d’appeler la fonction :

show_batch() fournit une visualisation de la dara différente selon la forme de cette dernière.

Pour entraîner le modèle et vérifier ses prédictions, deux lignes viennent compléter notre notebook :

Avec très peu de lignes de code, nous sommes parvenus à créer un CNN opérationnel. Bluffant, n’est-ce pas ? 

Pour aller plus loin, sachez qu’il existe un système très intuitif et modulable de 2-way callback, permettant de contrôler le déroulement de l’entraînement à souhait.

Le mot de la fin

En résumé, FastAI adopte une approche épurée pour gérer des projets de Deep Learning, grâce à une bibliothèque riche en fonctions haut-niveau. Très facile à prendre en main, l’API est disponible à l’importation sur Jupyter. N’hésitez pas à tester par vous-même, et à vous référer si besoin à la documentation du site officiel.

Nous espérons que cet article vous a plu, et si vous souhaitez aller plus loin en Deep Learning, découvrez sans plus tarder nos cursus experts : Computer Vision et Natural Language Processing.

Facebook
Twitter
LinkedIn

DataScientest News

Inscrivez-vous à notre Newsletter pour recevoir nos guides, tutoriels, et les dernières actualités data directement dans votre boîte mail.

Vous souhaitez être alerté des nouveaux contenus en data science et intelligence artificielle ?

Laissez-nous votre e-mail, pour que nous puissions vous envoyer vos nouveaux articles au moment de leur publication !

Newsletter icone
icon newsletter

DataNews

Vous souhaitez recevoir notre
newsletter Data hebdomadaire ?