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 profondoApprendimento profondo, Una sottodisciplina dell'intelligenza artificiale, si affida a reti neurali artificiali per analizzare ed elaborare grandi volumi di dati. Questa tecnica consente alle macchine di apprendere modelli ed eseguire compiti complessi, come il riconoscimento vocale e la visione artificiale. La sua capacità di migliorare continuamente man mano che vengono forniti più dati lo rende uno strumento chiave in vari settori, dalla salute....
Como los modelos de aprendizaje profundo pasan una gran cantidad de tiempo en el addestramentoLa formazione è un processo sistematico volto a migliorare le competenze, conoscenze o abilità fisiche. Viene applicato in vari ambiti, come lo sport, Formazione e sviluppo professionale. Un programma di allenamento efficace include la pianificazione degli obiettivi, Pratica regolare e valutazione dei progressi. L'adattamento alle esigenze individuali e la motivazione sono fattori chiave per ottenere risultati di successo e sostenibili in qualsiasi disciplina...., 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 parallelismo. 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.
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 misuraIl "misura" È un concetto fondamentale in diverse discipline, che si riferisce al processo di quantificazione delle caratteristiche o delle grandezze degli oggetti, fenomeni o situazioni. In matematica, Utilizzato per determinare le lunghezze, Aree e volumi, mentre nelle scienze sociali può riferirsi alla valutazione di variabili qualitative e quantitative. L'accuratezza della misurazione è fondamentale per ottenere risultati affidabili e validi in qualsiasi ricerca o applicazione pratica.... 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 Calcolo parallelo 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.
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?
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 ‘Riferimento località'.
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 sessioneIl "Sessione" È un concetto chiave nel campo della psicologia e della terapia. Si riferisce a un incontro programmato tra un terapeuta e un cliente, dove si esplorano i pensieri, Emozioni e comportamenti. Queste sessioni possono variare in durata e frequenza, e il suo scopo principale è quello di facilitare la crescita personale e la risoluzione dei problemi. L'efficacia delle sessioni dipende dalla relazione tra il terapeuta e il terapeuta.. 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 imbarazzantemente parallelo, Ciò significa che i calcoli nelle reti neurali possono essere facilmente eseguiti in parallelo e sono indipendenti l'uno dall'altro.
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 MIRACOLI 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à.
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; }
Che cos'è cuDNN??
cuDNN es una biblioteca de neuronale rossoLe reti neurali sono modelli computazionali ispirati al funzionamento del cervello umano. Usano strutture note come neuroni artificiali per elaborare e apprendere dai dati. Queste reti sono fondamentali nel campo dell'intelligenza artificiale, consentendo progressi significativi in attività come il riconoscimento delle immagini, Elaborazione del linguaggio naturale e previsione delle serie temporali, tra gli altri. La loro capacità di apprendere schemi complessi li rende strumenti potenti.. 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.
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.
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 (tensorLos tensores son estructuras matemáticas que generalizan conceptos como scalars y vectores. Se utilizan en diversas disciplinas, incluyendo física, ingeniería y aprendizaje automático, para representar datos multidimensionales. Un tensor puede ser visualizado como una matriz de múltiples dimensiones, lo que permite modelar relaciones complejas entre diferentes variables. Su versatilidad y capacidad para manejar grandes volúmenes de información los convierten en herramientas fundamentales en el análisis y procesamiento de datos.... 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
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.
Prathmesh Patil
Appassionato di Machine Learning, scienza dei dati, Sviluppatore Python.
LinkedIn: https://www.linkedin.com/in/prathmesh