Perché le GPU sono più adatte per il deep learning??

Contenuti

Dall'ultimo decennio, abbiamo visto la GPU entrare in scena più spesso in campi come l'HPC (Calcolo ad alte prestazioni) e il corso più popolare, vale a dire, i giochi. Le GPU sono migliorate anno dopo anno e ora sono in grado di fare cose incredibilmente interessanti, pero en los últimos años han captado aún más atención debido al apprendimento profondo.

Codice: GPU-DL-1-3246159

Como los modelos de aprendizaje profundo pasan una gran cantidad de tiempo en el addestramento, anche le CPU più potenti non erano abbastanza efficienti da gestire così tanti calcoli in un dato momento e questa è l'area in cui le GPU hanno semplicemente superato le CPU a causa della loro . Ma prima di immergerci negli abissi, Innanzitutto, cerchiamo di capire alcune cose sulla GPU.

Che cos'è la GPU??

Una GPU o "unità di elaborazione grafica"’ È una versione mini di un computer a tutti gli effetti, ma dedicato solo a un compito specifico. È diverso da una CPU che esegue più attività contemporaneamente. La GPU è dotata di un proprio processore integrato nella propria scheda madre insieme a v-ram o ram video, e anche un design termico adatto per la ventilazione e il raffreddamento.

1kcdeydxjbyjfubkqbnkq_w-6466913

fonte (Nexus dei giocatori)

Nel termine «unità di elaborazione grafica», «Grafica’ si riferisce al rendering di un'immagine a coordinate specifiche in uno spazio 2D o 3D. Una finestra o un punto di vista è la prospettiva di uno spettatore di guardare un oggetto in base al tipo di proiezione utilizzata. La rasterizzazione e il ray tracing sono alcuni dei modi per eseguire il rendering di scene 3D, Entrambi i concetti si basano su un tipo di proiezione chiamata proiezione prospettica. Che cos'è la proiezione prospettica??

In sintesi, È il modo in cui un'immagine si forma su un piano visivo o su una tela in cui linee parallele convergono in un punto convergente chiamato "centro di proiezione"’ también a misura que el objeto se aleja del punto de vista parece ser más pequeño , esattamente come i nostri occhi sono ritratti nel mondo reale e questo aiuta anche a capire la profondità di un'immagine, Ecco perché produce immagini realistiche.

Cosa c'è di più, Le GPU elaborano anche geometrie complesse, vettore, Sorgenti luminose o illuminazioni, Texture, forme, eccetera. Dato che ora abbiamo un'idea di base sulla GPU, Cerchiamo di capire perché è ampiamente utilizzato per il deep learning.

Perché le GPU sono migliori per il deep learning?

Una delle caratteristiche più ammirate di una GPU è la capacità di calcolare i processi in parallelo. Questo è il punto in cui il concetto di ENTRA IN AZIONE. Una CPU generalmente completa il suo compito in sequenza. Una CPU può essere suddivisa in core e ogni core esegue un'attività alla volta. Supponiamo che una CPU abbia 2 nuclei. Dopo, Su questi due kernel possono essere eseguiti due diversi processi di task, ottenendo così il multitasking.

Ma ancora, Questi processi vengono eseguiti in modo seriale.

02Quyfuolnx2G6SWS-2369131

fonte (Esempi di esempio)

Questo non significa che le CPU non siano abbastanza buone. Infatti, Le CPU sono davvero brave a gestire diverse attività correlate a diverse operazioni, come la gestione dei sistemi operativi, Consegna di fogli di calcolo, riproduci video HD, Estrai file zip di grandi dimensioni, Tutto allo stesso tempo. Ecco alcune delle cose che una GPU non può fare.

Dov'è la differenza?

0yh_3qpohpllu9cyv-9938641

fonte (NVIDIA)

