NeoML : ABBYY choisit l’open source pour son framework de machine learning

Unifier les capacités de plusieurs frameworks d’apprentissage automatique : c’est l’objectif de NeoML, qu’ABBYY vient d’ouvrir à la communauté.

ABBYY vient d’ouvrir NeoML à la communauté.

L’éditeur américain est à l’origine de cette bibliothèque C++ destinée à la conception de modèles d’apprentissage automatique. Il l’exploite en interne pour réaliser des tâches dans les domaines de la vision par ordinateur et du traitement du langage naturel.

Le projet a consisté à unifier les capacités de nombreuses bibliothèques déjà disponibles : Caffe, Liblinear, TensorFlow, XGBoost, etc. Et à y greffer une interface C++, langage dans lequel sont majoritairement écrits les logiciels ABBYY.

Cette unification s’est assortie d’optimisations. Avec, par exemple, le choix de s’inspirer de Caffe pour représenter les données sous forme de blobs plutôt que de tensors. Ou encore la décision de ne pas s’appuyer sur AVX au niveau CPU.

Sur mobile aussi

L’implémentation des réseaux de neurones sur NeoML prend aujourd’hui en charge une centaine de types de couches. Si les travaux initiaux se sont portés sur les plates-formes x86, la question de l’intégration sur mobile a fini par se poser. D’autant plus qu’ABBYY a dans son portefeuille des SDK destinés au traitement de texte et d’images sur les smartphones.

L’éditeur a d’abord expérimenté des solutions tierces : TensorFlow Lite sur Android et Core ML sur iOS. Il a finalement décidé de développer sa propre solution, qui n’exploite encore que marginalement les GPU (avec Vulkan et Metal).

La prise en charge des GPU est également effective sur Windows, avec la technologie Nvidia CUDA (version 10.2 et ultérieures). Elle ne l’est pas encore sur macOS, ni sur Linux.

NeoML permet de travailler sur une vingtaine d’algorithmes de machine learning et de deep learning. Des interfaces Java et Objective-C sont à disposition pour exploiter les fonctions d’inférence. Il est prévu d’y ajouter Python.

L’importation de modèles issus de frameworks tiers est possible, aussi longtemps qu’ils respectent le format ONNX. En l’état, les performances seront plus élevées sur les modèles développés avec PyTorch.

Au niveau des performances, justement, ABBYY a publié un benchmark. Le réseau de neurones concerné – de dimension 224 x 224 x 3 – est entraîné sur MobileNetV2 pour effectuer de la classification sur le jeu de données ImageNet.

  • Résultats sur Ubuntu 20.04 avec un processeur Intel Core i5-4400 :

Benchmark Core i5

  • Sur un Samsung Galaxy A50 avec puce Exynos 9610 :

Benchmark A50

  • Et sur un iPhone Xs avec puce A12 :

Benchmark iPhone Xs

Illustration principale © isak55 – Shutterstock