Quantification du modèle
Optimisez les performances de l'IA grâce à la quantification des modèles. Réduisez la taille, augmentez la vitesse et améliorez l'efficacité énergétique pour les déploiements dans le monde réel.
La quantification de modèle est une technique puissante d'optimisation de modèle qui réduit l'empreinte mémoire et le coût de calcul d'un réseau neuronal (RN) en convertissant ses poids et activations de nombres à virgule flottante de haute précision (tels que 32-bit float ou FP32) en types de données de précision inférieure, tels que les entiers de 8 bits (INT8). Ce processus rend les modèles considérablement plus petits et plus rapides, ce qui permet de les déployer sur du matériel aux ressources limitées, comme les téléphones mobiles et les systèmes embarqués. L'objectif principal est d'améliorer les performances, en particulier la latence de l'inférence, avec un impact minimal sur la précision prédictive du modèle.
Fonctionnement de la quantification des modèles
Le processus de quantification consiste à convertir la gamme continue de valeurs à virgule flottante d'un modèle entraîné en un ensemble plus petit et discret de valeurs entières. Cette conversion réduit le nombre de bits nécessaires pour stocker chaque paramètre, ce qui diminue la taille globale du modèle. En outre, les calculs utilisant des nombres entiers de moindre précision sont beaucoup plus rapides sur de nombreux processeurs modernes et accélérateurs d'IA spécialisés tels que les GPU et TPU, qui disposent d'instructions dédiées à l'arithmétique des nombres entiers.
Il existe deux méthodes principales pour appliquer la quantification :
- Quantification post-entraînement (PTQ) : Il s'agit de l'approche la plus simple, qui consiste à convertir un modèle déjà entraîné dans un format de précision inférieure. Il s'agit d'un processus rapide qui implique l'analyse de la distribution des poids et des activations sur un petit ensemble de données d'étalonnage afin de déterminer la correspondance optimale entre les nombres flottants et les nombres entiers.
- Formation tenant compte de la quantification (QAT): Dans cette méthode, le modèle est formé ou affiné tout en simulant les effets de la quantification. Le passage avant du processus de formation imite l'inférence quantifiée, ce qui permet au modèle de s'adapter à la précision réduite. Le QAT permet souvent d'obtenir une plus grande précision que le PTQ car le modèle apprend à compenser la perte potentielle d'informations pendant la phase d'apprentissage. Des frameworks tels que PyTorch et TensorFlow fournissent des outils robustes pour la mise en œuvre de l'EAQ.
Applications dans le monde réel
La quantification est essentielle pour l'exécution de modèles sophistiqués de vision par ordinateur dans des scénarios réels, en particulier sur les dispositifs d'intelligence artificielle de pointe.
- Analyse d'images sur l'appareil : De nombreuses applications pour smartphones utilisent des modèles quantifiés pour les fonctions en temps réel. Par exemple, une application permettant la détection d'objets en direct grâce à l'appareil photo, comme l'identification de produits ou de points de repère, s'appuie sur un modèle quantifié comme Ultralytics YOLO11 pour fonctionner efficacement sur le matériel du téléphone sans épuiser la batterie ou nécessiter une connexion au nuage.
- Automobile et robotique : Dans les véhicules autonomes, les modèles de détection des piétons et de maintien de la trajectoire doivent fonctionner avec une latence extrêmement faible. La quantification de ces modèles leur permet de fonctionner sur du matériel spécialisé comme le NVIDIA Jetson ou le Google Coral Edge TPU, garantissant ainsi que les décisions sont prises en quelques fractions de seconde, ce qui est crucial pour la sécurité.
Quantification et autres techniques d'optimisation
La quantification de modèle est souvent utilisée parallèlement à d'autres méthodes d'optimisation, mais elle se distingue par son approche.
- Élagage du modèle: Cette technique consiste à supprimer les connexions (poids) redondantes ou sans importance au sein du réseau neuronal afin d'en réduire la taille et la complexité. Alors que l'élagage réduit la taille du réseau en en supprimant certaines parties, la quantification rend les parties restantes plus efficaces en réduisant leur précision numérique. Les deux méthodes sont souvent combinées pour une optimisation maximale.
- Distillation des connaissances: Il s'agit d'entraîner un modèle "étudiant" plus petit à imiter un modèle "enseignant" plus grand et entraîné au préalable. L'objectif est de transférer les connaissances de l'enseignant dans une architecture plus compacte. Cette méthode diffère de la quantification, qui modifie la représentation numérique d'un modèle existant plutôt que d'en former un nouveau.
- Précision mixte: Cette technique utilise une combinaison de différentes précisions numériques (par exemple, FP16 et FP32) pendant l'apprentissage du modèle afin d'accélérer le processus et de réduire l'utilisation de la mémoire. Bien qu'elle soit liée à cette technique, il s'agit avant tout d'une optimisation de l'apprentissage, alors que la quantification est généralement axée sur l'optimisation du modèle pour l'inférence.
Considérations et soutien
Bien que très bénéfique, la quantification peut potentiellement avoir un impact sur la précision du modèle. Il est essentiel d'effectuer une évaluation approfondie à l'aide de mesures de performance pertinentes après la quantification afin de s'assurer que le compromis de performance est acceptable.
Ultralytics facilite le déploiement de modèles quantifiés en prenant en charge l'exportation vers des formats adaptés à la quantification. Ces formats comprennent ONNX pour une large compatibilité, OpenVINO pour l'optimisation sur le matériel Intel et TensorRT pour des performances élevées sur les GPU NVIDIA. Des plateformes comme Ultralytics HUB peuvent aider à gérer l'ensemble du cycle de vie, de l'entraînement au déploiement de modèles optimisés. Les intégrations avec des outils tels que Neural Magic exploitent également la quantification et l'élagage pour obtenir des performances de classe GPU sur les CPU.