Optymalizacja współpracy

Utrzymywany przez Arm ML Tooling

Ten dokument zawiera przegląd eksperymentalnych interfejsów API umożliwiających łączenie różnych technik w celu optymalizacji modeli uczenia maszynowego pod kątem wdrożenia.

Przegląd

Optymalizacja oparta na współpracy to nadrzędny proces obejmujący różne techniki tworzenia modelu, który po wdrożeniu wykazuje najlepszą równowagę cech docelowych, takich jak szybkość wnioskowania, rozmiar modelu i dokładność.

Ideą optymalizacji opartych na współpracy jest opieranie się na indywidualnych technikach poprzez stosowanie ich jedna po drugiej w celu osiągnięcia skumulowanego efektu optymalizacji. Możliwe są różne kombinacje następujących optymalizacji:

Problem, który pojawia się przy próbie połączenia tych technik, polega na tym, że zastosowanie jednej zazwyczaj niszczy wyniki poprzedniej techniki, psując ogólne korzyści z jednoczesnego stosowania ich wszystkich; na przykład klastrowanie nie zachowuje rzadkości wprowadzonej przez interfejs API czyszczenia. Aby rozwiązać ten problem, wprowadzamy następujące eksperymentalne techniki optymalizacji opartej na współpracy:

Zapewniają one kilka ścieżek wdrażania, które można wykorzystać do kompresji modelu uczenia maszynowego i wykorzystania przyspieszenia sprzętowego w czasie wnioskowania. Poniższy diagram przedstawia kilka ścieżek wdrażania, które można zbadać w poszukiwaniu modelu o pożądanych cechach wdrożenia, gdzie węzły-liście są modelami gotowymi do wdrożenia, co oznacza, że ​​są częściowo lub całkowicie skwantowane i mają format tflite. Zielone wypełnienie wskazuje etapy, w których wymagane jest ponowne szkolenie/dostrojenie, a przerywana czerwona ramka podkreśla etapy optymalizacji opartej na współpracy. Technika zastosowana do uzyskania modelu w danym węźle jest wskazana na odpowiedniej etykiecie.

collaborative optimization

Na powyższym rysunku pominięto bezpośrednią ścieżkę wdrożenia obejmującą wyłącznie kwantyzację (po szkoleniu lub QAT).

Zamysłem jest osiągnięcie w pełni zoptymalizowanego modelu na trzecim poziomie powyższego drzewa wdrożeniowego; jednakże dowolny z pozostałych poziomów optymalizacji może okazać się zadowalający i osiągnąć wymagany kompromis w zakresie opóźnienia wnioskowania/dokładności, w którym to przypadku dalsza optymalizacja nie jest konieczna. Zalecany proces szkoleniowy polegałby na iteracyjnym przejściu przez poziomy drzewa wdrożenia mającego zastosowanie do docelowego scenariusza wdrożenia i sprawdzeniu, czy model spełnia wymagania dotyczące opóźnień wnioskowania, a jeśli nie, zastosowanie odpowiedniej techniki optymalizacji opartej na współpracy w celu dalszej kompresji modelu i powtórzenia dopóki model nie zostanie w pełni zoptymalizowany (oczyszczony, skupiony i skwantowany), jeśli to konieczne.

Poniższy rysunek przedstawia wykresy gęstości jądra o masie próbki przechodzącej przez potok wspólnej optymalizacji.

collaborative optimization density plot

Rezultatem jest skwantowany model wdrażania ze zmniejszoną liczbą unikalnych wartości, a także znaczną liczbą rzadkich wag, w zależności od docelowej rzadkości określonej w czasie szkolenia. Poza znaczącymi zaletami kompresji modelu, specyficzna obsługa sprzętu może wykorzystać te rzadkie, klastrowe modele, aby znacznie zmniejszyć opóźnienia wnioskowania.

Wyniki

Poniżej znajdują się niektóre wyniki dotyczące dokładności i kompresji, które uzyskaliśmy podczas eksperymentowania ze wspólnymi ścieżkami optymalizacji PQAT i CQAT.

Szkolenie w zakresie świadomości kwantyzacji zachowującej rzadkość (PQAT)

Model Rzeczy Linia bazowa Model przycięty (rzadkość 50%) Model QAT Model PQAT
DS-CNN-L Dokładność FP32 Top1 95,23% 94,80% (Fałszywy INT8) 94,721% (Fałszywy INT8) 94,128%
Pełna kwantyzacja całkowitoliczbowa INT8 94,48% 93,80% 94,72% 94,13%
Kompresja 528128 → 434879 (17,66%) 528128 → 334154 (36,73%) 512224 → 403261 (21,27%) 512 032 → 303 997 (40,63%)
Mobilenet_v1-224 FP32 Najwyższa dokładność 1 70,99% 70,11% (Fałszywy INT8) 70,67% (Fałszywy INT8) 70,29%
Pełna kwantyzacja całkowitoliczbowa INT8 69,37% 67,82% 70,67% 70,29%
Kompresja 4665520 → 3880331 (16,83%) 4 665 520 → 2 939 734 (37,00%) 4569416 → 3808781 (16,65%) 4569416 → 2869600 (37,20%)

Szkolenie uwzględniające kwantyzację zachowującą klastry (CQAT)

Model Rzeczy Linia bazowa Model klastrowy Model QAT Model CQAT
Mobilenet_v1 na CIFAR-10 Dokładność FP32 Top1 94,88% 94,48% (Fałszywy INT8) 94,80% (Fałszywy INT8) 94,60%
Pełna kwantyzacja całkowitoliczbowa INT8 94,65% 94,41% 94,77% 94,52%
Rozmiar 3,00 MB 2,00 MB 2,84MB 1,94 MB
Mobilenet_v1 w ImageNet FP32 Najwyższa dokładność 1 71,07% 65,30% (Fałszywy INT8) 70,39% (Fałszywy INT8) 65,35%
Pełna kwantyzacja całkowitoliczbowa INT8 69,34% 60,60% 70,35% 65,42%
Kompresja 4665568 → 3886277 (16,7%) 4 665 568 → 3 035 752 (34,9%) 4569416 → 3804871 (16,7%) 4569472 → 2912655 (36,25%)

Wyniki CQAT i PCQAT dla modeli skupionych na kanale

Poniższe wyniki uzyskano stosując technikę grupowania na kanał . Pokazują, że jeśli warstwy splotowe modelu są skupione na kanale, wówczas dokładność modelu jest wyższa. Jeśli Twój model ma wiele warstw splotowych, zalecamy klastrowanie według kanału. Stopień kompresji pozostaje taki sam, ale dokładność modelu będzie wyższa. W naszych eksperymentach potok optymalizacji modelu jest „klastrowany -> zachowujący klaster QAT -> kwantyzacja po szkoleniu, int8”.

Model Klastrowany -> CQAT, skwantowany int8 Klastrowane na kanał -> CQAT, kwantowane int8
DS-CNN-L 95,949% 96,44%
MobileNet-V2 71,538% 72,638%
MobileNet-V2 (przycięty) 71,45% 71,901%

Przykłady

Aby zapoznać się z kompleksowymi przykładami opisanych tutaj technik optymalizacji współpracy, zapoznaj się z przykładowymi notatnikami CQAT , PQAT , klastrowanie zachowujące rzadkość i PCQAT .