Découvrez comment l'élagage des modèles réduit la taille et la complexité des réseaux neuronaux pour l'IA en périphérie. Explorez les stratégies permettant d'optimiser Ultralytics 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 neuronal en supprimant systématiquement les paramètres inutiles. Tout comme un jardinier taille les branches mortes ou trop développées pour favoriser la croissance d'un arbre, les développeurs élaguent les réseaux artificiels afin de les rendre plus rapides, plus petits et plus économes en énergie. Ce processus est essentiel pour déployer des architectures modernes d' apprentissage profond sur des appareils aux ressources limitées, tels que les smartphones, les capteurs embarqués et le matériel informatique de pointe.
L'idée centrale derrière l'élagage est que les réseaux neuronaux profonds sont souvent « surparamétrés », ce qui signifie qu'ils contiennent beaucoup plus de weights and biases que ce qui est strictement nécessaire pour résoudre un problème spécifique. Au cours du processus d'apprentissage, 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 formé pour identifier ces connexions redondantes ou non informatives, généralement celles dont les poids sont proches de zéro, et les supprimer.
Le cycle de vie d'un modèle élagué suit généralement les étapes suivantes :
Cette méthodologie est souvent associée à l' hypothèse du billet de loterie, qui suggère que les réseaux denses contiennent des sous-réseaux plus petits et isolés (billets gagnants) qui peuvent atteindre une précision comparable à celle du modèle original s'ils sont entraînés séparément.
Les méthodes d'élagage sont généralement classées en fonction de la structure des éléments à retirer.
La taille est un catalyseur essentiel pour l'IA en périphérie, permettant à des modèles sophistiqués de fonctionner dans des environnements où la connectivité au cloud est indisponible ou trop lente.
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é en parallèle avec celles-ci.
Python suivant montre comment appliquer l'élagage non structuré à une couche convolutive à l'aide de PyTorch. Il s'agit d'une étape courante avant d'exporter des modèles vers des formats optimisés tels que 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 qui souhaitent gérer l'ensemble du cycle de vie de leurs ensembles de données et de leurs modèles, y compris la formation, l'évaluation et le déploiement, la Ultralytics offre une interface simplifiée. Elle facilite le processus de création de modèles hautement optimisés tels que YOLO26 et leur exportation vers des formats adaptés au matériel, tels que TensorRT TensorRT ou CoreML.