Machine learning for performance modelling on colossal software configuration spaces (Apprentissage statistique pour la modélisation de performances sur des espaces de configuration colossaux) Martin, Hugo - (2021-12-16) / Universite de Rennes 1 Machine learning for performance modelling on colossal software configuration spaces
| |||
Langue : Anglais Directeur(s) de thèse: Acher, Mathieu; Jézéquel, Jean-marc Discipline : Informatique Laboratoire : IRISA Ecole Doctorale : MATHSTIC Classification : Informatique Mots-clés : Lignes de Produits Logiciels, Apprentissage Statistique, Intelligence Articifielle, Ingénierie Logicielle
| |||
Résumé : Presque tous les systèmes logiciels d'aujourd'hui sont configurables. A l'aide d'options, il est possible de modifier le comportement de ces systèmes, d'ajouter ou d'enlever certaines capacités pour améliorer leurs performances ou les adapter à différentes situations. Chacune de ces options est liée à certains parties de code, et s'assurer du bon fonctionnement de ces parties entre elles, ou de les empêcher d'être utilisées ensemble, est un des défis durant le développement et l'utilisation de ces logiciels, connus sous le nom de Lignes de Produits Logiciel (ou SPL pour Software Product Lines). Si cela peut sembler relativement simple avec quelques options, certains logiciels assemblent des milliers d'options réparties sur des millions de lignes de code, ce qui rend la tâche autrement plus complexe. Durant la dernière décennie, les chercheurs ont commencé a utiliser des techniques d'apprentissage automatique afin de répondre aux problématiques des Lignes de Produits Logiciels. Un des problèmes clés est la prédiction des différentes propriétés de ces logiciels, comme la vitesse d'exécution d'une tâche, qui peut fortement varier selon la configuration du logiciel utilisé. Mesurer les propriétés pour chaque configuration peut être coûteux et complexe, voire impossible dans les cas les plus extrêmes. La création d'un modèle permettant de prédire les propriétés du logiciel, en s'aidant des mesures sur seulement d'une faible partie des configurations possible est une tâche dans laquelle l'apprentissage automatique excelle. Différentes solutions ont été développées, mais elles n'ont été validées que dans des cas où le nombre d'options est assez faible. Or, une part importante des SPL sont dotés de plusieurs centaines voire plusieurs milliers d'options. Sans tester les solutions d'apprentissage automatique sur des logiciels avec autant d'options, il est impossible de savoir si ces solutions sont adaptées pour de tels cas. La première contribution de cette thèse est l'application d'algorithmes d'apprentissage automatique sur une ligne de produits logiciels à une échelle jamais atteinte auparavant. En utilisant Linux et ses 15.000 options, il a été possible de déterminer que les algorithmes linéaires, mais aussi ceux spécialisé pour les SPL, ne sont pas capables de fonctionner correctement à cette échelle. Seuls les algorithmes basés sur les arbres, ainsi que les réseaux de neurones, étaient capables de fournir un modèle assez précis avec des ressources raisonnables en termes de temps et de mémoire.La deuxième contribution est la Feature Ranking List, une liste des options classées par importance envers leur impact sur une propriété cible d'un logiciel, générée par une amélioration de la sélection des caractéristiques basée sur les arbres de décisions. Nous avons évalué ses effets sur les modèles de prédiction de la taille des binaires du noyau Linux dans les mêmes conditions que pour la première contribution. L'effet souhaité et le plus connu de la sélection de caractéristiques en général est une accélération majeure du temps d'apprentissage ainsi qu'une amélioration notable de la précision pour la plupart des algorithmes précédemment considérés. La troisième contribution est l'amélioration de la spécialisation automatisée des performances et son évaluation sur différents SPL dont Linux. La spécialisation des performances est un processus qui consiste à ajouter des contraintes sur un SPL afin de répondre à un certain seuil de performance défini par l'utilisateur, pour l'aider lors de la configuration du logiciel. Les résultats montrent qu'il est possible d'obtenir un ensemble de règles suffisamment précis,et ce même sur Linux. La dernière contribution ouvre la porte à une utilisation plus durable de l'apprentissage automatique pour les lignes de produits logiciels. En utilisant une technique d'apprentissage par transfert, il a été possible de réutiliser un modèle de prédiction de performance sur plusieurs version à moindre coût. Abstract : Almost all of today's software systems are configurable. With the help of options, it is possible to modify the behavior of these systems, to add or remove certain capabilities to improve their performance or to adapt them to different situations. Each of these options is linked to certain parts of the code, and ensuring that these parts work well together, or that they cannot be used together, is one of the challenges during the development and the usage of these software products, known as Software Product Lines (SPL). While this may seem relatively simple with a few options, some software assembles thousands of options spread over millions of lines of code, making the task much more complex. Over the past decade, researchers have begun to use machine learning techniques to address the problems of Software Product Lines. One of the key problems is the prediction of different properties of software, such as the speed of execution of a task, which can vary greatly depending on the configuration of the software used. Measuring the properties for each configuration can be costly and complex, or even impossible in the most extreme cases. The creation of a model allowing to predict the properties of the system, with the help of measurements on only a small part of the possible configurations, is a task in which machine learning excels. Different solutions have been developed, but they have only been validated in cases where the number of options is quite small. However, a large part of SPL have hundreds or even thousands of options. Without testing machine learning solutions on systems with so many options, it is impossible to know if these solutions are suitable for such cases. The first contribution of this thesis is the application of machine learning algorithms on a Software Product Line at a scale never before achieved. Using Linux and its 15,000 options, it was possible to determine that linear algorithms, but also those specialized for SPL, are not able to work properly at this scale. Only tree-based algorithms, as well as neural networks, were able to provide a fairly accurate model with reasonable resources in terms of time and memory. The second contribution is the Feature Ranking List, a list of options ranked by importance towards their impact on a target software property, generated by an improved feature selection based on decision trees. We evaluated its effects on Linux kernel binary size prediction models under the same conditions as the first contribution. The desired and best known effect of feature selection in general is a major speed-up in learning time as well as a significant improvement in accuracy for most of the previously considered algorithms. The third contribution is the improvement of automated performance specialization and its evaluation on different SPL including Linux. Performance specialization is a process that consists in adding constraints on an SPL in order to meet a certain performance threshold defined by the user, to help them when configuring the software. The results show that it is possible to obtain a sufficiently accurate set of rules, even on Linux. |