Les graphiques de calcul dynamique (DCG) sont la manière dont les modèles d'apprentissage profond sont représentés dans PyTorch. En résumé, les graphiques de calcul représentent le flux de données entre les différentes opérations d'un système mathématique : dans le contexte de l'apprentissage profond, ils traduisent essentiellement le code des réseaux neuronaux en un organigramme indiquant les opérations effectuées à chaque nœud et les dépendances entre les différentes couches du réseau. Il s'agit de l'agencement des étapes et des séquences qui transforment les données d'entrée en données de sortie.
Ce qui différencie les graphiques de calcul dynamiques (comme ceux utilisés dans PyTorch) des graphiques de calcul statiques (comme ceux utilisés dans TensorFlow), c'est que les DCG reportent la spécification exacte des calculs et des relations entre eux jusqu'au moment de l'exécution. En d'autres termes, alors qu'un graphique de calcul statique exige que l'architecture de l'ensemble du réseau neuronal soit entièrement déterminée et compilée pour pouvoir fonctionner, les DCG peuvent être itérés et modifiés à la volée.
Cela rend les DCG particulièrement utiles pour le débogage et le prototypage, car des parties spécifiques du code d'un modèle peuvent être modifiées ou exécutées de manière isolée sans avoir à réinitialiser l'ensemble du modèle. Pour les modèles d'apprentissage profond de très grande taille utilisés pour les tâches sophistiquées de vision par ordinateur et de NLP, cela pourrait représenter une perte de temps et de ressources informatiques. Les avantages de cette flexibilité s'étendent à l'entraînement des modèles, car les graphiques de calcul dynamiques sont facilement générés à rebours pendant la rétropropagation.
Alors que leur structure fixe peut permettre une plus grande efficacité de calcul, les graphes de calcul statiques ont une flexibilité limitée : par exemple, élaborer un modèle qui utilise un nombre variable de couches en fonction des données d’entrée, tel qu’un réseau neuronal convolutif (CNN) qui peut traiter des images de différentes tailles, est une tâche extrêmement difficile avec des graphes statiques.