A l'aide d'une bibliothèque JavaScript, il est désormais possible de faire tourner des réseaux neuronaux dans une page web en s’appuyant sur l'API d’accélération graphique que l’on trouve dans la plupart des navigateurs web modernes. Développée par une équipe d'étudiants diplômés du MIT (Kevin Kwok, Guillermo Webster, Anish Athalye et Logan Engstrom), TensorFire peut exécuter des modèles d'apprentissage machine TensorFlow sur n'importe quel processeur graphique, sans avoir besoin d’un middleware GPU spécifique comme c’est le cas des bibliothèques d'apprentissage machine telles que Keras-js. En ce sens, TensorFire franchit un pas supplémentaire dans la démocratisation de l'apprentissage machine, puisqu’il peut fonctionner sur le hardware et avec les logiciels de l’utilisateur moyen. La bibliothèque profite aussi des progrès réalisés dans les modèles prévisionnels : en effet, il est possible d’exécuter ces modèles sans avoir besoin d’une quantité énorme de ressources, ce qui n’était pas le cas auparavant.
Des capacités d'apprentissage machine dans le navigateur
TensorFire fonctionne à l'aide de WebGL, un système multi plate-forme qui accélère le rendu graphique dans les navigateurs en s’appuyant sur les GPU. WebGL prend en charge le GLSL, un langage de programmation proche du langage C, utilisé pour écrire des petits programmes appelés shaders qui servent à traiter les données directement au niveau du GPU. En général, les shaders tournent dans le pipeline WebGL où ils sont utilisés pour gérer le rendu des graphiques, par exemple la représentation des ombres ou d'autres effets visuels.
Mais TensorFire utilise les shaders autrement : il s’en sert pour faire du calcul parallèle pour générer des prévisions à partir des modèles TensorFlow. TensorFire est également livré avec une bibliothèque pour importer des modèles TensorFlow et Keras existants. Le framework permet de déployer un modèle d’apprentissage défini et de servir les prévisions localement, au niveau du navigateur. L'utilisateur n'a pas besoin de télécharger, d'installer ou de compiler quoi que ce soit. Tout le travail est effectué directement dans le navigateur. Toutes les données utilisées pour effectuer les prévisions sont également traitées au niveau du client.
Tous les GPU sont pris en charge
Par ailleurs, tous les GPU, quel que soit le fabricant - AMD ou Nvidia - sont pris en charge. À titre d’exemple, TensorFire peut utiliser un réseau de neurones pour récupérer le style de mappage d’une image et l’appliquer sur une autre image. Le téléchargement du modèle et la compilation du shader pour le pipeline sont les étapes les plus longues. Mais l'exécution elle-même ne prend qu'une seconde ou deux. Les créateurs de TensorFire affirment que leur solution est plus rapide que d’autres. L’échange de données entre le GPU et le CPU est souvent marqué par une baisse de performance. TensorFire évite ce goulet d’étranglement en maintenant le plus de données possible au niveau du GPU.
L’approche de TensorFire comporte deux avantages majeurs : la portabilité et la commodité. Les navigateurs Web actuels tournent sur la plupart des systèmes d'exploitation et des plateformes matérielles, et aujourd’hui, même les smartphones bon marché sont équipés de GPU performant. L’essentiel du travail nécessaire pour obtenir des résultats utiles à partir de modèles d'apprentissage machine se passe au niveau du pipeline, que ce soit l’apprentissage lui-même ou la délivrance des prévisions. Il est donc particulièrement intéressant de réaliser l’essentiel de ce processus dans un navigateur Web, au moins pour certaines tâches. Selon les créateurs de TensorFire, leur bibliothèque présente un autre avantage : elle permet de déployer entièrement les prévisions au niveau du client. Mais cet avantage est discutable dans le cas où le modèle et les données sont déployés dans le cloud. Cependant, l’approche convient parfaitement aux applications basées sur un modèle d’apprentissage de petite taille, quand les données se trouvent côté client et que l'utilisateur n’aime pas télécharger de données.
Des modèles d'apprentissage machine plus efficaces
TensorFire présente un troisième avantage : en théorie, grâce aux gains de performance qu’il tire des GPU de Nvidia et d’AMD, il s’affranchit des restrictions d’usage des cartes graphiques pour l’apprentissage machine. Historiquement, la norme CUDA de Nvidia a toujours été la référence pour accélérer les tâches d'apprentissage machine à l’aide des GPU, ses performances étant meilleures que celles de la norme ouverte OpenCL, néanmoins plus agnostique en terme de hardware. Certes, AMD cherche toujours à améliorer les performances de l’OpenCL, mais TensorFire permet aux utilisateurs et aux développeurs de contourner complètement le problème. TensorFire profite également d'un autre phénomène : celui qui consiste à rendre les modèles d'apprentissage machine plus compacts et plus efficaces, malgré une légère perte de précision (généralement indétectable). Cette approche qualifiée de « Low-precision quantized tensor » permet de déployer des modèles plus petits au niveau du client et d’accélérer la livraison des prévisions. Selon les auteurs de TensorFire, cette approche permet aussi au logiciel de fonctionner sur une gamme plus étendue de GPU et de navigateurs, en particulier les navigateurs qui ne prennent pas en charge la totalité des extensions WebGL.
L'équipe de TensorFire prévoit de livrer la bibliothèque en open source sous licence MIT. Les développeurs espèrent ainsi que ce travail d'accélération effectué dans TensorFire sera décliné dans de multiples applications, même celles qui n'ont rien à voir avec TensorFlow ou avec l’apprentissage machine. Les auteurs du framework expliquent notamment que l'API de bas niveau GLSL de TensorFire « peut également servir à réaliser un calcul arbitraire dans le traitement parallèle », ce qui signifie qu’il est possible de s’appuyer sur cette API pour construire d'autres frameworks utilisant l’accélération GPU et effectuer un calcul côté client au niveau du navigateur.