paint-brush
Un aperçu du paysage des chargeurs de données : résumé et introductionpar@serialization

Un aperçu du paysage des chargeurs de données : résumé et introduction

Trop long; Pour lire

Dans cet article, les chercheurs soulignent que les chargeurs de données sont essentiels à l'amélioration de la formation en ML, en comparant les bibliothèques en termes de fonctionnalités, de convivialité et de performances.
featured image - Un aperçu du paysage des chargeurs de données : résumé et introduction
The Serialization Publication HackerNoon profile picture
0-item

Auteurs:

(1) Iason Ofeidis, Département de génie électrique et Yale Institute for Network Science, Yale University, New Haven {Contribution égale} ;

(2) Diego Kiedanski, Département de génie électrique et Yale Institute for Network Science, Yale University, New Haven {Contribution égale} ;

(3) Leandros TassiulasLevon Ghukasyan, Activeloop, Mountain View, Californie, États-Unis, Département de génie électrique et Yale Institute for Network Science, Yale University, New Haven.

Tableau des liens

ABSTRAIT

Les chargeurs de données, chargés de déplacer les données du stockage vers les GPU tout en entraînant des modèles d'apprentissage automatique, pourraient détenir la clé pour améliorer considérablement les performances des tâches de formation. Les avancées récentes se sont révélées prometteuses non seulement en réduisant considérablement le temps de formation, mais également en offrant de nouvelles fonctionnalités telles que le chargement de données à partir d'un stockage distant comme S3. Dans cet article, nous sommes les premiers à distinguer le chargeur de données en tant que composant distinct du flux de travail Deep Learning (DL) et à décrire sa structure et ses fonctionnalités. Enfin, nous proposons une comparaison complète des différentes bibliothèques de chargement de données disponibles, de leurs compromis en termes de fonctionnalité, de convivialité et de performances, ainsi que des informations qui en découlent.

1. INTRODUCTION

La formation d'un modèle d'apprentissage automatique (profond) nécessite un ensemble de données, un modèle et du matériel, ce qui, pour les problèmes réels, implique un ou plusieurs GPU.


Nous souhaitons toujours réduire le temps de calcul total requis pour entraîner un modèle. Ceci est souhaitable pour plusieurs raisons : des coûts inférieurs, une itération plus facile et plus accessible aux petites équipes, entre autres.


La relation entre les principaux composants d'un pipeline ML et la durée d'exécution est souvent explicite : un ensemble de données plus volumineux prend plus de temps, un modèle plus volumineux prend plus de temps et un GPU plus rapide réduit la durée d'exécution totale. Une pièce clé du puzzle qui est souvent négligée est le lien entre toutes ces pièces : le chargeur de données. Le chargeur de données est chargé de charger les données depuis son stockage permanent (RAM, disque ou réseau), d'appliquer les transformations nécessaires et d'envoyer les données transformées au périphérique approprié afin que le modèle puisse les ingérer.


La plupart des développeurs supposent que le chargeur de données par défaut dans leur framework d'apprentissage automatique respectif (Pytorch, Tensorflow, Jax) est déjà optimisé pour leur application et ne s'appuient pas souvent sur des chargeurs de données tiers. Chose intéressante, il a été récemment démontré que les chargeurs de données peuvent être l'un des goulots d'étranglement les plus importants des pipelines ML (Mohan et al., 2020). En conséquence, nous avons vu de nombreuses nouvelles bibliothèques et projets de recherche dédiés à l’optimisation et à l’amélioration des performances du chargeur de données.


Par exemple, FFCV (Leclerc et al., 2022), une nouvelle bibliothèque open source développée par une équipe de recherche du MIT, a réussi à former ImageNet en une fraction du temps qu'il faudrait avec le chargeur de données PyTorch par défaut. De tels gains peuvent réduire considérablement les coûts opérationnels des entreprises et des équipes de recherche qui dépendent d'une infrastructure en tant que service (IaaS), comme Amazon Web Services (AWS) et Google Cloud Platform (GPC).


