SlideShare une entreprise Scribd logo
D’un modèle d'IA
dans un notebook
à un service
temps réel :
architecturons !
?
2023
Merci à nos sponsors
HELLO
Marie-Alice Blete
Software Architect
& Data engineer at Labs
Un peu de contexte
data scientist dév
Un peu de contexte
toute ressemblance avec des personnes
existantes serait purement fortuite
(ou pas)
Un peu de contexte
?
blabla code blabla code
blabla code
blabla code
blabla code blabla code blabla code
blabla code blabla code
data scientist
Un peu de contexte
blabla code blabla code
blabla code
blabla code
blabla code blabla code blabla code
blabla code blabla code
data scientist
Un peu de contexte
blabla code blabla code
blabla code
blabla code
blabla code blabla code blabla code
blabla code blabla code
?
data scientist
Un peu de contexte
modèle
?
Un peu de contexte
Au programme
remarques &
conclusion
solution 2
critiques/contraintes
solution 3
définitions
objectif
solution 1 solution 4
définitions
Le cycle de vie d’un modèle d’IA
entraînement inférence
création du modèle déploiement du modèle
prédiction
nouvelle
donnée modèle
données modèle
prédiction
Le cycle de vie d’un modèle d’IA
nouvelle
donnée modèle
déploiement du modèle
vous êtes ici
inférence
« model-serving »
définitions
objectif
Point de départ
entrainé + sérialisé
modèle
Point d’arrivée : MODEL-as-SERVICE
modèle
input
prediction
webservice
Point d’arrivée : MODEL-as-SERVICE
input
prediction
webservice
modèle
L’accord avec l’équipe data scientist
Pas de contraintes
pour:
le framework
les données
le modèle :
« boite noire »
ReadMe +
Python
sérialisé + entrainé
modèle
définitions
objectif
solution 1
Etape 1 : l’API
API
modèle
?
POST
predict
<data>
Etape 2 : le « wrapper »
Objectif : avoir un contrat d’interface pour le modèle
predict(data) modèle
Etape 2 : le « wrapper »
def initialize(self):
# Charger le modèle
self.model = joblib.load(...)
def predict(self, data):
# Appeler la fonction de prediction
self.model.predict(data)
Etape 2 : le « wrapper »
def initialize(self):
# Charger le modèle
self.model = keras.models.load_model(mymodel.h5)
def predict(self, data):
# Appeler la fonction de prediction
self.model.predict_proba(data)
Etape 2 : le « wrapper »
Chez GCP
Wrapper =
Docker container
avec server http
gcloud ai models upload 
--region=LOCATION 
--display-name=MODEL_NAME 
--container-image-uri=IMAGE_URI 
--container-command=COMMAND 
--container-args=ARGS 
--container-predict-route=PREDICT_ROUTE
Etape 2 : le « wrapper »
API
POST
predict
<data>
modèle
MODEL SERVING NODE
Etape 2 : le « wrapper »
API
POST
predict
<data>
modèle
MODEL SERVING NODE
modèle
Etape 2 : le « wrapper »
API
POST
predict
<data>
MODEL SERVING NODE
Point d’arrivée : MODEL-as-SERVICE
modèle
input
prediction
webservice
Model-as-service – solution 1
API
POST
predict
<data>
modèle
MODEL SERVING NODE
définitions
objectif
solution 1 solution 2
critiques/contraintes
Gérer la charge?
API
POST
predict
<data>
modèle
modèle
Problèmes de cette solution
x Risque de DOS
x Couplage entre API et modèle
x Problème de responsabilité: l’API doit
faire load balancer entre les “Model
Nodes”
?
Etape 3 : ?
?
POST
predict
<data>
modèle
MODEL SERVING NODE
API
Etape 3 : « event queue » + « event
processor »
Request queue
POST
predict
<data>
modèle
MODEL SERVING NODE
MESSAGE BROKER
API
Etape 3 : « event queue » + « event
processor »
Request queue
POST
predict
<data>
modèle
EVENT PROCESSOR
MESSAGE BROKER
API
Etape 3 : « event queue » + « event
processor »
Request queue
Prediction queue
POST
predict
<data>
API EVENT PROCESSOR
MESSAGE BROKER
modèle
Model-as-service – solution 2
Request queue
Prediction queue
POST
predict
<data>
API EVENT PROCESSOR
MESSAGE BROKER
modèle
définitions
objectif
solution 1 solution 2
critiques/contraintes
solution 3
Point d’arrivée : MODEL-as-SERVICE
« near real time »
input
prediction
webservice
< X ms modèle
Scalability ?
POST
predict
<data>
EVENT PROCESSOR
MESSAGE BROKER
modèle
API MESSAGE BROKER
Request queue
Prediction queue
Scalability ?
Request queue
Prediction queue
API MESSAGE BROKER EVENT PROCESSOR
modèle
POST
predict
<data>
Scalability ?
Request queue
Prediction queue
API MESSAGE BROKER EVENT PROCESSOR
modèle
POST
predict
<data>
Scalability ?
Request queue
Prediction queue
API MESSAGE BROKER
LOAD-
BALANCER
EVENT PROCESSOR
modèle
Near real time : timeout
POST
predict
<data>
EVENT PROCESSOR
MESSAGE BROKER
modèle
Request queue
Prediction queue
API
Near real time : timeout, FIFO?
POST
predict
<data>
EVENT PROCESSOR
MESSAGE BROKER
modèle
Request queue
Prediction queue
API
Near real time : dépendant du modèle
Se concerter avec l’équipe de data scientists
precision/recall training loss inference latency
Comparaison de modèles:
Model-as-service – solution 3
Request queue
Prediction queue
API MESSAGE BROKER
LOAD-
BALANCER
EVENT PROCESSOR
modèle
définitions
objectif
solution 1 solution 2
critiques/contraintes
solution 3 solution 4
Mais…
Hypothèse utilisée :
data fournie par l’api = data attendue dans le modèle
Mais…
modèle
Mais…
modèle
Feature engineering & Preprocessing
Création de features :
Features dérivées
date
montant
ip
jour de la semaine
montant en euros
pays
transaction transaction améliorée
Feature engineering & Preprocessing
Création de features :
Agrégations transaction
courante
24 heures
moyenne des montants
Feature engineering & Preprocessing
Spécifique au modèle
dans le « wrapper » modèle
Feature engineering & Preprocessing
def initialize(self):
# Charger le modèle
def predict(self, data):
# Appeler la fonction de prediction
def preprocess(self, data):
# Appliquer les transformations necessaires
data[‘newfeature’] =
do_something_complicated(data[‘somefeature’])
Preprocessing avec agrégat
database
transaction
courante
24 heures
moyenne des montants
Etape 4 : « base de données»
database
POST
predict
<data>
Request queue
Prediction queue
API EVENT PROCESSOR
MESSAGE BROKER
modèle
Preprocessing avec agrégat… et
latence
Agrégation : opération potentiellement coûteuse
Solution classique : utilisation d’un cache
Compromis avec la performance du modèle
?
database
Preprocessing avec agrégat… et
latence
Compromis Latence/Débit vs Performance de modèle
Cohérence entre:
✓le preprocessing de data en batch lors de l’entrainement
✓le traitement au fil de l’eau lors de l’inférence
model-as-service – solution 4
database
POST
predict
<data>
Request queue
Prediction queue
API EVENT PROCESSOR
MESSAGE BROKER
modèle
remarques &
conclusion
solution 2
critiques/contraintes
solution 3
définitions
objectif
solution 1 solution 4
Et ailleurs?
exemple chez
Et ailleurs?
Ingestion de données
distincte de l’inférence
autre exemple chez
Et ailleurs?
database
POST
predict
Request queue
Prediction queue
API EVENT PROCESSOR
MESSAGE BROKER
data
stream
input
modèle
Autres patterns d’archi possibles
avec
l’application
cliente
service ou versionning indépendant de
l’application cliente
exécution du modèle
« model-as-dependency »
synchrone
« precompute »
« model-as-service »
asynchrone
Take-aways
message broker
interfaces & généricité
découplage
scalabilité
principe de
responsabilité unique briques indépendantes
communication
wrapper
Déployer un modèle d’IA :
une architecture comme une autre
Don’t be a stranger!
Follow & get in touch
linkedin.com/in/mblete
blog.worldline.tech
@WorldlineTech
Follow our tech team: Follow me:
Marie-Alice Blete
Feedback

