Approaches to assess validity of derivatives and to improve efficiency in automatic differentiation of programs

par Mauricio Araya Polo

Thèse de doctorat en Informatique

Sous la direction de Laurent Hascoët.

  • Titre traduit

    Domaine de validité et amélioration des performances pour les dérivées obtenues par différenciation automatique


  • Résumé

    The context of this work is Automatic Differentiation (AD). Fundamentally, AD transforms a program that computes a mathematical function into a new program that computes its derivatives. Being automatic, AD can spare a large amount of development effort. AD is increasingly used in Scientific Computing, but some problems still delay its widespread use. In this thesis we propose elements of solution for two of these problems. The first problem is non-differentiability of most real-life programs for some particular inputs. AD tools often overlook this problem. However users need a strong degree of confidence in the derivatives they obtain, to use them e. G. In optimization engines. Non-differentiability in programs may come from various causes, from the mathematical model to the actual implementation choices. Practically, non-differentiability in programs is embodied by the presence of control. Rather than studying notions of extended derivatives, our approach is to describe the domain in the input space for which the function actually remains differentiable. We describe several alternatives to find this domain of validity and we evaluate their complexity. We formally study one method to compute the complete domain, but we discard it because of its cost. Alternatively, we propose a simpler directional method that we have implemented and validated on several examples. The second problem is efficiency of the reverse mode of AD, which computes gradients and is therefore of high interest. Reverse AD programs use the intermediate values from the original program in the reverse order, and this has a cost, whatever the strategy used. Available strategies all rely on a combination of storing and recomputing intermediate values, thus costing memory space and execution time. The central tactic, called ”checkpointing”, trades duplicate execution of complete segments of the code for memory space. In this work, we formalize the static data-flow behavior of reverse AD programs, taking checkpointing into account. Based on these formal results, we contribute two improvements to reverse AD strategies. First, the data-flow analysis lets us reduce the number of stored values to a minimum, and we give elements of proof of minimality. Second, we obtain indications on the code segments that are most appropriate for checkpointing. To experiment on checkpointing schemes, we extend the data-flow analyses and the reverse mode in our AD tool. We show the benefits on several large Scientific Computing codes.


  • Résumé

    Ce travail concerne la Différentiation Automatique (DA) de codes. La DA transforme un programme calculant une fonction mathématique en un nouveau programme calculant ses dérivées, gagnant ainsi un temps de développement conséquent. L'usage de la DA se répand en Calcul Scientifique, mais souffre encore de quelques problèmes. Cette thèse propose des éléments de solution à deux de ces problèmes. Le premier problème est la non-différentiabilité des programmes réels, pour certaines entrées. Les outils de DA négligent souvent ce problème, alors que les utilisateurs ont besoin d'une grande confiance dans ces dérivées avant de les utiliser, par exemple dans des boucles d'optimisation. Quelle que soit son origine réelle, cette non-différentiabilité se traduit dans la structure de contrôle des programmes. Plutôt que d'étudier des extensions de la notion de dérivée, nous préférons ici caractériser le domaine autour des entrées courantes pour lequel le contrôle reste constant et la différentiabilité est conservée. Nous proposons plusieurs approches et évaluons leurs complexités. Nous étudions formellement une construction du domaine entier, mais sa complexité limite son application. Alternativement, nous proposons une méthode directionnelle moins coûteuse, que nous avons implémentée et validée sur plusieurs exemples. Le second problème est l'efficacité du mode inverse de la DA, qui produit des codes ”adjoints” calculant des gradients. Ces codes utilisent les valeurs intermédiaires du programme initial dans l'ordre inverse, ce qui nécessite une combinaison de sauvegarde et de recalcul de ces valeurs. Une tactique fondamentale, nommée ”ckeckpointing”, économise de la mémoire au prix de la reexécution de segments de code. Dans notre travail, nous formalisons les analyses de flot de données nécessaires la différentiation inverse, y compris dans le cas du checkpointing. A partir de cette formalisation, nous proposons deux avancées aux stratégies de la DA inverse. D'une part ces analyses nous fournissent des ensembles de valeurs sauvegarder, que nous pouvons prouver minimaux. D'autre part nous en tirons des indications sur les meilleurs segments de code candidats au checkpointing. Pour expérimenter ces choix, nous étendons les analyses et l'algorithme de différentiation inverse de notre outil de DA. Nous montrons les bénéfices que l'on peut attendre sur des codes réels.

Consulter en bibliothèque

La version de soutenance existe sous forme papier

Informations

  • Détails : 1 vol. (xi-138 p.)
  • Notes : Publication autorisée par le jury
  • Annexes : Bibliogr. p. 116-122. Résumés en français et en anglais

Où se trouve cette thèse ?

  • Bibliothèque : Université Nice Sophia Antipolis. Service commun de la documentation. Section Sciences.
  • Non disponible pour le PEB
  • Cote : 06NICE4033
Voir dans le Sudoc, catalogue collectif des bibliothèques de l'enseignement supérieur et de la recherche.