Come menzionato prima, una CPU è suddivisa in più core in modo che possano multitasking contemporaneamente, mentre la GPU avrà centinaia e migliaia di core, tutti dedicati a un unico compito. Si tratta di calcoli semplici che vengono eseguiti più frequentemente e sono indipendenti l'uno dall'altro. Ed entrambi memorizzano i dati richiesti di frequente nella rispettiva cache, seguendo così il principio di ‘'.

0stjaj3bah_remflr-4635146

fonte (NVIDIA)

Ci sono molti programmi e giochi che possono sfruttare le GPU per la loro esecuzione. L'idea alla base è quella di rendere parallele alcune parti del codice dell'attività o dell'applicazione, Ma non tutti i processi. Ciò è dovuto al fatto che la maggior parte delle attività dell'attività deve essere eseguita solo in sequenza. Ad esempio, Devi avere il dispositivo Android rootato e seguire questi passaggi sessione en un sistema o aplicación no necesita ser paralelo.

Quando c'è una parte dell'esecuzione che può essere eseguita in parallelo, viene semplicemente commutato alla GPU per l'elaborazione, dove contemporaneamente il task sequenziale viene eseguito sulla CPU, Quindi entrambe le parti dell'attività vengono nuovamente combinate.

Nel mercato delle GPU, Ci sono due attori principali, vale a dire, AMD e Nvidia. Le GPU Nvidia sono ampiamente utilizzate per il deep learning perché hanno un ampio supporto nel software del forum, Controller, CUDA e cuDNN. Quindi, in termini di intelligenza artificiale e deep learning, Nvidia è un pioniere di lunga data.

Si dice che le reti neurali siano , Ciò significa che i calcoli nelle reti neurali possono essere facilmente eseguiti in parallelo e sono indipendenti l'uno dall'altro.

0io_dkbbe3mhjyl1f-8224374

Alcuni calcoli, come il calcolo dei pesi e l'attivazione delle funzioni per ogni livello,, La retropropagazione può essere eseguita in parallelo. Ci sono anche molti articoli di ricerca disponibili su questo.
Le GPU di Nvidia sono dotate di core specializzati noti come Core che aiutano ad accelerare il deep learning.

Cos'è CUDA?

CUDA è l'acronimo di "Compute Unified Device Architecture" (Compute Unified Device Architecture)’ che è stato rilasciato nell'anno 2007, è un modo per ottenere l'elaborazione parallela e ottenere il massimo dalla potenza della GPU in modo ottimizzato, con conseguente miglioramento delle prestazioni durante l'esecuzione delle attività.

0ogbatkaijpdosxjw-6057700

fonte (NVIDIA)

Il toolkit CUDA è un pacchetto completo costituito da un ambiente di sviluppo che viene utilizzato per creare applicazioni che utilizzano GPU. Questo toolkit contiene principalmente il compilatore, Debugger e librerie C / C ++. Cosa c'è di più, il runtime CUDA ha i suoi driver in modo che possa comunicare con la GPU. CUDA è anche un linguaggio di programmazione progettato specificamente per istruire la GPU a eseguire un'attività. Conosciuto anche come pianificazione GPU.
Di seguito è riportato un semplice programma hello world solo per avere un'idea di come appare il codice CUDA.

