17. Point d’arrivée : MODEL-as-SERVICE
modèle
input
prediction
webservice
18. Point d’arrivée : MODEL-as-SERVICE
input
prediction
webservice
modèle
19. 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
21. Etape 1 : l’API
API
modèle
?
POST
predict
<data>
22. Etape 2 : le « wrapper »
Objectif : avoir un contrat d’interface pour le modèle
predict(data) modèle
23. 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)
24. 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)
25. 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
26. Etape 2 : le « wrapper »
API
POST
predict
<data>
modèle
MODEL SERVING NODE
27. Etape 2 : le « wrapper »
API
POST
predict
<data>
modèle
MODEL SERVING NODE
28. modèle
Etape 2 : le « wrapper »
API
POST
predict
<data>
MODEL SERVING NODE
29. Point d’arrivée : MODEL-as-SERVICE
modèle
input
prediction
webservice
33. 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”
?
34. Etape 3 : ?
?
POST
predict
<data>
modèle
MODEL SERVING NODE
API
35. Etape 3 : « event queue » + « event
processor »
Request queue
POST
predict
<data>
modèle
MODEL SERVING NODE
MESSAGE BROKER
API
36. Etape 3 : « event queue » + « event
processor »
Request queue
POST
predict
<data>
modèle
EVENT PROCESSOR
MESSAGE BROKER
API
37. Etape 3 : « event queue » + « event
processor »
Request queue
Prediction queue
POST
predict
<data>
API EVENT PROCESSOR
MESSAGE BROKER
modèle
38. Model-as-service – solution 2
Request queue
Prediction queue
POST
predict
<data>
API EVENT PROCESSOR
MESSAGE BROKER
modèle
45. Near real time : timeout
POST
predict
<data>
EVENT PROCESSOR
MESSAGE BROKER
modèle
Request queue
Prediction queue
API
46. Near real time : timeout, FIFO?
POST
predict
<data>
EVENT PROCESSOR
MESSAGE BROKER
modèle
Request queue
Prediction queue
API
47. 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:
53. 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
54. Feature engineering & Preprocessing
Création de features :
Agrégations transaction
courante
24 heures
moyenne des montants
58. Etape 4 : « base de données»
database
POST
predict
<data>
Request queue
Prediction queue
API EVENT PROCESSOR
MESSAGE BROKER
modèle
59. 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
60. 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
61. model-as-service – solution 4
database
POST
predict
<data>
Request queue
Prediction queue
API EVENT PROCESSOR
MESSAGE BROKER
modèle
66. 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