Machine Learning Engineering: An Exploratory Study of Challenges and Practices

RESUME : Alors que la demande pour des systemes et services intelligents augmentent rapidement, l’apprentissage automatique (ML) devient de plus en plus un element indispensable des systemes logiciels. L’intelligence artificielle (IA) et l’apprentissage automatique (ML) ont attire l’attention des chercheurs en raison de leur application pour fournir des solutions basees sur les donnees a divers problemes du monde reel. Bien que le ML prouve des potentiels prometteurs pour le genie logiciel (SE), il souffre encore de certains defis. Malgre certains efforts de recherche recents, des defis demeurent. Nous menons la premiere partie de notre etude pour connaitre les perceptions des praticiens du ML concernant ce sur quoi le chercheur devrait se concentrer pour innover et soutenir les developpeurs afin d’assurer la qualite des applications de ML. Dans la premiere etude, nous menons une enquete aupres de 80 praticiens du ML (avec des competences, une experience et des domaines d’application diversifies) pour rapporter les commentaires sous forme de 17 resultats decrivant les defis et les meilleures pratiques du developpement d’applications de ML. Ce travail resume les meilleures pratiques des praticiens dans le developpement de systemes logiciels bases sur le ML pour ameliorer la qualite de leurs systemes. De plus, il rapporte que le ML est un defi que la communaute de recherche doit etudier. La deuxieme partie de cette recherche a aborde les defis ML plus specifiquement pour comprendre dans quelle mesure les defis ML sont lies au langage de programmation (PL) utilise dans le developpement d’applications ML. La deuxieme etude a analyse les publications de Stack Overflow (SO) liees au ML, afin d’etudier comment les questions sur le ML ont ete modifiees au fil du temps et dans six langages de programmation differents. Nous avons analyse 43950 messages SO de 2008 a 2020 pour determiner (i) comment le nombre de messages lies au ML evolue au fil du temps pour chaque langage de programmation, (ii) comment les messages sont repartis entre les differentes phases d’un pipeline ML, et (iii) si les messages appartenant a differentes langues ou phases sont plus ou moins difficiles a traiter.----------ABSTRACT : As the demands for intelligent systems and services is growing fast, Machine Learning (ML) is increasingly becoming an indispensable element of current software systems. Artificial Intelligence (AI) and Machine Learning (ML) have grabbed researchers’ attention because of their application for providing data-driven solutions to various real-world problems. Although ML proves some promising potentials for Software Engineering (SE), it still suffers from some challenges. Despite some recent research efforts, it is still unclear where SE researchers should focus to support ML developers more effectively. We conduct the first part of our study to know the ML practitioners’ perceptions regarding what the researcher should focus on to innovate for supporting developers and assure ML applications’ quality. In the first study, we conduct a survey on 80 ML practitioners (with diverse skills, experience, and application domains) to report the feedback as 17 findings outlining challenges and best practices of ML application development. This work summarizes practitioners’ best practices in the development of ML-based software systems to improve the quality of their systems. Moreover, it reports ML challenges that the research community needs to investigate. The second part of this research has discussed the ML challenges more specifically to understand to what extent the ML challenges are related to the Programming Language (PL) used in ML application development. The second study analyzed Stack Overflow (SO) posts related to ML, to investigate how the questions about ML have been changed over time and across six different programming languages. We analyzed 43,950 SO posts from 2008 to 2020 to determine (i) how the number of ML-related posts changes over time for each programming language, (ii) how the posts are distributed across different phases of an ML pipeline, and (iii) whether posts belonging to different languages or phases are more or less challenging to address.