Accueil Intelligence artificielle Posit AI Blog : torche 0.10.0

Posit AI Blog : torche 0.10.0

0
Posit AI Blog : torche 0.10.0


Nous sommes heureux d’annoncer que torch v0.10.0 est désormais sur CRAN. Dans cet article de blog, nous soulignons certains des changements introduits dans cette version. Vous pouvez consulter le journal des modifications complet ici.

Précision mixte automatique

L’Automatic Mixed Precision (AMP) est une technique qui permet une formation plus rapide des modèles d’apprentissage profond, tout en maintenant la précision du modèle en utilisant une combinaison de formats à virgule flottante simple précision (FP32) et demi-précision (FP16).

Afin d’utiliser la précision mixte automatique avec la torche, vous devrez utiliser le with_autocast
sélecteur de contexte pour permettre à Torch d’utiliser différentes implémentations d’opérations pouvant s’exécuter avec une demi-précision. En général, il est également recommandé de mettre à l’échelle la fonction de perte afin de préserver les petits gradients, car ils se rapprochent de zéro en demi-précision.

Voici un exemple minimal, en omettant le processus de génération de données. Vous pouvez trouver plus d’informations dans le article sur l’ampli.

...
loss_fn <- nn_mse_loss()$cuda()
net <- make_model(in_size, out_size, num_layers)
opt <- optim_sgd(net$parameters, lr=0.1)
scaler <- cuda_amp_grad_scaler()

for (epoch in seq_len(epochs)) {
  for (i in seq_along(data)) {
    with_autocast(device_type = "cuda", {
      output <- net(data[[i]])
      loss <- loss_fn(output, targets[[i]])  
    })
    
    scaler$scale(loss)$backward()
    scaler$step(opt)
    scaler$update()
    opt$zero_grad()
  }
}

Dans cet exemple, l’utilisation d’une précision mixte a conduit à une accélération d’environ 40 %. Cette accélération est encore plus importante si vous effectuez simplement une inférence, c’est-à-dire si vous n’avez pas besoin d’augmenter la perte.

Binaires pré-construits

Avec les binaires prédéfinis, l’installation de Torch devient beaucoup plus facile et plus rapide, surtout si vous êtes sous Linux et utilisez les versions compatibles CUDA. Les binaires prédéfinis incluent LibLantern et LibTorch, deux dépendances externes nécessaires pour exécuter Torch. De plus, si vous installez les versions compatibles CUDA, les bibliothèques CUDA et cuDNN sont déjà incluses.

Pour installer les binaires prédéfinis, vous pouvez utiliser :

problème ouvert par @egillax, nous avons pu trouver et corriger un bug qui rendait très lente les fonctions de torche renvoyant une liste de tenseurs. La fonction au cas où était torch_split().

Ce problème a été résolu dans la version 0.10.0, et s’appuyer sur ce comportement devrait désormais être beaucoup plus rapide. Voici un benchmark minimal comparant la v0.9.1 à la v0.10.0 :

récemment annoncé livre ‘Deep Learning et calcul scientifique avec R torch‘.

Si vous souhaitez commencer à contribuer à Torch, n’hésitez pas à nous contacter sur GitHub et à consulter notre guide de contribution.

Le journal des modifications complet pour cette version peut être trouvé ici.

LAISSER UN COMMENTAIRE

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