Présantation du projet
Nous allons analyser les performances d'un système de détection de téléphones mobiles basé sur l'architecture DAMO-YOLO, optimisé pour les environnements à faible puissance de calcul. L'objectif est de déterminer précisément les besoins en ressources matérielles (GPU, VRAM, CPU) de cette application d'inférence légère.
Environnement de test et méthodologie
Configurations matérielles
L'évaluation a été réalisée sur trois configurations distinctes afin de couvrir différents cas d'usage :
| Configuration | Processeur graphique | Processeur | Mémoire système | Notes |
|---|---|---|---|---|
| Configuration Alpha | NVIDIA T4 (16 Go) | Intel Xeon, 8 cœurs | 32 Go | Serveur cloud standard |
| Configuration Beta | NVIDIA RTX 3060 (12 Go) | AMD Ryzen, 6 cœurs | 16 Go | GPU grand public |
| Configuration Gamma | Intégré uniquement | Intel i5, 4 cœurs | 8 Go | Mode exclusif CPU |
Outils de surveillance
Les métriques de performance ont été collectées à l'aide des utilitaires suivants :
# Surveillance du processeur graphique via un intervalle d'une seconde
nvidia-smi --loop=1
# Surveillance de l'utilisation CPU et de la mémoire système
htop
vmstat 1
# Suivi détaillé au niveau des processus
pidstat -d -u -p ALL 1
Scénarios de test
- État de repos : Consommation de base du système chargé mais inactif.
- Inférence unitaire : Charge maximale lors du traitemant d'une seule image.
- Test de charge continue : Consommation en régime permanent lors d'un flux continu d'images.
Analyse des résultats
Occupation des ressources graphiques
Les mesures pour la Configuration Alpha (NVIDIA T4) sont résumées ci-dessous :
| Scénario | Utilisation GPU | Mémoire VRAM utilisée | Consommation électrique |
|---|---|---|---|
| État de repos | 0-2% | ~1,2 Go | 25 W |
| Inférence unitaire | 35-45% | ~1,5 Go | 65 W |
| Charge continue | 40-50% | ~1,5 Go | 70 W |
Pour la Configuration Beta (NVIDIA RTX 3060) :
| Scénario | Utilisation GPU | Mémoire VRAM utilisée | Consommation électrique |
|---|---|---|---|
| État de repos | 0-1% | ~0,8 Go | 15 W |
| Inférence unitaire | 25-35% | ~1,1 Go | 95 W |
| Charge continue | 30-40% | ~1,1 Go | 100 W |
Ces données confirment la nature légère du modèle DAMO-YOLO : l'empreinte mémoire VRAM n'excède pas 1,5 Go, et l'utilisation du GPU reste modérée, autorisant une exploitation simultanée d'uatres tâches sur la carte graphique.
Sollicitation du processeur et de la mémoire vive
Le modèle d'utilisation du CPU suit généralement cette tendance :
# Modèle typique de charge processeur
def profil_charge_cpu():
# Phase d'initialisation : chargement du modèle, pic temporaire
pic_demarrage = "60-80% (pendant 2-3 secondes)"
# Fonctionnement normal : pré-traitement et post-traitement
charge_normale = "15-25% (sur une machine 4 cœurs)"
# Pointe d'inférence : assistance calculatoire au GPU
pic_detection = "30-40% (pointe brève)"
return "Charge CPU globale faible"
L'empreinte mémoire vive (RAM) mesurée :
| Configuration | Mémoire de base | Mémoire maximale observée | Mémoire recommandée |
|---|---|---|---|
| Alpha (32 Go) | 1,2 Go | 1,8 Go | 4 Go+ |
| Beta (16 Go) | 1,1 Go | 1,7 Go | 4 Go+ |
| Gamma (8 Go) | 1,0 Go | 1,6 Go | 4 Go+ |
Thermique et gestion de la chaleur
Lors d'une utilisation prolongée sur la Configuration Beta (1 heure), les températures se stabilisent sans atteindre de niveaux critiques : le GPU passe de 35°C à 68°C, le CPU reste entre 45°C et 55°C, et les ventilateurs tournent à environ 40% de leur vitesse maximale, avec un niveau sonore modéré.
Recommandations d'optimisation
Suggestions de configuration matérielle
# Configuration minimale
GPU: 4 Go de VRAM ou plus (ex: GTX 1650)
CPU: 4 cœurs ou plus
RAM: 8 Go
Stockage: 200 Mo d'espace libre
# Configuration recommandée pour un usage confortable
GPU: 8 Go de VRAM (ex: RTX 3060)
CPU: 8 cœurs
RAM: 16 Go
Ajustements et techniques de surveillance
Pour réduire l'empreinte mémoire GPU, on peut ajuster les paramètres d'inférence :
# Paramètres d'inférence ajustables
parametres_detection = {
'taille_lot': 4, # Réduire pour diminuer l'occupation VRAM
'seuil_confiance': 0.5, # Ajuster selon les besoins de précision
'accelerateur': 'cuda' # Choisir l'unité de calcul
}
Un script de surveillance système peut être implémenté ainsi :
#!/bin/bash
# Script de surveillance des ressources en temps réel
while true; do
echo "--- $(date) ---"
nvidia-smi --query-gpu=utilization.gpu,memory.used --format=csv,noheader
echo "Charge CPU: $(mpstat 1 1 | awk '/Average:/ {print $3}')%"
echo "Mémoire utilisée: $(free -m | awk '/Mem:/ {print $3}') Mo"
sleep 3
done
Besoins en ressources par scénario de déploiement
| Cas d'usage | Utilisateurs simultanés | Besoin GPU | Besoin CPU | Besoin RAM |
|---|---|---|---|---|
| Usage personnel | 1-2 | 4 Go VRAM | 4 cœurs | 8 Go |
| Petite équipe | 5-10 | 8 Go VRAM | 8 cœurs | 16 Go |
| Déploiement en entreprise | 20-50 | 16 Go VRAM | 16 cœurs | 32 Go |
Les coûts d'exploitation estimés sur des plateformes cloud publics varient de 50 à 1500 euros mensuels selon l'échelle du déploiement et la tarification à l'usage.