Une autre fonctionnalité prometteuse offerte par les chargeurs de données est la possibilité de charger des données stockées à distance ; par exemple, à partir d'un compartiment S3. Cela présente de nombreux avantages pratiques : le temps nécessaire à la configuration locale de l'ensemble de données est évité, la capacité disque requise sur la machine informatique est réduite et le risque que les membres de l'équipe utilisent différentes versions du même ensemble de données est diminué. L'inconvénient naturel de devoir diffuser les données pendant l'entraînement est que, généralement, les vitesses de transfert du réseau sont plus lentes que celles des E/S disque et, par conséquent, l'entraînement du modèle devrait prendre plus de temps. Fait intéressant, nous avons observé que certaines bibliothèques telles que Hub (Team, 2022a) et Deep Lake (Hambadzumyan et al., 2022) atteignent de meilleures performances sur le réseau que le chargeur de données Pytorch par défaut lisant les données localement pour certains scénarios. Cela est possible car le chargeur de données parvient à pré-récupérer les données requises avant que le GPU n'en ait besoin. Nous proposerons une discussion plus approfondie dans la section 5.


Toutes les bibliothèques ne prennent pas en charge le chargement à distance, et celles qui le font ne s'intègrent pas nécessairement aux mêmes services de stockage à distance. Étant donné que le nombre de bibliothèques disponibles implémentant des chargeurs de données augmente, nous avons décidé de créer un benchmark complet pour éclairer l'état actuel de la technique, quels problèmes semblent avoir déjà été résolus et découvrir les domaines d'amélioration les plus prometteurs à l'avenir. recherche.


À ce stade, il convient de mentionner qu'une différence particulière par rapport à nos expériences et à d'autres travaux tels que (Kumar & Sivathanu, 2020), (Mohan et al., 2020) est que nous nous concentrons sur les tâches qui s'exécutent sur des postes de travail petits à moyens avec capacité limitée (GPU, RAM, SSD). Ceux-ci sont plus susceptibles de refléter le matériel disponible pour la plupart des individus et des petites équipes du secteur, pour lesquels le budget ne permet pas l'utilisation de clusters à grande échelle.

1.1 Cotisations

Nous pouvons résumer nos contributions comme suit :


• Code open source : nous avons construit un benchmark open source qui compare les bibliothèques de chargement de données les plus populaires dans Pytorch[1]. Le projet restera disponible pour la communauté afin que de nouvelles bibliothèques et ensembles de données puissent être ajoutés à mesure que l'intérêt pour eux augmente. Nous prévoyons également de mettre à jour les résultats numériques obtenus dans ces tests suite à toute mise à jour majeure de l'une des bibliothèques évaluées dans cet article.


• Viabilité de la formation à distance : nous montrons qu'il est possible de former un modèle d'apprentissage automatique en utilisant un flux de données sur une connexion Internet publique dans des circonstances raisonnables. Nous pointons notamment l’impact de l’informatique au service des données. Notre résultat est différent de celui de (Mohan et al., 2020) puisque nous ne supposons pas que l'ensemble de données est mis en cache localement après le téléchargement.


• Optimisation des hyperparamètres pour la vitesse : les approches hyperparamétriques traditionnelles visent à augmenter la précision globale du modèle en cours d'entraînement. Dans cet article, nous montrons comment nous pouvons également optimiser la vitesse (échantillons traités au fil du temps) en tant qu'indicateur du temps d'exécution total. Cette optimisation dépend du matériel, il est donc logique de l'effectuer avant les tâches de longue durée. Ce processus devrait être au moins un ordre de grandeur plus rapide que les mesures de temps de précision équivalentes.


Cet article est disponible sur arxiv sous licence CC 4.0.


[1] Dépôt Github : https://github.com/smartnets/dataloaderbenchmarks