Accueil Intelligence artificielle Blog Posit AI : lumière 0.4.0

Blog Posit AI : lumière 0.4.0

0
Blog Posit AI : lumière 0.4.0



Une nouvelle version de luz est désormais disponible sur CRAN. luz est une interface de haut niveau pour torch. Il vise à réduire le code passe-partout nécessaire à la formation des modèles de torche tout en étant aussi flexible que possible, afin que vous puissiez l’adapter pour exécuter toutes sortes de modèles d’apprentissage en profondeur.

Si vous souhaitez débuter avec Luz, nous vous recommandons de lire le
article de blog de la version précédente aussi bien que ‘S’entraîner avec Luz’ chapitre du « Deep Learning et calcul scientifique avec la torche R » livre.

Cette version ajoute de nombreuses fonctionnalités plus petites et vous pouvez consulter le journal des modifications complet ici. Dans cet article de blog, nous mettons en évidence les fonctionnalités qui nous intéressent le plus.

Prise en charge d’Apple Silicon

Depuis torche v0.9.0, il est possible d’exécuter des calculs sur le GPU des Mac équipés d’Apple Silicon. Cependant, luz n’utiliserait pas automatiquement les GPU, mais utiliserait plutôt les modèles sur CPU.

À partir de cette version, luz utilisera automatiquement le périphérique « mps » lors de l’exécution de modèles sur des ordinateurs Apple Silicon, et vous permettra ainsi de bénéficier des accélérations des modèles en cours d’exécution sur le GPU.

Pour avoir une idée, exécutez un modèle CNN simple sur MNIST à partir de cet exemple pendant une époque sur une puce Apple M1 Pro prendrait 24 secondes lors de l’utilisation du GPU :

  user  system elapsed 
19.793   1.463  24.231 

Alors que cela prendrait 60 secondes sur le CPU :

  user  system elapsed 
83.783  40.196  60.253 

C’est une belle accélération !

Notez que cette fonctionnalité est encore quelque peu expérimentale et que toutes les opérations de torche ne sont pas prises en charge pour s’exécuter sur MPS. Il est probable que vous voyiez un message d’avertissement expliquant qu’il pourrait être nécessaire d’utiliser la solution de secours du processeur pour certains opérateurs :

[W MPSFallback.mm:11] Warning: The operator 'at:****' is not currently supported on the MPS backend and will fall back to run on the CPU. This may have performance implications. (function operator())

Points de contrôle

La fonctionnalité de point de contrôle a été refactorisée dans luz, et il est désormais plus facile de redémarrer les entraînements s’ils plantent pour une raison inattendue. Il suffit d’ajouter un resume rappel lors de l’entraînement du modèle :

# ... model definition omitted
# ...
# ...
resume <- luz_callback_resume_from_checkpoint(path = "checkpoints/")

results <- model %>% fit(
  list(x, y),
  callbacks = list(resume),
  verbose = FALSE
)

Il est également plus facile désormais de sauvegarder l’état du modèle à chaque époque, ou si le modèle a obtenu de meilleurs résultats de validation. Apprenez-en davantage avec le « Points de contrôle » article.

Corrections de bugs

Cette version inclut également quelques petites corrections de bugs, comme le respect de l’utilisation du processeur (même lorsqu’un appareil plus rapide est disponible) ou la rendre plus cohérente les environnements de métriques.

Il y a cependant une correction de bug que nous aimerions particulièrement souligner dans cet article de blog. Nous avons constaté que l’algorithme que nous utilisions pour accumuler la perte pendant l’entraînement avait une complexité exponentielle ; ainsi, si vous aviez plusieurs étapes par époque pendant votre formation de modèle, luz serait très lente.

Par exemple, en considérant un modèle factice fonctionnant sur 500 pas, luz prendrait 61 secondes pour une époque :

Epoch 1/1
Train metrics: Loss: 1.389                                                                
   user  system elapsed 
 35.533   8.686  61.201 

Le même modèle avec le bug corrigé prend désormais 5 secondes :

Epoch 1/1
Train metrics: Loss: 1.2499                                                                                             
   user  system elapsed 
  4.801   0.469   5.209

Cette correction de bug entraîne une accélération 10x pour ce modèle. Cependant, l’accélération peut varier en fonction du type de modèle. Les modèles qui sont plus rapides par lot et ont plus d’itérations par époque bénéficieront davantage de cette correction de bug.

Merci beaucoup d’avoir lu cet article de blog. Comme toujours, nous apprécions chaque contribution à l’écosystème de la torche. N’hésitez pas à ouvrir des tickets pour suggérer de nouvelles fonctionnalités, améliorer la documentation ou étendre la base de code.

La semaine dernière, nous avons annoncé la sortie de Torch v0.10.0 – voici un lien au billet de blog de sortie, au cas où vous l’auriez manqué.

photo par Peter John Maridable sur Unsplash

Réutilisation

Le texte et les figures sont sous licence Creative Commons Attribution CC PAR 4.0. Les figures réutilisées à partir d’autres sources ne relèvent pas de cette licence et sont reconnaissables à une note dans leur légende : « Figure de… ».

Citation

Pour l’attribution, veuillez citer ce travail comme

Falbel (2023, April 17). Posit AI Blog: luz 0.4.0. Retrieved from https://blogs.rstudio.com/tensorflow/posts/2023-04-17-luz-0-4/

Citation BibTeX

@misc{luz-0-4,
  author = {Falbel, Daniel},
  title = {Posit AI Blog: luz 0.4.0},
  url = {https://blogs.rstudio.com/tensorflow/posts/2023-04-17-luz-0-4/},
  year = {2023}
}

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici