Optimisation collaborative

Entretenu par Arm ML Tooling

Ce document fournit une vue d'ensemble des API expérimentales pour combiner diverses techniques afin d'optimiser les modèles d'apprentissage automatique pour le déploiement.

Aperçu

L'optimisation collaborative est un processus global qui englobe diverses techniques pour produire un modèle qui, lors du déploiement, présente le meilleur équilibre entre les caractéristiques cibles telles que la vitesse d'inférence, la taille du modèle et la précision.

L'idée des optimisations collaboratives est de s'appuyer sur des techniques individuelles en les appliquant les unes après les autres pour obtenir l'effet d'optimisation accumulé. Différentes combinaisons des optimisations suivantes sont possibles :

Le problème qui se pose lorsque l'on tente d'enchaîner ces techniques est que l'application d'une seule détruit généralement les résultats de la technique précédente, gâchant l'avantage global de toutes les appliquer simultanément; par exemple, le clustering ne préserve pas la parcimonie introduite par l'API d'élagage. Pour résoudre ce problème, nous introduisons les techniques expérimentales d'optimisation collaborative suivantes :

Ceux-ci fournissent plusieurs chemins de déploiement qui pourraient être utilisés pour compresser un modèle d'apprentissage automatique et tirer parti de l'accélération matérielle au moment de l'inférence. Le diagramme ci-dessous illustre plusieurs chemins de déploiement qui peuvent être explorés dans la recherche du modèle avec les caractéristiques de déploiement souhaitées, où les nœuds feuilles sont des modèles prêts pour le déploiement, ce qui signifie qu'ils sont partiellement ou entièrement quantifiés et au format tflite. Le remplissage vert indique les étapes où un recyclage/ajustement est nécessaire et une bordure rouge en pointillés met en évidence les étapes d'optimisation collaborative. La technique utilisée pour obtenir un modèle à un nœud donné est indiquée dans l'étiquette correspondante.

collaborative optimization

Le chemin de déploiement direct de quantification uniquement (post-formation ou QAT) est omis dans la figure ci-dessus.

L'idée est d'atteindre le modèle entièrement optimisé au troisième niveau de l'arborescence de déploiement ci-dessus ; cependant, n'importe lequel des autres niveaux d'optimisation pourrait s'avérer satisfaisant et atteindre le compromis requis entre la latence d'inférence et la précision, auquel cas aucune autre optimisation n'est nécessaire. Le processus de formation recommandé serait de parcourir de manière itérative les niveaux de l'arborescence de déploiement applicables au scénario de déploiement cible et de voir si le modèle répond aux exigences de latence d'inférence et, si ce n'est pas le cas, d'utiliser la technique d'optimisation collaborative correspondante pour compresser davantage le modèle et répéter. jusqu'à ce que le modèle soit entièrement optimisé (élagué, regroupé et quantifié), si nécessaire.

La figure ci-dessous montre les diagrammes de densité du noyau de poids d'échantillon passant par le pipeline d'optimisation collaborative.

collaborative optimization density plot

Le résultat est un modèle de déploiement quantifié avec un nombre réduit de valeurs uniques ainsi qu'un nombre important de pondérations dispersées, en fonction de la parcimonie cible spécifiée au moment de la formation. Outre les avantages significatifs de la compression des modèles, une prise en charge matérielle spécifique peut tirer parti de ces modèles clairsemés en cluster pour réduire considérablement la latence d'inférence.

Résultats

Vous trouverez ci-dessous quelques résultats de précision et de compression que nous avons obtenus lors de l'expérimentation des chemins d'optimisation collaborative PQAT et CQAT.

Formation consciente de la quantification préservant la parcimonie (PQAT)

Modèle Articles Ligne de base Modèle élagué (50 % de parcimonie) Modèle QAT Modèle PQAT
DS-CNN-L FP32 Top1 Précision 95,23% 94,80% (Faux INT8) 94.721% (Faux INT8) 94.128%
Quantification entière INT8 94,48% 93,80 % 94,72 % 94,13 %
Compression 528 128 → 434 879 (17,66 %) 528 128 → 334 154 (36,73 %) 512 224 → 403 261 (21,27 %) 512 032 → 303 997 (40,63 %)
Mobilenet_v1-224 FP32 Top 1 Précision 70,99 % 70,11% (Faux INT8) 70.67% (Faux INT8) 70.29%
Quantification entière INT8 69,37% 67,82 % 70,67 % 70,29%
Compression 4 665 520 → 3 880 331 (16,83 %) 4 665 520 → 2 939 734 (37,00 %) 4 569 416 → 3 808 781 (16,65 %) 4 569 416 → 2 869 600 (37,20 %)

Formation à la quantification préservant les clusters (CQAT)

Modèle Articles Ligne de base Modèle groupé Modèle QAT Modèle CQAT
Mobilenet_v1 sur CIFAR-10 FP32 Top1 Précision 94,88 % 94,48 % (Faux INT8) 94.80% (Faux INT8) 94.60%
Quantification entière INT8 94,65 % 94,41 % 94,77 % 94,52 %
Taille 3,00 Mo 2,00 Mo 2,84 Mo 1,94 Mo
Mobilenet_v1 sur ImageNet FP32 Top 1 Précision 71,07% 65,30% (Faux INT8) 70.39% (Faux INT8) 65.35%
Quantification entière INT8 69,34 % 60,60% 70,35% 65,42 %
Compression 4 665 568 → 3 886 277 (16,7 %) 4 665 568 → 3 035 752 (34,9 %) 4 569 416 → 3 804 871 (16,7 %) 4 569 472 → 2 912 655 (36,25 %)

Résultats CQAT et PCQAT pour les modèles regroupés par canal

Les résultats ci-dessous sont obtenus avec la technique de clustering par canal . Ils illustrent que si les couches convolutives du modèle sont regroupées par canal, alors la précision du modèle est plus élevée. Si votre modèle comporte de nombreuses couches convolutives, nous vous recommandons de regrouper par canal. Le taux de compression reste le même, mais la précision du modèle sera plus élevée. Le pipeline d'optimisation du modèle est 'clustered -> cluster preserve QAT -> post training quantization, int8' dans nos expériences.

Modèle Clusterisé -> CQAT, int8 quantifié Regroupé par canal -> CQAT, int8 quantifié
DS-CNN-L 95,949 % 96,44 %
MobileNet-V2 71,538% 72,638%
MobileNet-V2 (élagué) 71,45% 71,901%

Exemples

Pour obtenir des exemples de bout en bout des techniques d'optimisation collaborative décrites ici, veuillez vous reporter aux blocs-notes d'exemples CQAT , PQAT , sparsity-preserving clustering et PCQAT .