Définition
Un graphe orienté dont les nœuds représentent des opérations élémentaires ou des emplacements de données (variables/tenseurs) et dont les arêtes représentent le flux de valeurs entre ces opérations ; utilisé pour représenter, analyser et exécuter des calculs mathématiques.
Principe
Principe
Décomposer un calcul complexe en nœuds reliés par des dépendances de données afin que l'évaluation, la transformation (par exemple la simplification algébrique) et la différentiation puissent être effectuées en parcourant ou transformant le graphe — souvent comme une structure acyclique pour l'évaluation directe et la différentiation en mode inverse.
Démonstration
Démonstration
Une passe avant d'un réseau de neurones peut être modélisée par un graphe où les nœuds sont des multiplications matricielles, des additions de biais et des fonctions non linéaires ; les tenseurs circulent le long des arêtes. La rétropropagation s'implémente en parcourant le même graphe en sens inverse pour accumuler les gradients.
Mauvaise application
Mauvaise application
Considérer un graphe de calcul comme un modèle de flux de contrôle (utiliser ses arêtes pour raisonner sur l'ordre d'exécution d'instructions avec effets de bord) ou supposer que tout graphe de calcul est acyclique en ignorant les motifs cycliques autorisés pour des définitions récurrentes, conduisant à des hypothèses erronées sur l'évaluation ou la convergence.
Conséquence
Conséquence
Bien employé, il permet la différentiation automatique, la manipulation symbolique (élimination des sous-expressions communes), l'ordonnancement d'exécution parallèle et des compromis mémoire/recalcul basés sur les dépendances des données.
Inversion
Inversion
Considérer le programme comme un texte ou une séquence impérative d'instructions où les opérations sont ordonnées par le flux de contrôle plutôt que par des arêtes de données ; inverser le concept met l'accent sur les étapes d'exécution plutôt que sur les dépendances de valeurs.
Limite
Limite
S'applique aux représentations qui exposent les calculs et le flux de valeurs ; il n'encode pas en soi l'ordonnancement d'exécution au runtime, l'allocation de ressources au bas niveau ou les effets de contrôle non liés aux données, sauf extension. Distinguer les graphes statiques 'définir-puis-exécuter' des graphes construits à l'exécution.
Tension sémantique
Tension sémantique
Conflit avec le terme « graphe de flux de données » — les deux insistent sur le mouvement de valeurs mais le flux de données met l'accent sur le passage de jetons et la sémantique de déclenchement, tandis que le graphe de calcul met l'accent sur la composition algébrique et la différentiation pour le calcul numérique.
Synthèse
Synthèse
Un graphe de calcul est la représentation orientée et structurée d'un calcul où les nœuds sont opérations ou réceptacles de données et les arêtes des dépendances de valeurs ; cette structure rend les tâches analytiques (dérivées, optimisations, parallélisation) accessibles par des algorithmes sur graphes tout en restant distincte du flux de contrôle ou de l'ordonnancement d'exécution.