C’est en remarquant cet état de fait et l’absence de solution libre et ouverte pour l’apprentissage automatique au sens large que NVIDIA a décidé de travailler avec la communauté (ce qui n’est pas si fréquent !) pour apporter le calcul sur cartes graphiques à des bibliothèques très présentes dans l’environnement des sciences des données : Apache Arrow (une base de données orientée colonne stockée en mémoire), Pandas (une bibliothèque Python pour la manipulation de jeux de données à l’aide d’objets data frame, des matrices dont les colonnes portent des noms) et scikit-learn (la bibliothèque Python de référence pour l’apprentissage automatique).
Cette solution s’appelle RAPIDS et est déjà disponible (les sources aussi). Elle s’appuie sur Apache Arrow et Pandas pour l’interface : RAPIDS propose notamment une implémentation des data frames sur processeur graphique, nommée cuDF (une bibliothèque toujours en développement : l’implémentation de bas niveau en C et sa couche de liaison Python sont en cours de fusion). La deuxième partie concerne l’apprentissage proprement dit. Là, NVIDIA propose cuML (qui contient le module Python cuSKL, pour faire référence à scikit-learn) pour travailler sur les data frames hébergés sur un processeur graphique. La distribution de RAPIDS inclut aussi XGBoost, un algorithme de dopage très populaire à base d’arbres de décision.
RAPIDS peut d’ores et déjà s’installer, notamment via Docker. Bien évidemment, on peut voir derrière ce mouvement la volonté de NVIDIA de s’assurer que son API propriétaire CUDA est bien présente dans tous les domaines de croissance, au lieu d’OpenCL (qui permettrait d’utiliser le code tel quel sur des processeurs graphiques AMD, par exemple).
Sources : RAPIDS Accelerates Data Science End-to-End, Getting Answers Faster: NVIDIA and Open-Source Ecosystem Come Together to Accelerate Data Science.