Service Batch Inference
Rôle : Le consommateur (compute bound / GPU)
Source : services/batch-inference
Responsabilités
Ce service est le « cerveau » de l’opération. Il exécute le réseau de neurones YOLO.
1. Batching dynamique
Il n’enchaîne pas les frames au fil de l’eau : il attend (jusqu’à BATCH_WAIT_MS) pour accumuler assez de frames et remplir un batch GPU.
- Entrées : Liste de JPEGs provenant de différentes caméras.
- Sortie : Un seul tenseur
[N, 3, 640, 640].
2. Optimisation TensorRT
En production nous n’utilisons pas PyTorch brut. Les modèles sont optimisés en moteurs TensorRT (.engine).
- Quantification FP16 : Réduit l’usage mémoire d’environ 50 % avec une perte de précision négligeable.
- Fusion de couches : Combine plusieurs couches du réseau en opérations kernel uniques.
3. Dispatch des résultats
Après l’inférence, le service sépare les résultats du batch en réponses individuelles, les étiquette avec le camera_id d’origine, puis les pousse dans la queue results.