En livrant en open source la bibliothèque d'apprentissage machine PyText pour le traitement automatique du langage naturel (TALN ou NLP), Facebook veut faciliter le couplage des projets expérimentaux avec les systèmes de production. Construit avec la bibliothèque PyTorch existante de Facebook pour l'apprentissage machine, utilisée en interne par le réseau social, PyText a été développée pour permettre à l'apprentissage machine d’utiliser les réseaux neuronaux (comme pour le TALN). Dans un message, les ingénieurs de Facebook ont expliqué que ces bibliothèques représentaient « un compromis entre les frameworks optimisés pour l'expérimentation et ceux optimisés pour la production ». Car si les frameworks construits pour l'expérimentation permettaient un prototypage rapide, ils souffraient « d'une latence accrue et d’un usage de mémoire trop important » en production, ont-ils déclaré.

De plus, les frameworks construits pour la production fonctionnent mieux sous charge, mais ils sont plus difficiles à développer rapidement. Selon Facebook, la principale différence de PyText, c’est que son workflow peut être optimisé soit pour l’expérimentation soit pour un usage en production. Il permet soit d’assembler les composants des frameworks pour créer un pipeline TALN complet, soit de décomposer et de réutiliser des morceaux individuels dans d'autres contextes. L’apprentissage de nouveaux modèles peut être réparti sur plusieurs nœuds et il est possible d’entraîner plusieurs modèles en même temps. PyText peut également utiliser de nombreux modèles existants pour la classification de texte, et éviter ainsi de repasser par la phase d’apprentissage.

Des chabots mieux informés

PyText améliore également la compréhension grâce à des modèles contextuels, ce qui permet d'enrichir la compréhension d'un texte dans un modèle en repartant des entrées précédentes. Par exemple, un chatbot pourrait réutiliser les informations collectées dans une discussion précédente pour adapter ses réponses. Une des fonctionnalités de PyText permet de voir aussi comment les systèmes d'apprentissage machine pilotés par Python arrivent à éviter les problèmes de performance pouvant survenir avec le langage. Les modèles PyText sont exportables au format optimisé ONNX pour une inférence rapide avec Caffe2. De cette façon, le processus d'inférence n'est pas limité par le runtime de Python, même si Python sert toujours à assembler le pipeline et à gérer l’apprentissage du modèle.

Récemment passé en version 1.0, PyTorch a été doté de fonctionnalités propres destinées à accélérer l’apprentissage et l'inférence sans être limité par Python. L'une de ces fonctionnalités, Torch Script, compile du code Python JIT pour accélérer son exécution, mais il ne peut fonctionner qu'avec un sous-ensemble du langage. À court terme, PyText devrait être capable de « prendre en charge la modélisation multilangage et s’enrichir de capacités de modélisation, notamment pour faciliter le débogage des modèles et permettre d'autres optimisations en matière d’apprentissage distribué », ont aussi précisé les ingénieurs de Facebook.

Le projet Pytex est disponible sur GitHub.