Als er één constante is in AI en deep learning, dan is het oneindige optimalisatie om alle mogelijke prestaties uit een bepaald platform te persen. Veel inferentietoepassingen profiteren van verminderde precisie, of het nu gaat om gemengde precisie voor terugkerende neurale netwerken (RNN's) of INT8 voor convolutionele neurale netwerken (CNN's), waar toepassingen 3x+ versnellingen kunnen krijgen. NVIDIA's Turing-architectuur introduceerde INT4-precisie, wat nog een andere mogelijkheid biedt voor versnelling. Naast rekenkundige versnellingen, kan het gebruik van INT4 ook de geheugenvoetafdruk van een netwerk verminderen en geheugenbandbreedte besparen, waardoor het gemakkelijker wordt om meerdere ensemble-netwerken op een enkele GPU uit te voeren.

NVIDIA is niet alleen het enige bedrijf dat alle vijf benchmarks van MLPerf Inference v0.5 heeft ingediend, maar heeft in de Open Division ook een INT4-implementatie van ResNet-50v1.5 ingediend. Deze implementatie leverde een doorvoerverhoging van 59% op met een nauwkeurigheidsverlies van minder dan 1%. In deze blog nemen we u mee door een kort overzicht van onze INT4-inzending, die is afgeleid van eerder onderzoek bij NVIDIA om de prestaties en nauwkeurigheid van INT4 gevolgtrekking over Turing. 

De code maakt gebruik van een ResNet50 v1.5-pijplijn, waarbij de gewichten zijn verfijnd om nauwkeurige inferentie mogelijk te maken met behulp van INT4-restlagen. Deze code laadt het verfijnde netwerk van het “model” directory die wordt gebruikt om de berekening aan te sturen. Intern voegt de code op agressieve wijze lagen samen om een ​​efficiënte, krachtige inferentie-engine te produceren.

Eerst laten we de prestatieverbetering zien die is waargenomen met behulp van INT4-precisie versus een INT8-basislijn. Vervolgens beschrijven we het modelformaat en de uitgevoerde berekeningen, en ten slotte beschrijven we het proces dat wordt gebruikt om de modelgewichten te verfijnen.

De INT4 Speedup op Turing

MLPerf v0.5 Inferentieresultaten voor datacenterservervormfactoren en offline scenario opgehaald van www.mlperf.org op 6 november 2019 (Closed Inf-0.5-25 en Inf-0.5-27 voor INT8, Open Inf-0.5-460 en Inf-0.5-462 voor INT4). De prestaties per processor worden berekend door de primaire metriek van de totale prestaties te delen door het aantal gerapporteerde versnellers. De naam en het logo van MLPerf zijn handelsmerken.

INT4 leverde een extra 59% inferentiedoorvoer op met minimaal nauwkeurigheidsverlies (~1%) op NVIDIA T4. En op TITAN RTX was de snelheid 52%, wat meer dan 25.000 afbeeldingen/sec opleverde van een enkele GPU. De prestatiegegevens die hierboven worden weergegeven, zijn uitgevoerd op servers met meerdere GPU's en de doorvoerwaarden worden afgeleid door de serverdoorvoer te nemen en te delen door het aantal GPU's om deze gegevens per versneller weer te geven.

Modelbeschrijving

De bestanden die nodig zijn om ResNet-50 uit te voeren met INT4-precisie vindt u hier, samen met gedetailleerde instructies voor het uitvoeren van het harnas om onze resultaten te reproduceren. 

Het INT4 ResNet50 v1.5-netwerk bestaat uit een pijplijn van lagen, beschreven door bestanden in het “model” map. Op het hoogste niveau hebben we de volgende lagen:

Hoofdpijpleiding

Eerste laagconvolutie (7×7, met C=3, K =64)

ReLU

Kwantiseren 1

MaxPool

Laag 1 (reeks van 3 resterende netwerken)

