HeadlinesBriefing favicon HeadlinesBriefing.com

Du modèle au service : ML utile avec FastAPI

Towards Data Science •
×

Il y a quelques mois, j'ai essayé de me lancer un défi pour entreprendre un voyage afin de passer d'un background en analyse de données à l'ingénierie des données. Jusqu'à présent, j'ai construit un total de deux projets concrets impactants qui m'ont vraiment appris quelque chose d'utile. J'ai construit un pipeline ET L Git Hub qui extrait les dépôts Git Hub et les charge dans une base de données SQLite — cela fonctionnait selon un calendrier utilisant Git Hub Actions.

J'ai également construit un pipeline RSS qui extrait les articles des flux RSS et les stocke dans une base de données Kestra — orchestré par Kestra pour s'exécuter sur un calendrier horaire. Maintenant que j'ai compris ET L dans une certaine mesure, je voulais essayer quelque chose de nouveau. Je voulais continuer à pratiquer tout ce que j'ai appris dans le passé tout en construisant quelque chose de nouveau.

J'ai toujours été fasciné par le domaine de l'apprentissage automatique, mais je n'avais jamais eu le courage d'y entrer parce que je pensais qu'il impliquait des mathématiques complexes. Plus maintenant. Récemment, j'ai construit un modèle de prédiction de churn pour une entreprise de télécommunications fictive que j'appelle Northline Mobile (P.

S. J'utilise une entreprise fictive parce que je comprends mieux les choses avec des scénarios du monde réel). Je lui ai fourni des données de 7043 clients, en lui indiquant s'ils s'étaient inscrits à un contrat d'un an ou à des plans mensuels, la durée du client, les frais mensuels, les modules complémentaires, etc. De plus, je lui ai dit qui avait finalement quitté Northline Mobile.

J'ai validé le modèle de manière croisée avec des clients qu'il n'avait pas encore vus. Il a atteint une précision de 81%. Cela m'a appris tout ce qui entre dans la construction d'un modèle.

De toute évidence, je n'ai pas compris tout le code complexe, car je préfère les interfaces intuitives de glisser-déposer plutôt que le code complexe. Mais j'ai compris les blocs de construction essentiels pour construire un modèle ; je l'expliquerai plus loin ci-dessous avec une architecture simplifiée. Donc, construire ce modèle ressemblait à une victoire du point de vue de l'apprentissage automatique ; mon modèle fonctionnait.

Mais il y avait encore un problème : il n'était pas encore vraiment utile. En supposant qu'un employé de Northline qui avait besoin d'une prédiction vienne me voir, je devrais ouvrir Jupyter, charger le bon notebook, exécuter les cellules dans le bon ordre et faire un appel manuel à predict_churn(). Oui, le modèle existe, mais j'étais le seul à savoir comment l'utiliser.

Personne d'autre chez Northline ne pouvait simplement envoyer des informations sur un client au modèle et récupérer une prédiction et il ne pouvait pas non plus communiquer avec une autre application. Cet article va couvrir cela. J'ai récemment appris qu'il y a une différence entre avoir un modèle et avoir un service.

Si un modèle reste simplement dans un notebook, seule la personne qui l'a construit peut l'utiliser. Mais en faire un service permet à tout le monde de l'utiliser, d'autres équipes, des applications, des tableaux de bord et des systèmes qui n'ont pas besoin de savoir ou de se soucier de comment la prédiction est faite. Il s'avère que construire le modèle d'apprentissage automatique était la partie la plus facile, mais le rendre utile est un autre élément crucial qui mérite d'être exploré.

Ce que 'Terminé' signifiait avant l' APIVoici à peu près à quoi ressemblait la construction du modèle : C'est à peu près tout. Rien de trop sophistiqué. À la fin de cela, j'avais un classificateur de churn entraîné, un pipeline de prétraitement qui nettoyait et encodait les données brutes, et des chiffres d'évaluation avec lesquels j'étais à l'aise (plus sur ces chiffres bientôt, ils ne sont pas parfaits et je ne vais pas prétendre qu'ils le sont). Mais comme je l'ai dit.

En supposant que l'équipe de rétention de Northline construit un tableau de bord, et qu'ils veulent qu'il signale automatiquement les clients à risque. Leur tableau de bord ne peut pas raisonnablement ouvrir mon notebook Jupyter et exécuter mes cellules. Il a besoin de quelque chose de complètement différent.

Quelque chose comme ceci : C'est le changement que cet article couvre. Une petite mise en garde, cependant : ce n'est pas un tutoriel Fast API. Fast API est simplement l'outil que j'ai utilisé pour exposer le modèle comme...