Ottimizzazione collaborativa

Gestito da Arm ML Tooling

Questo documento fornisce una panoramica delle API sperimentali per combinare varie tecniche per ottimizzare i modelli di apprendimento automatico per la distribuzione.

Panoramica

L'ottimizzazione collaborativa è un processo globale che comprende varie tecniche per produrre un modello che, al momento dell'implementazione, mostri il miglior equilibrio tra le caratteristiche dell'obiettivo come la velocità di inferenza, la dimensione del modello e la precisione.

L'idea delle ottimizzazioni collaborative è quella di basarsi su singole tecniche applicandole una dopo l'altra per ottenere l'effetto di ottimizzazione accumulato. Sono possibili varie combinazioni delle seguenti ottimizzazioni:

Il problema che sorge quando si tenta di concatenare queste tecniche insieme è che applicarne una in genere distrugge i risultati della tecnica precedente, rovinando il vantaggio complessivo dell'applicazione simultanea di tutte; ad esempio, il clustering non preserva la scarsità introdotta dall'API di potatura. Per risolvere questo problema, introduciamo le seguenti tecniche sperimentali di ottimizzazione collaborativa:

Questi forniscono diversi percorsi di distribuzione che potrebbero essere utilizzati per comprimere un modello di apprendimento automatico e per sfruttare l'accelerazione hardware al momento dell'inferenza. Il diagramma seguente mostra diversi percorsi di distribuzione che possono essere esplorati alla ricerca del modello con le caratteristiche di distribuzione desiderate, in cui i nodi foglia sono modelli pronti per la distribuzione, il che significa che sono parzialmente o completamente quantizzati e in formato tflite. Il riempimento verde indica i passaggi in cui è richiesta la riqualificazione/la messa a punto e un bordo rosso tratteggiato evidenzia i passaggi di ottimizzazione collaborativa. La tecnica utilizzata per ottenere un modello in un dato nodo è indicata nell'etichetta corrispondente.

collaborative optimization

Il percorso di distribuzione diretto, solo quantizzazione (post-formazione o QAT) è omesso nella figura sopra.

L'idea è di raggiungere il modello completamente ottimizzato al terzo livello dell'albero di distribuzione sopra; tuttavia, uno qualsiasi degli altri livelli di ottimizzazione potrebbe rivelarsi soddisfacente e ottenere il compromesso tra latenza/accuratezza dell'inferenza richiesto, nel qual caso non è necessaria un'ulteriore ottimizzazione. Il processo di addestramento consigliato sarebbe quello di passare in modo iterativo attraverso i livelli dell'albero di distribuzione applicabili allo scenario di distribuzione di destinazione e vedere se il modello soddisfa i requisiti di latenza di inferenza e, in caso contrario, utilizzare la tecnica di ottimizzazione collaborativa corrispondente per comprimere ulteriormente il modello e ripetere fino a quando il modello non è completamente ottimizzato (potato, raggruppato e quantizzato), se necessario.

La figura seguente mostra i grafici della densità del kernel di peso campione che passa attraverso la pipeline di ottimizzazione collaborativa.

collaborative optimization density plot

Il risultato è un modello di distribuzione quantizzato con un numero ridotto di valori univoci e un numero significativo di pesi sparsi, a seconda della scarsità target specificata al momento dell'addestramento. Oltre ai vantaggi significativi della compressione del modello, il supporto hardware specifico può sfruttare questi modelli sparsi e in cluster per ridurre significativamente la latenza dell'inferenza.

Risultati

Di seguito sono riportati alcuni risultati di accuratezza e compressione ottenuti durante la sperimentazione di percorsi di ottimizzazione collaborativa PQAT e CQAT.

Formazione consapevole della quantizzazione (PQAT) per preservare la sparsità

Modello Elementi Linea di base Modello Potato (50% di scarsità) Modello QAT Modello PQAT
DS-CNN-L FP32 Top1 Precisione 95,23% 94,80% (INT8 falso) 94,721% (INT8 falso) 94,128%
INT8 quantizzazione intera intera 94,48% 93,80% 94,72% 94,13%
Compressione 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 Precisione 70,99% 70,11% (INT8 falso) 70,67% (INT8 falso) 70,29%
INT8 quantizzazione intera intera 69,37% 67,82% 70,67% 70,29%
Compressione 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%)

Formazione consapevole della quantizzazione sulla conservazione dei cluster (CQAT)

Modello Elementi Linea di base Modello a grappolo Modello QAT Modello CQAT
Mobilenet_v1 su CIFAR-10 FP32 Top1 Precisione 94,88% 94,48% (INT8 falso) 94,80% (INT8 falso) 94,60%
INT8 quantizzazione intera intera 94,65% 94,41% 94,77% 94,52%
Dimensione 3,00 MB 2,00 MB 2,84 MB 1,94 MB
Mobilenet_v1 su ImageNet FP32 Top 1 Precisione 71,07% 65,30% (INT8 falso) 70,39% (INT8 falso) 65,35%
INT8 quantizzazione intera intera 69,34% 60,60% 70,35% 65,42%
Compressione 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%)

Risultati CQAT e PCQAT per modelli raggruppati per canale

I risultati seguenti sono ottenuti con la tecnica del clustering per canale . Illustrano che se gli strati convoluzionali del modello sono raggruppati per canale, l'accuratezza del modello è maggiore. Se il tuo modello ha molti livelli convoluzionali, ti consigliamo di raggruppare per canale. Il rapporto di compressione rimane lo stesso, ma la precisione del modello sarà maggiore. La pipeline di ottimizzazione del modello è "clustering -> cluster che preserva QAT -> quantizzazione post training, int8" nei nostri esperimenti.

Modello Raggruppato -> CQAT, int8 quantizzato Raggruppati per canale -> CQAT, int8 quantizzato
DS-CNN-L 95,949% 96,44%
MobileNet-V2 71,538% 72,638%
MobileNet-V2 (potato) 71,45% 71.901%

Esempi

Per esempi end-to-end delle tecniche di ottimizzazione collaborativa descritte qui, fare riferimento ai notebook di esempio CQAT , PQAT , sparsity-preserving clustering e PCQAT .