DietCode : l'optimisation automatique pour les programmes tensoriels dynamiques - TVMCon 2021
Table of Contents
- Introduction
- Overview of the Current Auto Schedule Design
- Challenges Faced with the Current Design
- The First Key Idea: Shape-Dependent Search Space
- Constructing a Shape Generic Search Space
- Benefits of the Shape-Dependent Search Space
- The Second Key Idea: Microkernel-Based Cost Model
- Limitations of the Existing Cost Model
- Introducing the Microkernel-Based Cost Model
- Devising a New Interface for Dynamic Chip Workloads
- Defining Dynamic Shape Variables and Instances
- Assigning Weights to Shape Instances
- testing the Effectiveness of Diet Code
- Evaluation and Results
- Performance Comparison with Existing Designs
- Support for Workflows with Multiple Dynamic Axes
- Future Developments and Conclusion
Introduction
Dans cette article, nous allons présenter Diet Code, un nouveau cadre de planification automatique pour les charges de travail dynamiques sur les puces. Nous commencerons par donner un aperçu du design actuel de l'auto-planification, ainsi que les défis rencontrés par ce design. Ensuite, nous discuterons des deux idées clés de Diet Code : l'espace de recherche dépendant de la forme et le modèle de coût basé sur les micro-noyaux. Nous expliquerons également comment Diet Code propose une nouvelle interface pour les charges de travail dynamiques sur les puces. Enfin, nous présenterons les résultats de l'évaluation de Diet Code et discuterons de ses avantages par rapport aux conceptions existantes.
Overview of the Current Auto Schedule Design
Le design actuel de l'auto-planification commence par la spécification d'un opérateur par l'utilisateur et une description dans une feuille standard. En utilisant ces informations, l'auto-planificateur construit automatiquement une phase de recherche qui inclut tous les horaires envisagés. Cependant, le défi principal réside dans le fait qu'un opérateur peut théoriquement avoir un nombre infini de plannings possibles.
Challenges Faced with the Current Design
Le design actuel de l'auto-planification présente plusieurs défis. Tout d'abord, il est difficile de partager les plannings entre différentes formes du même opérateur. Cela limite également la planification efficace des charges de travail dynamiques. De plus, le design actuel ne tient pas compte des candidats non parfaits, ce qui peut réduire les performances optimales. Cependant, avec l'optimisation de la génération de code à rembourrage local, cette limitation peut être atténuée.
The First Key Idea: Shape-Dependent Search Space
Constructing a Shape Generic Search Space
L'idée clé de Diet Code est de construire un espace de recherche dépendant de la forme qui est composé de micro-noyaux. Chaque micro-noyau effectue un calcul de l'ensemble des opérations et peut être porté à toutes les formes du même opérateur. Par exemple, le micro-noyau Dense 128x128 peut être utilisé pour réaliser le calcul 1024 fois 2204 en se répliquant 8 fois 18 fois le long des Dimensions spatiales.
Benefits of the Shape-Dependent Search Space
L'avantage de l'espace de recherche dépendant de la forme est qu'il permet de partager les plannings entre différentes formes du même opérateur. Cela rend la planification des charges de travail dynamiques plus efficace, car il n'est pas nécessaire de chercher chaque instance de forme de manière séparée.
The Second Key Idea: Microkernel-Based Cost Model
Limitations of the Existing Cost Model
Le modèle de coût actuel utilisé dans l'auto-planification est entraîné sur une seule forme et peut être imprécis pour d'autres formes. Il ne capture pas les changements dans les performances en fonction des dimensions de décalage.
Introducing the Microkernel-Based Cost Model
Pour résoudre ce problème, Diet Code propose un modèle de coût basé sur les micro-noyaux. Ce modèle de coût se Compose d'un coût de micro-noyau entraînable, modélisé à l'Aide d'algorithmes d'apprentissage automatique, et d'un coût d'analyse de généralisation spatiale, modélisé à l'aide d'une fonction linéAire. Cette approche permet d'établir un modèle de coût précis pour chaque forme du même opérateur.
Devising a New Interface for Dynamic Chip Workloads
Defining Dynamic Shape Variables and Instances
Diet Code propose une nouvelle interface qui permet aux utilisateurs de définir des variables de forme dynamiques et leurs instances. Cela offre une plus grande flexibilité dans la planification des charges de travail dynamiques.
Assigning Weights to Shape Instances
La nouvelle interface de Diet Code permet également d'assigner des poids à chaque instance de forme. Cela permet de prioriser certaines instances de forme lors de la planification, en fonction des besoins spécifiques de l'application.
Testing the Effectiveness of Diet Code
Pour évaluer l'efficacité de Diet Code, nous avons utilisé une plate-forme matérielle équipée d'un GPU Tesla T4 et avons effectué des tests de planification sur des couches denses extraites du modèle BERT. Les résultats montrent que Diet Code offre des performances jusqu'à 30 % supérieures aux conceptions existantes.
Evaluation and Results
Performance Comparison with Existing Designs
Nous avons Comparé les performances de Diet Code avec celles des conceptions existantes. Les résultats ont montré que Diet Code est jusqu'à 30 % plus performant que les designs existants, tels que Answer et la bibliothèque Wonder.
Support for Workflows with Multiple Dynamic Axes
Nous avons également testé la capacité de Diet Code à planifier des charges de travail avec plusieurs axes dynamiques. Les résultats ont montré que Diet Code offre une performance supérieure de 24 % par rapport aux designs existants.
Future Developments and Conclusion
Dans le futur, nous prévoyons d'intégrer Diet Code dans la branche principale de QBM. Les résultats prometteurs obtenus lors des tests de performance soutiennent l'idée que Diet Code est un planificateur automatique pratique pour les charges de travail dynamiques sur les puces. En résumé, Diet Code présente deux idées clés : un espace de recherche dépendant de la forme et un modèle de coût basé sur les micro-noyaux, qui permettent d'optimiser la planification des charges de travail dynamiques et d'améliorer les performances.
Highlights
- Diet Code est un nouveau cadre de planification automatique pour les charges de travail dynamiques sur les puces.
- L'espace de recherche dépendant de la forme et le modèle de coût basé sur les micro-noyaux sont les deux idées clés de Diet Code.
- Diet Code offre des performances jusqu'à 30 % supérieures aux conceptions existantes.
- Diet Code prend en charge les charges de travail avec plusieurs axes dynamiques.
FAQ
Q: Qu'est-ce que Diet Code ?
- Diet Code est un nouveau cadre de planification automatique pour les charges de travail dynamiques sur les puces.
Q: Quelles sont les idées clés de Diet Code ?
- Les deux idées clés de Diet Code sont l'espace de recherche dépendant de la forme et le modèle de coût basé sur les micro-noyaux.
Q: Quelles sont les performances de Diet Code par rapport aux conceptions existantes ?
- Diet Code offre des performances jusqu'à 30 % supérieures aux conceptions existantes, telles que Answer et la bibliothèque Wonder.
Q: Diet Code prend-il en charge les charges de travail avec plusieurs axes dynamiques ?
- Oui, Diet Code prend en charge les charges de travail avec plusieurs axes dynamiques, ce qui le rend très flexible et adapté à diverses applications.
Q: Quels sont les avantages de Diet Code par rapport aux conceptions existantes ?
- Les avantages de Diet Code sont des performances améliorées, une optimisation de la planification des charges de travail dynamiques et une flexibilité accrue grâce à une nouvelle interface.
Ressources