Plan de vol : l’apprentissage machine appliqué à un système de recommandation automatique

Ce Propulseur a été créé et la documentation rédigée par Carla Margalef Bentabol

Les Propulseurs de l’ATIR sont des jeux structurés de ressources en nuage, documentation incluse, illustrant une technologie émergente. Offerts gratuitement, ils ont été conçus par des entreprises canadiennes d’expérience qui ont élaboré des produits ou des services au moyen de la technologie en question et ont accepté de partager leur savoir.

Aperçu

La Solution type est destinée aux créateurs de logiciels en quête d’un système de recommandation automatique. Elle montre comment se servir du filtrage coopératif pour formuler des recommandations à l’utilisateur, selon ses préférences. À l’inverse des solutions qui ne recourent pas à l’apprentissage machine, la Solution type propose une méthode automatique pour formuler des recommandations personnalisées en fonction des goûts de l’utilisateur et de sa ressemblance avec d’autres utilisateurs.

Voir la page Solution type : Recommandeur de films‎ pour en savoir plus sur le fonctionnement de la solution proposée.

La solution recourt aux technologies TensorFlow et TensorRT décrites ci-dessous.

Technologie en vedette : TensorFlow

TensorFlow est un cadre de calcul pour les modèles d’apprentissage machine développé par Google. Il intègre une bibliothèque de logiciels qui traitent les données, bâtissent des modèles, les forment et en évaluent la performance. On y retrouve diverses boîtes à outils permettant de construire un modèle de degré d’abstraction variable qu’on pourra ensuite utiliser avec divers dispositifs, une unité de traitement centrale (CPU) ou une unité de traitement graphique (GPU), par exemple. L’industrie et les chercheurs utilisent souvent TensorFlow pour développer de vastes réseaux neuronaux, les expérimenter et les former.

Ressources

Le tableau qui suit dresse une liste partielle des hyperliens menant à de la documentation utile sur cette technologie.

RessourceRésumé
Site de TensorFlowPage de TensorFlow, avec présentation générale de la technologie et liens conduisant à de nombreuses autres ressources
MIT Deep Learning Basics: Introduction and Overview with TensorFlowBillet du blogue du MIT Deep Learning sur les principes de l’apprentissage profond et TensorFlow.

Tutoriels

Le tableau qui suit dresse une liste partielle des hyperliens menant aux didacticiels que l’auteur juge les plus utiles.

TutorielRésumé
Tutoriels sur TensorFlowPage officielle sur les tutoriels de TensorFlow proposant de nombreux exemples
Application de TensorFlow à l’apprentissage profondCours gratuit d’Udacity sur la création d’applications d’apprentissage profond avec TensorFlow.
Tutoriel sur l’apprentissage machine avec introduction à PythonTutoriel servant d’introduction à l’apprentissage machine et à son utilisation dans Python et avec TensorFlow

Documentation

Le tableau qui suit renvoie à de la documentation sur TensorRT.

DocumentRésumé
TensorFlow API DocumentationDocumentation officielle sur l’API
TensorFlow Developer GuideManuel officiel du développeur

Soutien

Des ressources sur TensorFlow sont disponibles sur la page de soutien à la collectivité.

Pratiques exemplaires

Degrés d’abstraction

Bien que TensorFlow accepte divers degrés d’abstraction et qu’on puisse l’appliquer à des modèles ne nécessitant que des opérations élémentaires, la technologie donnera de meilleurs résultats immédiats si on opte pour l’API à degré d’abstraction élevé. Quand la chose est possible, il vaut habituellement mieux d’utiliser les modèles, les couches, les estimateurs, les opérateurs, les fonctions d’entraînement et les méthodes de manipulation des données proposés.

CPU et GPU

TensorFlow fonctionne sur les CPU comme les GPU. En général, les GPU donnent toutefois de meilleurs résultats. Si vous en avez une à votre disposition, nous préconisons que vous formiez une GPU plutôt qu’une CPU, et effectuiez les inférences avec elle.

Trucs et hics

Expérimentation ou production

TensorFlow propose plusieurs fonctionnalités de débogage, de visualisation et de réduction des données d’une grande utilité. On recommande habituellement d’y recourir lors de l’apprentissage et des étapes initiales du développement. Cependant, elles peuvent aussi s’avérer d’une très grande inefficacité et ralentir considérablement le système. Désactivez-les ou mettez l’exécution à niveau avant de passer à l’étape de la production ou de procéder aux essais de rendement.

Points de contrôle

Former un modèle qui reproduira la réalité exige énormément de temps. Pour ne pas perdre un modèle en partie formé à la suite d’une erreur inattendue, pour vérifier l’avancement du projet dans un autre environnement ou pour mettre fin à l’apprentissage avant qu’il soit terminé, pour un motif quelconque, mieux vaut exploiter les capacités de contrôle de TensorFlow et sauvegarder le modèle à intervalles réguliers pendant la formation.

Souplesse

TensorFlow autorise une grande latitude et vous permet d’appliquer des modèles, des couches, des opérations et des modes d’échec de toute sorte, y compris ceux faits sur mesure, ce qui confère une grande souplesse au système. Les experts n’hésitent pas à en tirer parti dans les cas d’utilisation complexes. Cependant, TensorFlow vient également avec des fonctionnalités toutes faites qui donneront de bons résultats dans les situations plus courantes. Nous préconisons l’usage des modèles, couches, opérations et modes d’échec fournis chaque fois que la chose est réalisable, car ils ont été abondamment testés, sont efficaces et d’une grande compatibilité avec TensorRT.

Technologie en vedette : TensorRT

