Model Pruning
Apprends comment l'élagage des modèles réduit la taille et la complexité des réseaux de neurones pour l'IA en périphérie. Explore les stratégies pour optimiser Ultralytics YOLO26 pour une inférence plus rapide sur mobile.
L'élagage de modèle est une technique d'apprentissage automatique utilisée pour réduire la taille et la complexité computationnelle d'un réseau de neurones en supprimant systématiquement les paramètres inutiles. Tout comme un jardinier taille les branches mortes ou trop envahissantes pour favoriser la croissance d'un arbre, les développeurs élaguent les réseaux artificiels pour les rendre plus rapides, plus petits et plus économes en énergie. Ce processus est essentiel pour déployer des architectures d'apprentissage profond (deep learning) modernes sur des appareils aux ressources limitées, tels que les smartphones, les capteurs embarqués et le matériel d'informatique en périphérie (edge computing).
Link to this sectionComment fonctionne l'élagage de modèle#
L'idée centrale derrière l'élagage est que les réseaux de neurones profonds sont souvent « sur-paramétrés », ce qui signifie qu'ils contiennent beaucoup plus de poids et de biais que ce qui est strictement nécessaire pour résoudre un problème spécifique. Au cours du processus d'entraînement, le modèle apprend un grand nombre de connexions, mais toutes ne contribuent pas de manière égale au résultat final. Les algorithmes d'élagage analysent le modèle entraîné pour identifier ces connexions redondantes ou non informatives — généralement celles dont les poids sont proches de zéro — et les suppriment.
Le cycle de vie d'un modèle élagué suit généralement ces étapes :
-
Entraînement : Un grand modèle est entraîné jusqu'à convergence pour capturer des caractéristiques complexes.
-
Élagage : Les paramètres de faible importance sont mis à zéro ou physiquement supprimés de la structure du réseau.
-
Ajustement fin (fine-tuning) : Le modèle subit une seconde phase d' ajustement fin pour permettre aux paramètres restants de s'ajuster et de récupérer toute précision perdue pendant la phase d'élagage.
Cette méthodologie est souvent associée à l'hypothèse du ticket de loterie, qui suggère que les réseaux denses contiennent des sous-réseaux plus petits et isolés (tickets gagnants) capables d'atteindre une précision comparable à celle du modèle original s'ils sont entraînés isolément.
Link to this sectionTypes de stratégies d'élagage#
Les méthodes d'élagage sont généralement classées selon la structure des composants supprimés.
- Élagage non structuré : Cette approche supprime des poids individuels n'importe où dans le modèle en fonction d'un seuil (par exemple, l'amplitude). Bien que cela réduise efficacement le nombre de paramètres, cela entraîne des matrices creuses qui peuvent être difficiles à traiter efficacement par le matériel standard. Sans logiciels spécialisés ou accélérateurs matériels, l'élagage non structuré peut ne pas apporter d'améliorations significatives de la vitesse.
- Élagage structuré : Cette méthode supprime des structures géométriques entières, telles que des canaux, des filtres ou des couches au sein d'un réseau de neurones convolutifs (CNN). En préservant la structure de matrice dense, le modèle élagué reste compatible avec le matériel GPU et CPU standard, ce qui entraîne des améliorations directes en termes de latence d'inférence et de débit.
Link to this sectionApplications concrètes#
L'élagage est un catalyseur critique pour l'Edge AI, permettant à des modèles sophistiqués de fonctionner dans des environnements où la connectivité cloud est indisponible ou trop lente.
- Détection d'objets sur mobile : Les applications sur appareils mobiles, telles que la traduction linguistique en temps réel ou la réalité augmentée, utilisent des modèles élagués pour préserver l'autonomie de la batterie et réduire l'utilisation de la mémoire. Les architectures optimisées comme YOLO26 sont souvent des bases privilégiées pour ces tâches en raison de leur efficacité intrinsèque.
- Sécurité automobile : Les voitures autonomes et les véhicules autonomes nécessitent une prise de décision en une fraction de seconde. Les modèles élagués permettent aux ordinateurs embarqués de traiter les flux de caméras haute résolution pour la détection des piétons sans la latence induite par la transmission de données vers un serveur.
- IoT industriel : Dans la fabrication, les systèmes d'inspection visuelle sur les chaînes de montage utilisent des modèles légers pour détecter les défauts. L'élagage garantit que ces systèmes peuvent fonctionner sur des microcontrôleurs rentables plutôt que sur des serveurs coûteux.
Link to this sectionÉlagage vs. techniques d'optimisation connexes#
Bien que l'élagage de modèle soit un outil puissant, il est souvent confondu avec d'autres techniques d'optimisation de modèle ou utilisé conjointement avec celles-ci.
- Élagage vs. Quantification : L'élagage réduit le nombre de paramètres (connexions) dans le modèle. En revanche, la quantification de modèle réduit la précision de ces paramètres, par exemple en convertissant des nombres à virgule flottante 32 bits en entiers 8 bits. Les deux sont souvent combinés pour maximiser l'efficacité pour le déploiement de modèle.
- Élagage vs. Distillation de connaissances : L'élagage modifie le modèle original en en supprimant des parties. La distillation de connaissances implique l'entraînement d'un tout nouveau modèle « étudiant » plus petit pour imiter le comportement d'un modèle « enseignant » plus grand.
Link to this sectionExemple d'implémentation#
L'exemple Python suivant montre comment appliquer un élagage non structuré à une couche convolutive en utilisant PyTorch. Il s'agit d'une étape courante avant d'exporter des modèles vers des formats optimisés comme ONNX.
import torch
import torch.nn as nn
import torch.nn.utils.prune as prune
# Initialize a standard convolutional layer
module = nn.Conv2d(in_channels=1, out_channels=20, kernel_size=3)
# Apply unstructured pruning to remove 30% of the connections
# This sets the weights with the lowest L1-norm to zero
prune.l1_unstructured(module, name="weight", amount=0.3)
# Calculate and print the sparsity (percentage of zero elements)
sparsity = 100.0 * float(torch.sum(module.weight == 0)) / module.weight.nelement()
print(f"Layer Sparsity: {sparsity:.2f}%")Pour les utilisateurs souhaitant gérer l'ensemble du cycle de vie de leurs jeux de données et de leurs modèles — incluant l'entraînement, l'évaluation et le déploiement — l'Ultralytics Platform offre une interface simplifiée. Elle facilite le processus de création de modèles hautement optimisés comme YOLO26 et leur exportation vers des formats compatibles avec le matériel tels que TensorRT ou CoreML.