Contenu connexe

PDF
Oxalide Morning tech #2 - démarche performance
PDF
Morning tech #2 - Démarche performance slides
PPTX
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
PPTX
#SnowCamp2020 - DATAOPS n’est pas que DEVOPS appliqué aux projets DATA
PDF
Decouvrez Les Dernieres Innovations Tableau 2020
PDF
PDF
PDF
Oxalide Morning tech #2 - démarche performance
Morning tech #2 - Démarche performance slides
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
#SnowCamp2020 - DATAOPS n’est pas que DEVOPS appliqué aux projets DATA
Decouvrez Les Dernieres Innovations Tableau 2020

Similaire à D’un modèle d'IA dans un notebook à un service temps réel : architecturons ! (20)

PDF
PDF
PDF
PDF
PDF
B5252 g formation-ibm-cognos-framework-manager-concevoir-des-modeles-de-metad...
PDF
B5252 g formation-ibm-cognos-framework-manager-concevoir-des-modeles-de-metad...
PPTX
meetup devops aix-marseille - décembre 2023
PPTX
Procima deck 7 May 2014
PDF
Lunch learn 5 sep2013
PDF
La voie du succès avec les bases de données de graphes, la Graph Data Scie...
PPTX
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
PPTX
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
PDF
Migrez vos bases de données vers SQL Server et SQL Azure avec Microsoft SQL S...
PPTX
DataOps introduction : DataOps is not only DevOps applied to data!
PDF
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
PPTX
Diapo PFE
PPT
Vis ma vie de chef de projet Drupal | Drupagora 2013, Paris
PPTX
Chapitre 01- Maitriser architecture micro-services avec Spring Boot et Spring...
PPT
Agl2012
PDF
Clean Architecture et Code patrimonial
B5252 g formation-ibm-cognos-framework-manager-concevoir-des-modeles-de-metad...
B5252 g formation-ibm-cognos-framework-manager-concevoir-des-modeles-de-metad...
meetup devops aix-marseille - décembre 2023
Procima deck 7 May 2014
Lunch learn 5 sep2013
La voie du succès avec les bases de données de graphes, la Graph Data Scie...
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
Migrez vos bases de données vers SQL Server et SQL Azure avec Microsoft SQL S...
DataOps introduction : DataOps is not only DevOps applied to data!
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Diapo PFE
Vis ma vie de chef de projet Drupal | Drupagora 2013, Paris
Chapitre 01- Maitriser architecture micro-services avec Spring Boot et Spring...
Agl2012
Clean Architecture et Code patrimonial
Publicité

