Photo de Quino Al sur Unsplash
Les récents succès de l’IA sont souvent attribués à l’émergence et aux évolutions du GPU. L'architecture du GPU, qui comprend généralement des milliers de multiprocesseurs, une mémoire haute vitesse, des cœurs tenseurs dédiés, etc., est particulièrement bien adaptée pour répondre aux demandes intensives des charges de travail IA/ML. Malheureusement, la croissance rapide du développement de l’IA a entraîné une augmentation de la demande de GPU, ce qui les rend difficiles à obtenir. En conséquence, les développeurs de ML explorent de plus en plus d’options matérielles alternatives pour former et exécuter leurs modèles. Dans des articles précédents, nous avons évoqué la possibilité de se former sur des ASIC IA dédiés tels que Google Cloud TPU, Haban Gaudi et AWS Trainium. Bien que ces options offrent d’importantes opportunités de réduction des coûts, elles ne conviennent pas à tous les modèles ML et peuvent, comme le GPU, également souffrir d’une disponibilité limitée. Dans cet article, nous revenons au bon vieux CPU et revisitons sa pertinence pour les applications ML. Bien que les processeurs soient généralement moins adaptés aux charges de travail ML que les GPU, ils sont beaucoup plus faciles à acquérir. La possibilité d'exécuter (au moins certaines de) nos charges de travail sur CPU pourrait avoir des implications significatives sur la productivité du développement.
Dans des articles précédents (par exemple ici), nous avons souligné l'importance d'analyser et d'optimiser les performances d'exécution des charges de travail IA/ML comme moyen d'accélérer le développement et de minimiser les coûts. Bien que cela soit crucial quel que soit le moteur de calcul utilisé, les outils de profilage et les techniques d'optimisation peuvent varier considérablement d'une plateforme à l'autre. Dans cet article, nous aborderons certaines des options d'optimisation des performances liées au processeur. Nous nous concentrerons sur les processeurs CPU Intel® Xeon® (avec Intel® AVX-512) et sur le framework PyTorch (version 2.4) (bien que des techniques similaires puissent également être appliquées à d'autres processeurs et frameworks). Plus précisément, nous exécuterons nos expériences sur une instance Amazon EC2 c7i avec une AMI AWS Deep Learning. Veuillez ne pas considérer notre choix de plate-forme Cloud, de version de CPU, de framework ML ou de tout autre outil ou bibliothèque que nous devrions mentionner, comme une approbation de leurs alternatives.
Notre objectif sera de démontrer que même si le développement de ML sur CPU n'est peut-être pas notre premier choix, il existe des moyens d'« adoucir le coup » et – dans certains cas – peut-être même d'en faire une alternative viable.
Notre intention dans cet article est de démontrer quelques-unes des opportunités d'optimisation ML disponibles sur le processeur. Contrairement à la plupart des tutoriels en ligne sur le thème de l'optimisation du ML sur CPU, nous nous concentrerons sur une charge de travail de formation plutôt que sur une charge de travail d'inférence. Il existe un certain nombre d'outils d'optimisation axés spécifiquement sur l'inférence que nous ne couvrirons pas (par exemple, voir ici et ici).
Veuillez ne pas considérer cet article comme un remplacement de la documentation officielle sur l'un des outils ou techniques que nous mentionnons. Gardez à l’esprit qu’étant donné le rythme rapide du développement de l’IA/ML, certains contenus, bibliothèques et/ou instructions que nous mentionnons peuvent devenir obsolètes au moment où vous lirez ceci. Assurez-vous de vous référer à la documentation la plus récente disponible.
Il est important de noter que l'impact des optimisations dont nous discutons sur les performances d'exécution est susceptible de varier considérablement en fonction du modèle et des détails de l'environnement (par exemple, consultez le degré élevé de variance entre les modèles sur le tableau de bord officiel des performances d'i...
[Courte citation de 8% de l'article original]