Laag 2 (reeks van 4 resterende netwerken) netwerken)

Laag 3 (reeks van 6 resterende netwerken)

Laag 4 (reeks van 3 resterende netwerken)

AvgPool

Volledig verbonden

Schaallaag

 

Lagen 1 tot en met 4 vertegenwoordigen reeksen van restnetwerken, waarbij elk restnetwerk bestaat uit het volgende:

Residueel netwerk

Resample/Downsample Pipeline

Conv1 (1×1 conv, meestal met C=4*K)

ReLU-laag

Quantize 1

Conv2 (3×3 conv, met C=K)

ReLU-laag

Quantize 2

Conv3 (1×1 conv, met 4*C=K)

Eltwise Toevoegen

ReLU-laag

Quantize 3

De Resample/Downsample-pipeline bestaat uit drie lagen:

Optionele convolutielaag

Optionele ReLU-laag

Quantize/Dequantize Layer

Voor elke laag is er een tekstbestand dat de laagstructuur beschrijft en vervolgens binnen het “model/npdata” directory, zijn er bestanden met de werkelijke filtergewicht-, schaal- en biaswaarden. Aanvullende details over elke laag zijn hier beschikbaar. 

Verfijning van het model 

Onze aanpak vereist geen volledige herscholing van het model. We vullen het vooraf getrainde FP32-model van torchvision aan met FP32-kwantisatielagen. De initiële parameters voor deze lagen worden ingesteld met behulp van bereikgegevens die zijn verzameld door het uitvoeren van een kalibratieset via het oorspronkelijke model. Daarna voeren we trainingstijdvakken uit om het netwerk en de kwantisatielagen te verfijnen. Het proces werkt als volgt:

  1. Voer de kalibratiedataset door de “gekwantiseerde” FP32-model en histogramgegevens verzamelen
  2. Gebruik de histogrammen om de 99,999ste percentielbereikwaarde voor alle tensoren te vinden
  3. Pas de kwantiseringslagen in het model aan met de nieuwe bereiken
  4. Voer een tijdperk van de trainingsgegevensset door het gekwantiseerde model en propageer de fouten terug met behulp van een Straight Through Estimator (STE) voor de kwantiseringslagen. Ga door met trainen totdat de nauwkeurigheid acceptabele niveaus bereikt. 

In ons geval gebruikten we 15 tijdperken. Eenmaal voltooid, wordt het model nauwkeurig afgesteld en kan een gekwantiseerd INT4-model worden gegenereerd met behulp van de bereikgegevens van de “nep” kwantiseringslagen. 

Zie twee artikelen voor meer informatie over het fijnafstemmingsproces:

  1. Gradiënten schatten of propageren via stochastische neuronen voor conditionele berekening“, Bengio et al, http://arxiv.org/abs/1308.3432, aug 2018.
  2. Diep kwantificeren convolutionele netwerken voor efficiënte inferentie: een whitepaper“, R. Krishnamoorthi, https://arxiv.org/abs/1806.08342, juni 2018.

Het is nog zo vroeg voor INT4, dat ook toegankelijk is via de CUTLASS-bibliotheek van NVIDIA, beschikbaar op GitHub. Verminderde precisie voor AI-inferentie vertegenwoordigt een ander interessant gebied waar optimalisaties meer prestaties kunnen opleveren van dezelfde hardware met minimaal verlies aan nauwkeurigheid. Verdere onderzoeksgebieden zijn onder meer het toepassen van INT4-precisie op andere beeldgerichte netwerken. 

Om de resultaten te reproduceren, downloadt u hier de MLPerf Inference v0.5 Int4-inzendingscode en binaire bestanden

Dave Salvator
Senior Product Marketing Manager, Tesla Group, NVIDIA

Hao Wu
Senior GPU Compute Architect, NVIDIA

Milind Kulkarni
NVIDIA

Niall Emmart
NVIDIA

0

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *