Maison  >  Article  >  Périphériques technologiques  >  PyTorch 1.12 est publié, prend officiellement en charge l'accélération GPU de la puce Apple M1 et corrige de nombreux bugs

PyTorch 1.12 est publié, prend officiellement en charge l'accélération GPU de la puce Apple M1 et corrige de nombreux bugs

WBOY
WBOYavant
2023-04-12 21:31:03999parcourir

PyTorch 1.12 est publié, prend officiellement en charge l'accélération GPU de la puce Apple M1 et corrige de nombreux bugs

​PyTorch 1.12 est officiellement publié. Les amis qui n'ont pas mis à jour peuvent mettre à jour.

Quelques mois seulement après le lancement de PyTorch 1.11, PyTorch 1.12 est là ! Cette version comprend plus de 3124 commits depuis la version 1.11, complétés par 433 contributeurs. La version 1.12 inclut des améliorations majeures et de nombreuses corrections de bugs.

Avec la sortie de la nouvelle version, la chose la plus discutée est peut-être que PyTorch 1.12 prend en charge la puce Apple M1. ​

PyTorch 1.12 est publié, prend officiellement en charge laccélération GPU de la puce Apple M1 et corrige de nombreux bugs

En fait, dès le mois de mai de cette année, PyTorch a officiellement annoncé qu'il prenait officiellement en charge la formation du modèle d'apprentissage automatique PyTorch accélérée par GPU sur la version M1 de Mac. Auparavant, la formation PyTorch sur Mac ne pouvait utiliser que le processeur, mais avec la sortie de la version 1.12 de PyTorch, les développeurs et les chercheurs peuvent tirer parti des GPU Apple pour accélérer considérablement la formation des modèles.

Présentation de la formation accélérée PyTorch sur Mac​

L'accélération de la formation GPU PyTorch est implémentée en utilisant Apple Metal Performance Shaders (MPS) comme backend. Le backend MPS étend le framework PyTorch pour fournir des scripts et des fonctionnalités permettant de configurer et d'exécuter des opérations sur Mac. MPS optimise les performances de calcul en utilisant la puissance de base affinée pour les caractéristiques uniques de chaque famille de GPU Metal. Le nouvel appareil mappe les graphiques et primitives informatiques d'apprentissage automatique sur le cadre MPS Graph et les noyaux de réglage fournis par MPS.

Chaque Mac équipé des puces développées par Apple dispose d'une architecture de mémoire unifiée, permettant au GPU d'accéder directement à l'intégralité du stockage mémoire. Les responsables de PyTorch affirment que cela fait de Mac une excellente plate-forme d'apprentissage automatique, permettant aux utilisateurs de former localement des réseaux plus grands ou des lots de plus grande taille. Cela réduit les coûts associés au développement basé sur le cloud ou le besoin de puissance de calcul GPU locale supplémentaire. L'architecture de mémoire unifiée réduit également la latence de récupération des données et améliore les performances de bout en bout.

On peut constater que par rapport à la référence du CPU, l'accélération GPU a atteint une amélioration exponentielle des performances d'entraînement :

PyTorch 1.12 est publié, prend officiellement en charge laccélération GPU de la puce Apple M1 et corrige de nombreux bugsPyTorch 1.12 est publié, prend officiellement en charge laccélération GPU de la puce Apple M1 et corrige de nombreux bugs

Avec le support du GPU, la vitesse d'entraînement et d'évaluation dépasse celle du CPU

L'image ci-dessus est le résultat de tests effectués par Apple en avril 2022 sur un système Mac Studio équipé d'Apple M1 Ultra (CPU 20 cœurs, GPU 64 cœurs), 128 Go de mémoire et 2 To SSD. Les modèles de test sont ResNet50 (taille du lot = 128), HuggingFace BERT (taille du lot = 64) et VGG16 (taille du lot = 64). Les tests de performances sont effectués à l'aide de systèmes informatiques spécifiques et reflètent les performances approximatives de Mac Studio.

Autres nouvelles fonctionnalités de PyTorch 1.12

API frontale : TorchArrow

Les responsables de PyTorch ont publié une nouvelle version bêta que les utilisateurs peuvent essayer : TorchArrow. Il s'agit d'une bibliothèque de prétraitement d'apprentissage automatique pour le traitement des données par lots. Il est hautes performances, de style Pandas, et dispose d'une API facile à utiliser pour accélérer les flux de travail de prétraitement et de développement des utilisateurs.

(Beta) Complex32 et Convolutions complexes dans PyTorch

Actuellement, PyTorch prend en charge nativement les nombres complexes, l'autograd complexe, le module complexe et un grand nombre d'opérations complexes (algèbre linéaire et transformée de Fourier rapide). Les nombres complexes sont déjà utilisés dans de nombreuses bibliothèques, notamment torchaudio et ESPNet, et PyTorch 1.12 étend encore les capacités des nombres complexes avec des convolutions complexes et le type de données expérimental complex32, qui prend en charge les opérations FFT de demi-précision. En raison d'un bug dans le package CUDA 11.3, si les utilisateurs souhaitent utiliser plusieurs nombres, il est officiellement recommandé d'utiliser le package CUDA 11.6.

(Beta)Différenciation automatique en mode avant

AD en mode avant permet de calculer des dérivées directionnelles (ou des produits vectoriels jacobiens équivalents) dans la passe avant. PyTorch 1.12 améliore considérablement la couverture AD en mode direct.

BetterTransformer

PyTorch prend désormais en charge plusieurs implémentations fastpath CPU et GPU (BetterTransformer), qui est le module d'encodeur Transformer, y compris les implémentations de TransformerEncoder, TransformerEncoderLayer et MultiHeadAttention (MHA). Dans la nouvelle version, BetterTransformer est 2 fois plus rapide dans de nombreux scénarios courants, en fonction du modèle et des fonctionnalités d'entrée. La nouvelle version de l'API prend en charge la compatibilité avec la précédente API PyTorch Transformer, qui accélérera les modèles existants s'ils répondent aux exigences d'exécution fastpath, ainsi que les modèles de lecture entraînés avec les versions précédentes de PyTorch. PyTorch 1.12 est publié, prend officiellement en charge laccélération GPU de la puce Apple M1 et corrige de nombreux bugsDe plus, la nouvelle version comporte quelques mises à jour :

  • Modules : Une nouvelle fonctionnalité bêta pour les calculs de modules est l'API fonctionnelle. Cette nouvelle API function_call() donne aux utilisateurs un contrôle total sur les paramètres utilisés dans les calculs des modules.
  • TorchData : DataPipe a amélioré la compatibilité avec DataLoader. PyTorch prend désormais en charge les DataPipes basés sur AWSSDK. DataLoader2 a été introduit comme moyen de gérer l'interaction entre DataPipes et d'autres API et backends.
  • nvFuser : nvFuser est le nouveau fusionneur par défaut plus rapide pour la compilation sur les appareils CUDA.
  • Précision de la multiplication matricielle : par défaut, la multiplication matricielle sur le type de données float32 fonctionnera désormais en mode pleine précision, qui est plus lent mais produit des résultats plus cohérents.
  • Bfloat16 : Nouvelles améliorations du type de données Bfloat16 dans la version 1.12 pour fournir des temps de calcul plus rapides pour les types de données moins précis.
  • API FSDP : Sortie en tant que prototype dans la version 1.11, l'API FSDP a atteint la version bêta avec la sortie de la version 1.12, avec quelques améliorations ajoutées.

Pour plus d'informations, veuillez consulter : https://pytorch.org/blog/pytorch-1.12-released/.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer