Je me trouve dans le scénario suivant :
- Cluster Kubernetes à un seul nœud (1x i7-8700K, 1x RTX 2070, 32GB RAM)
- 1 Tensorflow Serving Pod
- 4 Pods clients d'inférence
Les clients d'inférence obtiennent des images de 4 caméras distinctes (1 chacune) et les transmettent à TF-Serving pour inférence afin de comprendre ce qui est vu sur les flux vidéo.
Auparavant, j'effectuais l'inférence à l'intérieur des pods du client d'inférence individuellement en appelant directement TensorFlow, mais cela n'était pas bon pour la RAM de la carte graphique. Tensorflow Serving a été introduit dans le mélange assez récemment afin d'optimiser la RAM car nous ne chargeons pas de modèles dupliqués sur la carte graphique.
Et les performances ne sont pas bonnes, pour une image 1080p, cela ressemble à ceci :
TF directe : 20 ms pour la création du tenseur d'entrée, 70 ms pour l'inférence. Service TF : 80 ms pour la sérialisation GRPC, 700-800 ms pour l'inférence.
Le pod TF-Serving est le seul à avoir accès au GPU et il est lié exclusivement. Tout le reste fonctionne sur le CPU.
Y a-t-il des améliorations que je pourrais apporter aux performances ?
Le modèle que j'utilise est Faster R-CNN Inception V2 du TF Model Zoo.
Merci d'avance !