Skip to main content

La puce Apple M1 peut-elle entraîner des modèles plus rapidement et moins onéreusement que la Nvidia V100 ?

Analyse du runtime, de la consommation énergétique et des performances d’entraînement avec TensorFlow sur un Mac Mini M1 et une NVIDIA V100
Created on February 5|Last edited on February 2
Ceci est une traduction d'un article en anglais qui peut être trouvé ici.



Résumé

Nous avons exécuté un balayage de 8 configurations différentes sur notre script d’entraînement, et montré que la Apple M1 propose des performances impressionnantes, à la hauteur d’accélérateurs beaucoup plus onéreux et moins efficaces en termes d’énergie, comme la Nvidia V100 pour les architectures et les jeux de données (datasets) de petite taille.




Run set
24
���

Méthodologie

Nous avons entraîné un modèle de vision par ordinateur (computer vision) en utilisant l’architecture MobileNetV2 sur Cifar 10. Nous en avons entraîné un dans ce colabsur un Nvidia V100 et un modèle identique en utilisant le fork tensorflow_macos sur un Mac Mini M1 16 GO. Nous avons fait varier les hyperparamètres suivants en utilisant less Balayages W&B :

  batch_size:
    - 32
    - 64
  img_dim:
    - 96
    - 128
  trainable:
    - true
    - false

Lorsque la variable entraînable est fausse (false), nous n’entraînons que la dernière couche dans le réseau. Lorsque la variable entraînable est vraie (true), nous mettons à jour tous les poids sur MobileNetV2.

On peut observer de meilleurs gains de performance avec la M1 lorsqu’il y a moins de poids à entraîner, probablement dus à l’architecture de mémoire supérieure de la M1.




Trainable
8
Non-Trainable
8


Énergie

Le matériel Apple utilisé était un Mac Mini M1 avec 16 GO de RAM. Tout au long de l’entraînement, le ventilateur est resté silencieux et le boîtier est resté froid au toucher. La supériorité écoénergétique de la M1 pour effectuer la même quantité de calculs que la V100 est remarquable. Le Nvidia V100 utilise un processus en 12 nm contre 5 nm pour la M1, mais le V100 utilise invariablement près de 6 fois plus d’énergie.




Run set
16


Avertissements

La librairie tensorflow est censée choisir le meilleur chemin pour l’accélération par défaut, néanmoins, je constatais des fautes de segmentations récurrentes, à moins que je ne dise explicitement à la librairie d’utiliser le gpu avec le code suivant :Paramétrer le Mac Mini pour qu’il exécute le nouveau package accéléré de TensorFlow n’était pas une partie de plaisir. J’ai découvert que la voie la plus simple pour obtenir les différents packages qui requièrent une compilation est la branche ARM64 de Miniconda. La bibliothèque de TensorFlow est censée choisir le meilleur chemin pour l’accélération par défaut, néanmoins, j’ai constaté des erreurs de segmentations récurrentes – sauf si l’on demande explicitement à la bibliothèque d’utiliser le GPU avec le code suivant :

from tensorflow.python.compiler.mlcompute import mlcompute
mlcompute.set_mlc_device(device_name="gpu")

J’ai choisi MobileNetV2 pour accélérer l’itération. Lorsque j’ai essayé ResNet-50 ou d’autres grands modèles, l’écart entre la M1 et le Nvidia s’est creusé. J’ai également rencontré des erreurs de segmentation lorsque mes inputs excédaient les dimensions 196x196 sur la M1.

De manière générale, il semble que ces Macs d’entrée de gamme ne conviennent jusqu’ici qu’aux petites architectures

J’ai également observé que les essais sur la M1, qui n’ont entrainé que la couche finale du réseau, n’arrivaient pas à converger – ce qui n’était pas le cas sur le Nvidia V100. Après quelques expérimentations, j’ai réussi à obtenir la convergence des essais de la M1 en réduisant le taux d’apprentissage. La raison pour laquelle le taux d’apprentissage était plus délicat sur le matériel M1 n’est pas claire.

Apple M1




Run set
8


Nvidia V100




Run set
8


Conclusion

Nous n’en sommes encore qu’aux premiers jours des analyses, mais ces résultats préliminaires sont très prometteurs. Lorsque Apple sortira du matériel Pro avec plus de cœurs et de RAM, l’entraînement de modèle d’apprentissage automatique sur du matériel Apple pourrait devenir tout à fait courant. Chez W&B, toute notre équipe utilise du matériel Mac pour le développement, et je sais que la plupart de nos membres attendent avec impatience la prochaine génération de matériel Mac. Nous garderons un œil attentif sur le fork tensorflow_macos et à son incorporation prochaine dans le répertoire principal de tensorflow. Je suis aussi curieux de voir si l’équipe PyTorchva décider de s’intégrer avec les librairies Apples ML Compute , il y a une discussion en cours à ce sujet sur Github.

Notre version la plus récente de la bibliothèque wandb (0.10.13) capture automatiquement les mesures GPU du matériel Apple M1 comme vous pouvez le voir dans ce rapport.

Nous avons hâte de voir d’autres primo adoptants le tester ! Merci de nous envoyer vos commentaires ou vos questions concernant ces résultats, ici, dans ce rapport.


Iterate on AI agents and models faster. Try Weights & Biases today.