Acest blog a fost co-autor cu Manash Goswami, director principal de program, platforma de invatare automata.

Imbunatatirile de performanta oferite de ONNX Runtime alimentat de Intel® Deep Learning Boost: Instructiuni de retea neuronala vectoriala (Intel® DL Boost: VNNI) imbunatatesc foarte mult performanta executiei modelului de invatare automata pentru dezvoltatori. In trecut, modelele de invatare automata se bazau in cea mai mare parte pe instructiuni pe virgula mobila pe 32 de biti folosind AVX512. Acum, modelele de invatare automata pot utiliza instructiuni intregi pe 8 biti (Intel® DL Boost: VNNI) pentru a obtine cresteri substantiale ale vitezei fara pierderi semnificative de precizie. Pentru a intelege pe deplin aceste imbunatatiri de performanta, trebuie sa intelegeti mai intai ONNX Runtime, Reprezentari codificatoare bidirectionale de la transformatoare (BERT), Intel DL Boost: VNNI si pasii pentru a obtine cele mai bune performante cu ONNX Runtime pe platformele Intel.

Ce este ONNX Runtime?

ONNX Runtime este un proiect open-source proiectat pentru a accelera invatarea automata intr-o gama larga de cadre, sisteme de operare si platforme hardware. Permite accelerarea inferentei de invatare automata in toate obiectivele de implementare folosind un singur set de API-uri.1 Intel a colaborat cu echipa Microsoft ONNX Runtime pentru a adauga suport pentru Intel® DL Boost si a profita de imbunatatirile microarhitecturale, cum ar fi cache-urile neexclusive pe noile procesoare Intel® Core ™ de a 11-a generatie pentru a imbunatati semnificativ performanta. Cititi mai multe pentru a afla cum sa obtineti cele mai bune performante utilizand Intel® Deep Learning Boost: VNNI pe backend-ul implicit al procesorului ONNX Runtime (Microsoft Linear Algebra Subroutine (MLAS)).

Figura 1: Arhitectura Runtime ONNX

Ce este BERT?

BERT a fost creat si publicat initial in 2018 de Jacob Devlin si colegii sai de la Google. Este o tehnica de invatare automata care imbunatateste foarte mult capacitatile de procesare a limbajului natural al masinilor (NLP). Aceasta tehnica nu proceseaza cuvinte individuale (asa cum s-a facut anterior), ci in schimb, proceseaza propozitii complete. Modelele de invatare automata pot intelege acum relatia dintre cuvintele din cadrul unei propozitii si pot intelege contextul unei propozitii. Aceasta abordare a programarii neuro-lingvistice (NLP) a revolutionat sarcinile de procesare a limbajului, cum ar fi cautarea, clasificarea documentelor, raspunsul la intrebari, similitudinea frazelor, predictia textului si multe altele. Modelele din clasa BERT sunt aplicate pe scara larga in industrie. Recent, tehnici precum distilarea si cuantificarea cunostintelor au fost aplicate cu succes la BERT,

Ce este Deep Learning Boost: VNNI?

Intel Deep Learning Boost: VNNI este conceput pentru a oferi o accelerare semnificativa a invatarii profunde, precum si optimizari de economisire a energiei. O instructiune cu un singur vector (cum ar fi VPDPBUSD) poate fi utilizata pentru a multiplica doua numere intregi de 8 biti si a combina rezultatul intr-o iesire de 32 de biti.

Pasi pentru a construi si a executa ONNX Runtime pentru Windows 10 pe procesoare Intel® Core ™ de a 11-a generatie

Cerinte prealabile:

  • Instalati Python 3.8.
  • Instalati notebook-ul jupyter.
  • Descarcati notebook-ul jupyter local.

Pregatirea modelului:

In terminalul Liniei de comanda, deschideti notebook-ul jupyter:

Caiet de jupiter

Odata ce notebook-ul se deschide in browser, rulati toate celulele din notebook si salvati modelul cuantificat INT8 ONNX pe masina dvs. locala.

Construiti ONNXRuntime:

Atunci cand construiesc ONNX Runtime, dezvoltatorii au flexibilitatea de a alege intre OpenMP sau propria implementare a pool-ului de fire ONNX Runtime. Pentru a obtine cele mai bune performante pe platformele Intel, configurati ONNX Runtime cu OpenMP si ulterior definiti in mod explicit politica de threading pentru inferenta modelului.

In terminalul liniei de comanda:

Git clone –recursive https://github.com/Microsoft/ONNXRuntime cd ONNXRuntime Instalati cmake-3.13 sau o versiune ulterioara de la https://cmake.org/download/. \ Build.bat –config RelWithDebInfo –build_shared_lib –parallel –use_openmp

Performanta de reglare pentru furnizorul de executie implicit al ONNX Runtime:

In conditiile in care filetarea poate fi explicita, se recomanda paralelizarea firelor, legand fiecare fir la nuclee fizice separate. Pe platformele unde hiperthreading-ul este activat, recomandarea este sa omiteti nuclee alternative (daca numarul de fire trebuie sa fie mai mic decat numarul de nuclee logice). Acest lucru reduce suprasolicitarea memoriei cache cauzata de schimbarea repetata a firelor intre nuclee.

