![Show Menu](styles/mobile-menu.png)
![Page Background](./../common/page-substrates/page0035.jpg)
35
- ELETTRONICA OGGI 467 - GENNAIO/FEBBRAIO 2018
La dispersione dei dati richiede l’adozione di un ap-
proccio differente per lo sviluppo dell’architettura e l’u-
tilizzo di piattaforme hardware flessibili capaci di adat-
tarsi a differenti algoritmi caso per caso. Un’architettura
che è stata adottata da molti specialisti che operano
nel campo delle reti neurali, in particolar modo per la
fase di inferenza, è l’array sistolico. Invece di effettuare
la lettura e la scrittura dei dati per ciascun neurone a
partire da blocchi di dati, i risultati di ciascun calcolo
sono invece spostati direttamente tra neuroni virtuali
per ogni ciclo di elaborazione. Gli ingressi per l’array
sistolico sono gestiti tramite software per ottimizzare
l’efficienza delle operazioni e confrontare le uscite con
i neuroni di ingresso nel momento in cui l’algoritmo si
propaga attraversa ciascun insieme di strati. Memorie
distribuite possono memorizzare temporaneamente i
risultati intermedi pronti per il successivo passaggio
lungo l’array con un differente gruppo di neuroni. Gli
array sistolici, in ogni caso non sono adatti per tutte le
situazioni. Per l’addestramento, ad esempio, altri tipi di
architetture si sono rivelate più efficienti per array di
reti neurali utilizzate in applicazioni di deep-learning.
Anche gli algoritmi di deep-learning stanno evolvendo.
I ricercatori hanno sviluppato numerose varianti come
ad esempio reti neurali ricorrenti e reti di memoria che
prevedono l’introduzione di loop di feedback per i dati
all’interno della rete o la memorizzazione e il riutiliz-
zo di valori importanti tra i diversi passaggi. Il comune
denominatore è che esse adottano il concetto di grafo
computazionale che può essere mappato in un’archi-
tettura nella quale gli elementi dei dati fluiscono lungo
i vertici del grafo tra gli elementi processore.
I vantaggi degli FPGA
Gli FPGA (Field Programmable Gate Array) rappre-
sentano la base ideale per questi algoritmi orientati ai
grafi in quanto danno la possibilità di personalizzare
l’interconnessione tra le unità di esecuzione. La fles-
sibilità delle unità di esecuzione e degli elementi dei
datapath (percorsi dati) è un elemento di fondamentale
importanza per ottimizzare l’efficienza delle applicazio-
ni basati sui concetti dell’apprendimento automatico.
La possibilità di personalizzare il datapath fino a livel-
lo a “grana fine” garantisce la flessibilità necessaria.
Applicazioni quali il deep-learning hanno permesso
di evidenziare l’importanza di poter avere un’unità di
esecuzione “regolabile”. Le operazioni in virgola mobile
a singola precisione standard si sono rivelate efficien-
ti nelle fasi iniziali delle ricerche nel campo del deep
learning in quanto rappresentavano un buon compro-
messo tra prestazioni e occupazione di area su silicio
per le GPU utilizzate in questi progetti. In molti casi,
tuttavia, i dati che devono essere elaborati possono
essere gestiti utilizzando operazioni caratterizzati da
un livello di risoluzione inferiore. In numerose applica-
zioni, ingressi e pesi possono essere gestiti mediante
pipeline su interi in virgola fissa di ampiezza pari a 8
bit, se non addirittura 4 bit. L’impiego di reti neurali su
piattaforme progettate per elaborare elementi di dati
in virgola mobile a precisione singola con ampiezza di
32 bit rappresenta uno spreco di risorse in termini di
silicio e per molte applicazioni, come quelle embedded
e relative ai data center, uno spreco anche di energia.
Un FPGA permette di utilizzare logica custom a grana
fine oppure elementi programmabili per l’elaborazione
del segnale come nel caso dei dispositivi Intel Arria 10
che possono essere configurati in termini di ampiezza
di bit. Un engine progettato per essere implementato
mediante un FPGA può rendere disponibile una gamma
di unità di esecuzione con ampiezza di bit regolabile.
L’applicazione potrebbe adattare le unità di esecuzio-
ne e le relative interconnessioni in funzione delle dif-
ferenti sezioni dell’algoritmo. Per esempio gli strati che
devono gestire direttamente i dati d’immagine possono
utilizzare un gran numero di percorsi dati di ampiezza
ridotta. Gli strati che si trovano più all’interno potreb-
bero invece richiedere la maggior risoluzione offerta
da pipeline di più ampie dimensioni. La flessibilità ti-
pica degli FPGA può essere sfruttata per altri algoritmi
che potrebbero servire per realizzare un’applicazione
completa. In parecchi casi, per semplificare l’addestra-
mento di un’applicazione di deep-lerning vengono uti-
lizzate tecniche di trasformazione geometrica di un’im-
magine (image warping). Queste eseguono processi
quale illuminazione, trasformazioni spaziali e prospet-
tiche per fornire all’engine di AI dati più coerenti su
cui operare. Queste trasformazioni permettono di supe-
rare problematiche che sorgono in applicazioni quali
ad esempio il riconoscimento facciale in aree riservate
provocate da un’illuminazione irregolare oppure da di-
storsioni generate da variazioni dell’angolo della tele-
camera. Con un FPGA è possibile implementare acce-
leratori per queste trasformazioni oltre che algoritmi di
apprendimento automatico, in modo da supportare i re-
quisiti dell’elaborazione in real-time delle applicazioni
focalizzate sulla sicurezza. Il risultato è una piattaforma
intrinsecamente adatta per supportare le sempre più
sofisticate applicazioni che abbinano apprendimento
automatico ed elaborazione dell’immagine.
Fig. 2 – Gli FPGA come ad esempio quelli della serie Arria di Intel
rappresentano la soluzione ideale per algoritmi orientati ai grafi in
quanto danno la possibilità di personalizzare l’interconnessione tra le
unità di esecuzione
DIGITAL
ARTIFICIAL INTELLIGENCE