KhiopsML / khiops

Khiops is an AutoML suite for supervised and unsupervised learning
https://khiops.org
BSD 3-Clause Clear License
36 stars 4 forks source link

Optimize estimation of memory requirements for Khiops dictionaries #371

Open marcboulle opened 2 months ago

marcboulle commented 2 months ago

Description

Pour le dimensionnement des tâches, on doit estimer la mémoire nécessaire pour la gestion des objets algorithmiques. La version actuelle de l'outil fonctionne correctement, mais il y a parfois des exigences mémoire beaucoup trop importantes, notamment dans le cas de dictionnaires de très grande taille, avec des demandes de plusieurs centaines de Mb parfois sur-estimées.

Problème non urgent, mais amélioration potentielle de la scalabilité et des performances

Piste de solution

Dans le cas des dictionnaires Khiops, la méthode usuelle basé sur les sizeof des objets utilisés fournit une valeur largement sous-estimée en raison du morcellement mémoire lié à la multitude de petits objets (variable, règles, opérandes...) impliquée dans le gestion des dictionnaires.

Cette sous-estimation est corrigée brutalement par un facteur 2 dans les méthodes suivantes:

Il s'agirait d'avoir une estimation plus fine et donc d'être moins gourmand en mémoire dans le cas de dictionnaire de très grande taille, par une majoration moins basique qu'un simple facteur 2 (par exemple, par une fonction affine de type a x + b, avec a < 2 au lieu de linéaire en a x avec a=2).

Il faut dans un premier temps collecter des stats sur la mémoire estimée et la mémoire réellement nécessaire pour la gestion des dictionnaires, puis remplacer le facteur 2 par une estimation plus fine. Les deux pièces jointes suivantes constituent une première étape de ce travail de collecte de stats.

README.txt

DictionaryMemAnalysis.xlsx

Context