Table of Contents Table of Contents
Previous Page  35 / 86 Next Page
Information
Show Menu
Previous Page 35 / 86 Next Page
Page Background

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