Application mobile: La version PyTorch 1.10 inclut les API CUDA Graphs, les améliorations du compilateur et la prise en charge d’Android NNAPI

PyTorch, le framework d’apprentissage en profondeur open source de Facebook, a annoncé la sortie de la version 1.10 qui inclut une intégration avec les API CUDA Graphs et les mises à jour du compilateur JIT pour augmenter les performances du processeur, ainsi qu’une prise en charge bêta de l’API Android Neural Networks (NNAPI). De nouvelles versions des bibliothèques spécifiques au domaine TorchVision et TorchAudio ont également été publiées.

L’équipe PyTorch a souligné les principales caractéristiques de la version dans un récent article de blog. La nouvelle version fait passer plusieurs fonctionnalités de formation distribuées du statut bêta à stable, ainsi que le module FX et le module torch.specl. La version comprend plusieurs mises à jour pour améliorer les performances du processeur, notamment une intégration avec les API CUDA Graphs pour réduire les frais généraux du processeur et un compilateur JIT basé sur LLVM qui peut fusionner plusieurs opérations. La prise en charge d’Android NNAPI est passée de prototype à stable, y compris la possibilité d’exécuter des modèles sur un hôte à des fins de test. La version inclut également TorchX, un nouveau SDK pour un déploiement de production plus rapide d’applications d’apprentissage en profondeur. Dans l’ensemble, la version 1.10 contient plus de 3 400 commits de 426 contributeurs depuis la version 1.9.

La prise en charge des prototypes pour Android NNAPI, qui permet aux applications Android d’utiliser des accélérateurs matériels tels que les GPU et les unités de traitement neuronal (NPU), a été ajoutée l’année dernière. La nouvelle version déplace la fonctionnalité en version bêta et ajoute plusieurs fonctionnalités, notamment la couverture d’un plus grand nombre d’opérations, des formes de tenseur flexibles au temps de chargement et la possibilité de tester un modèle sur un hôte mobile. Une autre fonctionnalité bêta de la version est l’intégration des API CUDA Graphs. CUDA Graphs améliore les performances d’exécution pour les charges de travail liées au processeur en capturant et en rejouant un flux de travail envoyé à un GPU ; cela compromet la flexibilité de l’exécution dynamique en échange de l’omission de la configuration et de la répartition du travail, réduisant ainsi la surcharge du processeur.

Cette version déplace plusieurs fonctionnalités de la formation distribuée de la version bêta à la version stable, notamment : le module Remote, qui fournit un RPC transparent pour les sous-classes de nn.Module ; Crochet de communication DDP, qui permet de remplacer la façon dont les données distribuées communiquent en parallèle les gradients entre les processus ; et ZeroRedundancyOptimizer, qui réduit la quantité de mémoire requise pendant l’entraînement. Le module torch.specl, qui fournit des API et des fonctions similaires au module spécl SciPy, passe également à stable.

Le module FX, une « plate-forme Python pour transformer et abaisser les programmes PyTorch », est passé de la version bêta à la version stable. Ses trois composants principaux sont un traceur symbolique, une représentation intermédire et un générateur de code Python. Ces composants permettent aux développeurs de convertir une sous-classe de module en une représentation graphique, de modifier le graphique dans le code, puis de convertir le nouveau graphique en code source Python qui est automatiquement compatible avec le système d’exécution rapide PyTorch existant. L’objectif de FX est de permettre aux développeurs d’écrire des transformations personnalisées de leur propre code personnalisé ; par exemple, pour effectuer la fusion de l’opérateur ou pour insérer l’instrumentation. La dernière version fait passer le module de la version bêta à l’état stable.

Dans une discussion sur la sortie sur Hacker News, un utilisateur a émis l’hypothèse que des fonctionnalités telles que FX indiquaient que PyTorch ressemblait davantage à JAX. Horace He, un développeur de PyTorch, a répondu :

FX est plus une boîte à outils pour écrire des transformations sur vos modules FX que « se déplacer dans la direction de JAX » (bien qu’il y ait certainement des similitudes !). en tant que 1. transformations composables, et 2. un mode de programmation fonctionnel (lié à ses transformations de fonction). Je dirais que Pytorch se dirige vers le premier mais pas le second.

JAX a été open-source par Google en 2019 et est décrit comme une bibliothèque pour « la recherche en machine learning haute performance ». Le principal framework d’apprentissage en profondeur de Google, TensorFlow, est le principal rival de PyTorch et a publié la version 2.6 plus tôt cette année.

Les notes de version et le code de PyTorch 1.10 sont disponibles sur GitHub.

.

#version #PyTorch #inclut #les #API #CUDA #Graphs #les #améliorations #compilateur #prise #charge #dAndroid #NNAPI