Plus de Marie-Alice Blete (9)

PPTX
L'IA dans vos projets: un peu, beaucoup, pas du tout?
PDF
Keynote BDX IO - LLMs,entre fantasme et réalité
PDF
AI_Assistants_Hand_On_Generation_AI_Paris.pdf
PDF
Décryptage des LLMs au-delà de la hype - Lyon Data science
PDF
Du Clic à la Conversation : remplaçons boutons et formulaires par un LLM !
PDF
5_metriques_ai_prod.pdf
PDF
clicks2conversations.pdf
PDF
chatgpt_meetup_jug.pdf
PDF
Conversations avec ChatGPT: illusion ou réalité ?
L'IA dans vos projets: un peu, beaucoup, pas du tout?
Keynote BDX IO - LLMs,entre fantasme et réalité
AI_Assistants_Hand_On_Generation_AI_Paris.pdf
Décryptage des LLMs au-delà de la hype - Lyon Data science
Du Clic à la Conversation : remplaçons boutons et formulaires par un LLM !
5_metriques_ai_prod.pdf
clicks2conversations.pdf
chatgpt_meetup_jug.pdf
Conversations avec ChatGPT: illusion ou réalité ?
Publicité

Dernier (13)

PDF
ENSEIGNEMENT/APPRENTISSAGE ET COMPETENCE
PDF
Apprentissage supervisé : La Classification.pdf
PPT
Icc courant de court circuit explication
PDF
famille ................................
PDF
Proposition de contenu pouvant résoudre les problèmes détectés à partir des é...
PDF
UX DESIGN presentation canva plan et slides
PDF
Regles sur la gestion de l’Eclairage public
PDF
Binayat 3D PROJET ECOLE SUR ENERGETIQUE DU BATIMENTS
PPTX
Cours_IoT.pptx k
PPTX
template SR.pptx pour les présentations de soutenances
PDF
Controle-and-Assurance-Qualite-logicielle-Developpement-du-tableau-de-bord-de...
PPT
Présentation de l’Analyse et Concepti SI
PPTX
Chapitre7-java------------------ Exception.pptx
ENSEIGNEMENT/APPRENTISSAGE ET COMPETENCE
Apprentissage supervisé : La Classification.pdf
Icc courant de court circuit explication
famille ................................
Proposition de contenu pouvant résoudre les problèmes détectés à partir des é...
UX DESIGN presentation canva plan et slides
Regles sur la gestion de l’Eclairage public
Binayat 3D PROJET ECOLE SUR ENERGETIQUE DU BATIMENTS
Cours_IoT.pptx k
template SR.pptx pour les présentations de soutenances
Controle-and-Assurance-Qualite-logicielle-Developpement-du-tableau-de-bord-de...
Présentation de l’Analyse et Concepti SI
Chapitre7-java------------------ Exception.pptx

D’un modèle d'IA dans un notebook à un service temps réel : architecturons !