# Acceleratore di Intelligenza Artificiale

Un acceleratore di Intelligenza Artificiale (o anche Artificial Intelligence Accelerator e NPU, Neural Processing Unit) è una classe di microprocessori progettati per fornire accelerazione hardware a reti neurali artificiali, visione artificiale e algoritmi di apprendimento automatico per la robotica, l'Internet delle cose e altre applicazioni basate sull'uso dei dati.
Le possibili applicazioni di tali dispositivi includono le auto a guida autonoma, gli aeromobili a pilotaggio remoto, la diagnostica medica, l'elaborazione del linguaggio naturale e la traduzione automatica.

## Storia

Nei computer le CPU sono spesso affiancate da acceleratori hardware per svolgere meglio determinate funzioni, tra cui ad esempio le schede video e le schede audio. Con l'aumento delle attività legate all'apprendimento profondo e all'intelligenza artificiale, sono state sviluppate unità hardware specializzate per accelerare lo svolgimento di queste attività.

### Primi sviluppi

Già nei primi anni novanta i processori di segnali digitali venivano impiegati come acceleratori di reti neurali per i software di riconoscimento ottico dei caratteri e sempre in quegli anni vi furono anche dei tentativi di utilizzo di acceleratori basati su FPGA.

### Calcolo eterogeneo

Il calcolo eterogeneo ha dato il via all'inserimento di diversi processori in un singolo sistema, ciascuno dei quali specializzato per un'apposita funzione. Architetture come i processori Cell hanno introdotto alcune caratteristiche tipiche degli acceleratori di Intelligenza Artificiale, tra cui l'architettura dataflow. Gli stessi processori Cell sono stati in seguito utilizzati per l'Intelligenza Artificiale.

### Uso delle GPU

Le GPU sono dispositivi hardware specializzati nella manipolazione di immagini. Poiché le reti neurali e la manipolazione di immagini condividono le stesse basi matematiche, le GPU sono frequentemente utilizzate per applicazioni di apprendimento automatico. Per questo motivo, i produttori di GPU hanno cominciato a incorporare hardware specifico per le reti neurali, come ad esempio i tensor core.

### Uso dei FPGA

I framework per l'apprendimento profondo sono in continua evoluzione e questo rende difficoltosa la progettazione di hardware specifico. Dispositivi riconfigurabili come i Field Programmable Gate Array (FPGA) semplificano la gestione di hardware e software in evoluzione.

## Esempi
### Chip specifici

Google ha sviluppato un acceleratore chiamato tensor processing unit specificamente progettato per il suo framework TensorFlow, estensivamente usato per le reti neurali convoluzionali.
Intel ha sviluppato il Nervana NNP, un chip progettato con un'architettura per l'apprendimento profondo.

### GPU

La linea di GPU Tesla di NVIDIA dispongono di funzioni per l'intelligenza artificiale.
AMD produce la linea di GPU Radeon Instinct specificamente orientata all'apprendimento profondo.

### Coprocessori

I System-on-a-chip Apple A11 Bionic, Apple M1 (e successori a questi) dispongono di un acceleratore di Intelligenza Artificiale chiamato Neural Engine.
Il microprocessore Snapdragon 845 di Qualcomm contiene un core per il processamento dell'Intelligenza Artificiale.
Un acceleratore basato su reti neurali è anche presente nei processori Kirin 970 e 980 di HiSilicon.
Nel gennaio 2018, CEVA ha lanciato una famiglia di quattro microprocessori per l'Intelligenza Artificiale chiamati NeuPro.