Pruning
Découvre comment l’élagage optimise les réseaux neuronaux comme Ultralytics YOLO26 en supprimant les paramètres redondants. Explore les méthodes structurées et non structurées pour l’IA en périphérie.
L’élagage est une technique stratégique d’optimisation des modèles utilisée pour réduire la taille et la complexité computationnelle des réseaux neuronaux en supprimant les paramètres inutiles. Tout comme un jardinier taille les branches mortes ou envahissantes pour aider un arbre à s’épanouir, les algorithmes d’élagage identifient et éliminent les poids et biais redondants qui contribuent peu à la capacité prédictive d’un modèle. L’objectif principal est de créer un modèle compressé et « parcimonieux » qui conserve une grande précision tout en consommant beaucoup moins de mémoire et d’énergie. Cette réduction est essentielle pour améliorer la latence d’inférence, ce qui permet à des architectures avancées de fonctionner efficacement sur du matériel aux ressources limitées, comme les téléphones mobiles et les appareils embarqués.
Mécanismes et méthodologie#
Les modèles modernes de deep learning sont souvent surparamétrés, ce qui signifie qu’ils contiennent bien plus de connexions que nécessaire pour résoudre une tâche donnée. L’élagage exploite ce fait en supprimant les connexions dont les valeurs sont proches de zéro, en partant du principe qu’elles ont un impact négligeable sur la sortie. Une fois les paramètres supprimés, le modèle fait généralement l’objet d’un processus d’ajustement fin, au cours duquel il est brièvement réentraîné afin d’ajuster les poids restants et de récupérer les performances perdues. Ce concept est étroitement lié à l’hypothèse du ticket de loterie, selon laquelle les grands réseaux contiennent des sous-réseaux plus petits et très efficaces, capables d’atteindre une précision similaire.
Il existe deux grandes catégories de stratégies d’élagage :
- Élagage non structuré : cette méthode supprime des poids individuels en fonction de leur amplitude, quelle que soit leur position. Bien qu’elle réduise efficacement le nombre total de paramètres, elle crée des matrices creuses irrégulières que les CPU et GPU standard peuvent avoir du mal à traiter efficacement sans logiciel spécialisé.
- Élagage structuré : cette approche supprime des structures géométriques entières, comme des neurones, des canaux ou des couches au sein d’un réseau neuronal convolutif (CNN). En préservant la structure matricielle, l’élagage structuré est très compatible avec les accélérateurs matériels standard et permet souvent d’accélérer immédiatement l’inférence en temps réel.
Applications concrètes#
L’élagage est indispensable pour permettre l’IA en périphérie dans divers secteurs où les ressources matérielles sont limitées :
-
Drones autonomes : les véhicules aériens sans pilote utilisés pour la recherche et le sauvetage s’appuient sur la vision par ordinateur pour se déplacer dans des environnements complexes. Les modèles élagués de détection d’objets permettent à ces appareils de traiter localement les flux vidéo en temps réel, évitant ainsi les problèmes de latence liés aux communications avec le cloud.
-
Santé mobile : les appareils médicaux portatifs destinés à l’analyse échographique utilisent des modèles élagués pour détecter directement les anomalies sur l’appareil. Cela garantit la confidentialité des données des patients et permet d’effectuer des diagnostics sophistiqués dans des zones isolées dépourvues d’accès à Internet.
Exemple d’implémentation#
Bien que les modèles de pointe comme YOLO26 soient conçus pour être efficaces, les développeurs peuvent appliquer l’élagage pour optimiser davantage les couches à l’aide de bibliothèques comme PyTorch. L’exemple suivant montre comment appliquer un élagage non structuré à une couche convolutive.
import torch
import torch.nn.utils.prune as prune
# Initialize a standard convolutional layer
layer = torch.nn.Conv2d(in_channels=3, out_channels=32, kernel_size=3)
# Apply L1 unstructured pruning to remove 30% of weights with the lowest magnitude
prune.l1_unstructured(layer, name="weight", amount=0.3)
# Verify sparsity (percentage of zero parameters)
sparsity = 100.0 * float(torch.sum(layer.weight == 0)) / layer.weight.nelement()
print(f"Sparsity achieved: {sparsity:.2f}%")Élagage et techniques d'optimisation connexes#
Pour optimiser efficacement un modèle en vue de son déploiement, il est utile de distinguer l’élagage des autres stratégies :
- Quantification des modèles : contrairement à l’élagage, qui supprime des connexions, la quantification réduit la précision des poids, par exemple en convertissant des nombres à virgule flottante sur 32 bits en entiers sur 8 bits. Les deux techniques peuvent être utilisées ensemble pour maximiser l’efficacité sur les systèmes embarqués.
- Distillation des connaissances : cette méthode consiste à entraîner un modèle « étudiant » plus petit pour reproduire le comportement d’un modèle « enseignant » plus grand. L’élagage modifie directement le modèle d’origine, tandis que la distillation entraîne une nouvelle architecture compacte.
Pour assurer une gestion complète du cycle de vie, notamment l’entraînement, l’annotation et le déploiement de modèles optimisés, tu peux utiliser la plateforme Ultralytics. Elle simplifie le workflow, de la gestion des jeux de données à l’exportation des modèles dans des formats adaptés au matériel, comme ONNX ou TensorRT.