Pentru Windows, utilizati „start / afinitate AA” pentru a pastra patru fire de executie ONNX pe nuclee fizice, omitand nuclee logice alternative. Pentru a remedia in mod explicit numarul de fire se utilizeaza variabila de mediu OMP_NUM_THREADS. De exemplu, in terminalul liniei de comanda:

Set KMP_AFFINITY = granularitate = fin, compact, 1,0 set OMP_NESTED = 0 set OMP_WAIT_POLICY = ACTIVE set / a OMP_NUM_THREADS = 4

Rulati modelul cuantificat cu ONNX Runtime:

Cand executati runtime, trebuie sa plasati un folder in acelasi director ca runtime cu setul de date de testare de intrare pe care doriti sa il utilizati. In scop ilustrativ, vom genera un set de date de intrare test aleatoriu cu urmatorul script python pe care il vom denumi generate_test_data_set.py :

import numpy ca np de la onnx import numpy_helper batch_range = [1,2, 4, 8, 16] pentru lot in interval (len (batch_range)): pentru secventa in [20,32,64]: numpy_array = np.random.rand (batch_range [batch], seq) .astype (np.int64) tensor = numpy_helper.from_array (numpy_array) name = “input_0_” + str (batch_range [batch]) + “_” + str (seq) + “.pb” f = open (name, “wb”) f.write (tensor.SerializeToString ()) f.close () name = “input_1_” + str (batch_range [batch]) + “_” + str (seq) + “. pb “f = open (name,” wb “) f.write (tensor.SerializeToString ()) f.close () name =” input_2_ “+ str (batch_range [batch]) +” _ “+ str (seq) + “.pb” f = deschis (nume, “wb”) f.write (tensor.SerializeToString ()) f.close () print (nume)

In terminalul liniei de comanda:

Python generate_test_data_set.py

Aceasta va genera un set de date de test pentru trei intrari pentru baza BERT:

  • input_0_ <batch_size> _ <seqLength> .pb
  • input_1_ <batch_size> _ <seqLength> .pb
  • input_2_ <batch_size> _ <seqLength> .pb

Creati un folder nou „folder_data_set_0” in aceeasi locatie ca modelul ONNX Files. Asigurati-va ca nu exista alt dosar in aceeasi locatie. Copiati cele trei intrari din aceeasi secventa si lungimea lotului in folderul test_data_set_0 .

In folderul test_data_set_0, redenumiti

  • input_0_ <batch_size> _ <seqLength> .pb to input_0.pb
  • input_1_ <batch_size> _ <seqLength> .pb to input_1.pb
  • input_2_ <batch_size> _ <seqLength> .pb to input_2.pb

Acum rulati ONNX Runtime. In terminalul liniei de comanda:

cd <root> \ onnxruntime \ build \ Windows \ RelWithDebInfo \ RelWithDebInfo onnxruntime_perf_test.exe -m times -r <#iterations> -o 99 -e cpu MODEL_NAME.onnx

Repetati pasii pentru urmatorul set de lungimi batch si seq .

Obtineti detalii extinse despre inferenta ONNX Runtime.

Rezultate

Cu Intel® DL Boost: VNNI si ONNX Runtime, dezvoltatorii pot creste semnificativ randamentul si performanta pentru modelele de procesare a limbajului natural bazate pe transformatoare cu cuantificare. De exemplu, modelul cuantificat cu 12 straturi BERT cu Intel® DL Boost: VNNI si ONNX Runtime poate obtine de 2,9 ori castiguri de performanta. BERT distilat poate obtine castiguri de performanta de pana la 3,3 ori.

Pentru a participa, verificati repourile GitHub situate pe Runtime ONNX.

Sarcina de lucru de procesare a limbajului BERT pe 12 straturi pe procesorul Intel® Core ™ de generatia a 11-a obtine viteze crescute de pana la 2,9 ori cu DLBoost: VNNI

Modelul BERT distilat atinge viteze crescute de 3,38 ori datorita DLBoost: VNNI (Numar de fire = patru)

1https: //microsoft.github.io/onnxruntime/about.html, 01.01.2020

sperma party video streaming xxx porn
malena la pugliese max felicitas streaming xxx tv
mungitura di sperma streamingxx
video porno italiano malena streamxx roberta gemma
film xxx italian streamxxtv
casting alex magni streming porn
acrobazie anali striming porn
rocco e malena studentesse anal
porn hd italia subito porn
salieri porn succhia cazzi neri
film della 100×100 streaming succhiare cazzo
ho sempre voglia succhiarsi il cazzo
giovane travestito suicide porn
italian porno free sukki malena
club prive certe notti sukki porn
centoxcento favorite list super cazzi porno
isabella clark xxx super poppe
veronica le bon centoxcento susanna bella hard
roberta gemma tube susanna bella porn
xxx porn italia susanna bella porno star