/* Programma Hello World in CUDA *
#includere<stdio.h>
#includere<stdlib.h>
#includere<cuda.h>__global__ demo di void() {
    printf("Salve, mondo!,Il mio primo programma Cuda");
}int principale() {
    printf("Da principale!n");
    demo<<<1,1>>>();
    Restituzione 0;
}

1UD6ZVGVAFAHAKPIQRIIJFG-3961769

produzione

Che cos'è cuDNN??

0L0srgvjrqtkixa2B-2366574

Fonte (Hyper Linuxer)

cuDNN es una biblioteca de neuronale rosso que está optimizada para GPU y puede aprovechar al máximo la GPU de Nvidia. Questa libreria è costituita dall'implementazione della convoluzione, Propagazione in avanti e all'indietro, Funzioni di attivazione e raggruppamento. È una libreria indispensabile senza la quale non è possibile utilizzare le GPU per addestrare le reti neurali.

Un grande balzo in avanti con i core Tensor!

Nell'anno 2018, Nvidia ha lanciato una nuova linea di GPU, vale a dire, La serie 2000. Chiamato anche RTX, queste schede sono dotate di tensor core dedicati al deep learning e basati sull'architettura Volta.

0yb7zq51_tknpxldo-1786349

Fonte (Anand Tech)

I nuclei tensoriali sono nuclei particolari che eseguono la moltiplicazione della matrice 4 X 4 PQ16 e la somma con 4 X 4 Matrice FP16 o FP32 in media precisione, L'output risulterà in un array 4 X 4 FP16 o FP32 con la massima precisione.
Nota: «PQ’ significa virgola mobile per capire di più sulla virgola mobile e sulla precisione, Dai un'occhiata a questo Blog.

Come sostiene Nvidia, i tensor core di nuova generazione basati sull'architettura volta sono molto più veloci dei core CUDA basati sull'architettura Pascal. Questo ha dato una grande spinta al deep learning.

0R97T2AR7YPH4CJCO-6336862

fonte (NVIDIA)

Al momento della stesura di questo blog, Nvidia ha annunciato l'ultima serie 3000 della sua linea di GPU dotata di architettura Ampere. In questo, Prestazioni del tensore migliorate di 2 volte. Offre anche nuovi valori di precisione come TF32 (tensor galleggiante 32), FP64 (virgola mobile 64). Il TF32 ha le stesse prestazioni dell'FP32 ma con un'accelerazione fino a 20x, Come risultato di tutto questo, Nvidia afferma che il tempo di inferenza o di addestramento dei modelli sarà ridotto da settimane a ore.

AMD contro Nvidia

0UUHLDM-SAHWRGWMH-7118913

fonte (L'hardware di Tom)

AMD Le GPU sono decenti per i giochi, Ma non appena entra in gioco il deep learning, semplicemente Nvidia E' molto più avanti. Ciò non significa che le GPU di AMD siano cattive. È dovuto all'ottimizzazione del software e dei driver che non vengono aggiornati attivamente, dal lato Nvidia hanno driver migliori con aggiornamenti frequenti e per di più CUDA, cuDNN aiuta a velocizzare il calcolo.

Alcune librerie conosciute come Tensorflow, Supporto PyTorch per CUDA. Ciò significa che è possibile utilizzare GPU entry-level della serie GTX 1000. Dalla parte di AMD, ha pochissimo supporto software per le sue GPU. Per quanto riguarda l'hardware,, Nvidia ha introdotto tensor core dedicati. AMD ha ROCm per l'accelerazione, Ma non va bene come nuclei tensoriali, e molte librerie di deep learning non supportano ROCm. Negli ultimi anni, Non si è notato un grande salto in termini di prestazioni.

A causa di tutti questi punti, Nvidia eccelle semplicemente nel deep learning.

Riepilogo

Per concludere da tutto ciò che abbiamo imparato, è chiaro che ad oggi Nvidia è leader di mercato in termini di GPU, ma spero davvero che anche AMD recuperi il ritardo in futuro o almeno apporti alcuni miglioramenti evidenti alla prossima linea delle sue GPU. dato che stanno già facendo un ottimo lavoro per quanto riguarda le loro CPU, vale a dire, la serie Ryzen.

La portata delle GPU nei prossimi anni è enorme, poiché apportiamo nuove innovazioni e progressi nel deep learning, machine learning e HPC. L'accelerazione GPU sarà sempre utile per molti sviluppatori e studenti per entrare in questo campo, poiché anche i loro prezzi stanno diventando più convenienti. Anche grazie alla grande community che contribuisce anche allo sviluppo dell'AI e dell'HPC.

1uq_qcun2brdqeyxtgkqk2w-3129823

Prathmesh Patil

Appassionato di Machine Learning, scienza dei dati, Sviluppatore Python.

LinkedIn: https://www.linkedin.com/in/prathmesh

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.