TensorRT est une plateforme de NVIDIA employée pour effectuer des inférences par apprentissage profond. Cette plateforme comprend un optimisateur d’inférences par apprentissage profond et réduit la latence tout en augmentant le débit des modèles à apprentissage profond. On peut élaborer et former le modèle avec de nombreux cadres d’apprentissage profond (comme TensorFlow), puis l’optimiser et l’étalonner pour en alléger la précision et en faciliter le déploiement en milieu de production avec TensorRT. TensorRT repose sur le modèle de programmation en parallèle CUDA de NVIDIA, qui permet une exploitation et une optimisation maximales sur les GPU.

Ressources

Le tableau qui suit dresse une liste partielle des hyperliens menant à de la documentation de base utile.

ResourceSummary
Site de NVIDIA sur TensorRTPage principale de TensorRT, avec présentation générale de la technologie et hyperliens vers de nombreuses ressources
Introduction to TensorRTWebinaire de NVIDIA (vidéo) présentant TensorRT.
What is CUDA? Parallel Programming for GPUsAperçu de CUDA. Introduction et usages (y compris TensorRT).

Tutoriels

Le tableau ci-dessous dresse une liste partielle des hyperliens conduisant vers les didacticiels que l’auteur juge les plus utiles.

TutorielRésumé
How to Speed Up Deep Learning Inference Using TensorRTTutoriel du blogue des développeurs de NVIDIA illustrant comment déployer une application d’apprentissage profond sur une GPU utilisant TensorRT.
Speed up TensorFlow Inference on GPUs with TensorRTBillet brossant un tableau général de l’intégration de TensorRT et de TensorFlow avec des codes à titre d’exemple
Trying out TensorRT on Jetson TX2Tutoriel sur l’optimisation d’un modèle d’apprentissage profond formé avec Caffe (cadre d’apprentissage profond) et exécutant des inférences sur Jetson TX2 (GPU de NVIDIA).

Documentation

Le tableau qui suit renvoie à de la documentation sur TensorRT.

DocumentSummary
TensorRT Inference Library DocumentationManuel officiel pour le développeur et documentation sur l’API
TensorRT Inference Server DocumentationDocumentation officielle sur le serveur d’inférence

Soutien

Vous trouverez de l’aide sur TensorRT à la partie « Support » de la documentation.

Pratiques exemplaires

La section « Best Practices » de la documentation officielle sur TensorRT dresse une liste des pratiques exemplaires.

Trucs et hics

Versions

Certaines versions de TensorRT ne sont compatibles qu’avec une version précise de CUDA et de TensorFlow. D’autre part, quelques versions de CUDA ne sont compatibles qu’avec une version précise des pilotes de la GPU. Vérifiez la grille de compatibilité de TensorRT et lisez les note de la boîte à outils CUDA pour éviter les problèmes d’incompatibilité. TensorRT propose des versions compatibles en contenants Docker préemballés. Lire la page de la Solution type : Recommandeur de films pour voir comment effectuer l’installation.

Python vs C++ API

TensorRT propose une API en Python et en C++. Au départ, la majeure partie de la documentation et des tutoriels étaient rédigés en C++. Si vous avez du mal à trouver des tutoriels et de l’aide en ligne pour Python, il vaudrait peut-être la peine d’examiner les solutions en C++, car les deux API s’équivalent largement et il est facile de passer de l’une à l’autre.

Technologie en vedette : perceptron multicouche pour le filtrage collaboratif

Le filtrage collaboratif est une approche abondamment utilisée avec les systèmes de recommandation. Les méthodes de filtrage collaboratif reposent sur le comportement, les activités ou les préférences de l’utilisateur, et prédisent ce que ce dernier aimera d’après le comportement des utilisateurs qui lui ressemblent.

Un perceptron multicouche est une sorte de réseau neuronal comprenant une couche d’entrée qui reçoit les données, une couche de sortie qui formule la prévision d’après les données recueillies et, entre les deux, un nombre arbitraire de couches invisibles correspondant aux fonctions non linéaires qui, collectivement, apprennent au système à résoudre des problèmes complexes.

Dans leur article intitulé Neural Collaborative Filtering (He et coll. 2017), les auteurs proposent un cadre d’apprentissage profond pour le filtrage collaboratif. Un des modèles évalués est le perceptron multicouche. Le problème examiné en est un de classification et le modèle est formé avec les longs métrages que les utilisateurs regardent puis notent (les valeurs positives dans l’exemple) ou ne regardent pas (les valeurs négatives).

Ressources

Les sections qui suivent présentent des ressources qui vous en apprendront davantage sur l’usage d’un perceptron multicouche pour le filtrage collaboratif.

Tutoriels

Le tableau ci-dessous dresse une liste partielle des hyperliens menant aux didacticiels que l’auteur juge les plus utiles.

TutorielRésumé
A Beginner’s Guide to Multilayer PerceptronsBillet servant d’introduction aux perceptrons multicouche
Introduction to Recommender SystemsBillet servant d’introduction aux systèmes de recommandation, le filtrage collaboratif surtout
Various Implementations of Collaborative FilteringBillet illustrant diverses applications du filtrage collaboratif
Stanford Lecture Notes, Chapter 9: Recommender Systems 1Exposé de Stanford sur les systèmes de recommandation
Google Machine Learning Crash Course: RecommendationCours autonome de Google sur les systèmes de recommandation.

Documentation

Le tableau qui suit propose de la documentation utile sur le sujet.

DocumentRésumé
Neural Collaborative Filtering (He et al. 2017)Article scientifique proposant un cadre de filtrage collaboratif articulé sur les réseaux neuronaux

Pratiques exemplaires

On adoptera les pratiques générales applicables à l’apprentissage machine. Les ressources en ligne sur le sujet ne manquent pas. En voici quelques-unes.