Big Data et MATLAB

Comment exploiter des données volumineuses et véloces

Le concept de Big Data fait référence aux gros volumes de données, générées rapidement et prêtes pour analyse.

La numérisation continue de l’information est l'un des moteurs principal de ce phénomène. En effet, il existe de plus en plus de dispositifs et mécanismes d’acquisition et génération de données: flux continus transmis par capteurs, imagerie satellitaire et médicale, vidéos des caméras de sécurité, mais aussi données de marchés financiers et d’opérations de vente au détail. Les tailles de ces données peuvent être de l’ordre du Giga ou Téra-octets et peuvent augmenter de plusieurs Méga ou Giga-octets par jour.

Bien que les Big Data permettent aux analystes et data scientists d’approfondir leurs connaissances et de prendre de meilleures décisions, ils présentent également certains inconvénients :

  • Volumétrie des données (pouvant dépasser la capacité de mémoire disponible)
  • Temps (calculs trop longs et/ou flux trop rapides empêchant le stockage de l’information).

Les algorithmes standards ne sont généralement pas adaptés à ces contraintes et il n’y a pas de solution unique au problème. Ainsi, pour relever ces défis, MATLAB propose plusieurs outils et concepts.

Le Big Data avec MATLAB

  1. Environnement informatique 64 bits : La version 64 bits de MATLAB augmente considérablement le volume de données pouvant être stockées en mémoire, généralement jusqu'à 2 000 fois plus qu'un programme 32 bits. Tandis qu'un programme 32 bits ne permet d'utiliser que 2 Go de mémoire, la version 64 bits de MATLAB permet d'utiliser la totalité de la mémoire physique du système d'exploitation (i.e. 500 Go sous Windows 8 sur ordinateur de bureau et 4 To sous Windows Server).
  2. Variables mappées en mémoire : La fonction memmapfile de MATLAB permet de ‘mapper’ un fichier, ou une partie de fichier, à une variable MATLAB en mémoire. Ceci facilite l’accès au disque, pour des données volumineuses ne pouvant être stockées dans la mémoire vive ou trop longues à charger.
  3. Variables sur disque : Grâce à des commandes d'indexation, la fonction matfile permet d'accéder aux variables MATLAB directement du fichier .MAT stocké sur le disque, et sans avoir à charger l'ensemble des variables en mémoire. Ceci permet de traiter par blocks des jeux de Big Data dont la taille excède la capacité de la mémoire.
  4. Datastore : La fonction datastore permet de prédéfinir les données à importer (fichiers plats volumineux et/ou base de données à l’aide de la Database Toolbox), ainsi que les transformations à appliquer. L’importation peut être gérée de manière incrémentielle et se faire de manière itérative avec des boucles while.
  5. Fonctions intrinsèques « multithreadés » :  De nombreuses fonctions mathématiques intégrées dans MATLAB, comme fft, inv et eig sont en « multithread». La parallèlisation de ces fonctions tire pleinement profit d'un ordinateur multi cœur, et permet d’effectuer du calcul haute performance sur des données Big Data.
  6. Calculs GPU : Si vous possédez des cartes graphiques (GPU), les fonctions mathématiques optimisées pour GPU comprises dans la Parallel Computing Toolbox fournissent encore plus de performance pour les données Big Data.
  7. Calcul Parallèle : La Parallel Computing Toolbox propose une boucle for parallèle qui exécute le code et les algorithmes MATLAB en parallèle sur les différents cœurs d’ordinateurs multiprocesseurs. Pour aller plus loin, le MATLAB Distributed Computing Server, vous permet de soumettre des jobs en parallèle sur des fermes de calculs (ou clusters) pouvant contenir des milliers de cœurs.
  8. Le Cloud : Le MATLAB Distributed Computing Server permet également de déporter les calculs sur des plateformes « cloud » tel que « Amazon Elastic Computing Cloud (EC2)”», où les calculs calculs peuvent être parallélisés au choix sur des centaines, voire des milliers de cœurs. Le could permet également de traiter des données Big Data sans avoir à acquérir ou gérer son propre cluster ou serveur.
  9. Tableaux distribués : La Parallel Computing Toolbox et le MATLAB Distributed Computing Server permettent de manipuler des matrices et des tableaux multidimensionnels distribués sur la mémoire d'un cluster d'ordinateurs. Cette approche permet de stocker et d'effectuer des calculs sur des données Big Data trop grosses pour la mémoire d'un seul ordinateur.
  10. MapReduce : La fonctionnalité ‘MapReduce’ est intégrée dans MATLAB. Cette technique de programmation puissante et établie, peut être utilisée pour analyser les données directement sur votre bureau, ou encore pour lancer des algorithmes MATLAB sur la plateforme de données Hadoop.
  11. Algorithmes de flux de données : Grâce aux « systèmes objets », le traitement des flux de données entrants (volumineux/véloces) peut se faire en continu. Ainsi, le code C/C++ généré à partir des algorithmes MATLAB à l'aide du MATLAB Coder, peut être exécuté sur des systèmes haute performance en temps réel.
  12. Traitement d'images par bloc : La fonction blockproc de l’Image Processing Toolbox permet de travailler avec des images très volumineuses et les traite efficacement bloc par bloc. Les calculs peuvent être parallélisés (sur plusieurs cœurs et/ou GPU) en cas d'utilisation de la Parallel Computing Toolbox.
  13. Machine Learning : L'apprentissage automatique, aussi appelé ‘Machine Learning’, est de plus en plus utilisé pour l’extraction de paramètres et le développement de modèles prédictifs à partir de données Big Data. De nombreux algorithmes d'apprentissage automatique, dont : les arbres de décision ‘boostés’ (i.e. Gradient Boosting Method) et agrégés, les algorithmes k-means et de clustering hiérarchique, la technique des K plus proche voisin, les mélanges gaussiens, l'algorithme espérance-maximisation (EM), les chaînes de Markov cachées et les réseaux de neurones sont disponibles dans la Statistics and Machine Learning Toolbox et la Neural Network Toolbox.
  14. Hadoop : Les fonctionnalités ‘MapReduce’ et datastore, développées sur vos algorithmes MATLAB, peuvent être directement exécutées sur Hadoop. Typiquement, datastore ouvre l’accès à une partie de vos données stockées dans HDFS, qui seront utilisées pour développer vos algorithmes de MapReduce dans MATLAB. Ensuite, le MATLAB Distributed Computing Server permet d’exécuter vos algorithmes dans le cadre du framework Hadoop-MapReduce sur l'ensemble des données stockées dans HDFS. Le MATLAB Compiler permet l’intégration de modèles MATLAB en production dans des systèmes Hadoop, en créant des applications ou librairies à partir de vos algorithmes de MapReduce.



Voir aussi : MATLAB, Fichiers HDF5, Importation de données volumineuses (dans Database Toolbox)