Table of Contents Table of Contents
Previous Page  50 / 102 Next Page
Information
Show Menu
Previous Page 50 / 102 Next Page
Page Background

DIGITAL

ARTIFICIAL INTELLIGENCE

50

- ELETTRONICA OGGI 464 - SETTEMBRE 2017

ziali candidati per assolvere questo compito. I microprocessori

tradizionali, invece, a causa dei “colli di bottiglia” rappresentati

dalla cache – problema questo tipico di qualsiasi architettura ba-

sata sul modello di Von Neumann – sono in grado di far girare

l’algoritmo ma trasferiscono i compiti (task) di astrazione dei la-

yer agli acceleratori hardware. Se da un lato sia GPU che FPGA

offrono notevoli capacità di elaborazione parallela, le prime sono

caratterizzate da un’architettura fissa mentre le seconde, grazie

a un’architettura flessibile e riconfigurabile in modo dinamico,

risultano più idonee per l’accelerazione della CNN. Grazie a un

approccio “a grana fine”, che prevede l’implementazione in har-

dware degli algoritmi della rete CNN, l’architettura degli FPGA

permette minimizzare il tempo di latenza e garantire un maggior

determinismo rispetto a un approccio basato su GPU che utilizza

algoritmi di tipo software. Un altro vantaggio offerto dagli FPGA

è la loro capacità di integrare in hardware, all’interno della strut-

tura del dispositivo, blocchi funzionali come i DSP. Un approccio

di questo tipo contribuisce “rafforzare” ulteriormente la natura

deterministica della rete. In termini di utilizzo di risorse, gli FPGA

risultano molto efficienti: ogni layer della rete CNN può essere

integrato nella struttura stessa dell’FPGA con le risorse di me-

moria nelle immediate vicinanze.

La figura 2 illustra i componenti chiave di una CNN progettata

per un’applicazione industriale di elaborazione delle immagini: i

due blocchi posti al centro rappresentano il nucleo centrale della

rete. Lo sviluppo di applicazioni di accelerazione di una rete CNN

basate su FPGA è completato dalle estensioni del linguaggio C

OpenCL

2a

per la programmazione parallela. Un esempio di FPGA

idonee per l’impiego nelle reti neurali convoluzionali è la serie Ar-

ria 10 del Programmable Solutions Group (PSG) di Intel (ex Altera).

Un utile ausilio per tutti gli sviluppatori coinvolti in progetti di ac-

celerazione di CNN basati su FPGA è rappresentato dal proget-

to di riferimento (reference design) per CNN di Intel PSG. Esso

si avvale dei kernel OpenCL per implementare i layer della rete

CNN. I dati vengono trasferiti da un layer al successivo usando

canali e “pipe”, una funzione che consente il passaggio dei dati

tra i kernel OpenCL senza consumare larghezza di banda del-

la memoria esterna. I layer di convoluzione sono implementati

a partire da dati strutturati e non strutturati, con neuroni creati

dal computer che formano la rete di connessioni e interruzioni

(Fig. 1). L’abbinamento di pattern (patternmatching), un concetto

chiave di una rete CNN, è una tecnica ampiamente usata nell’ap-

prendimento automatico.

La seconda fase di una CNN è quella dell’esecuzione. Un layer

di convoluzione estrae dalla sorgente dell’immagine le caratte-

ristiche di basso livello per rilevare elementi come linee o bordi

all’interno di un’immagine. Altri layer, detti layer di pooling, ser-

vono a ridurre le variazioni effettuando una sorta di media (po-

oling, o più precisamente la riduzione a un singolo valore di una

serie di input in ingresso) delle caratteristiche comuni per una

particolare area dell’immagine. Quindi possono entrare in gioco

altri layer di convoluzione e di pooling. Il numero di layer della

CNN è ovviamente correlato alla precisione del riconoscimento

dell’immagine, anche se un numero più elevato implica la dispo-

nibilità di una maggiore potenza di elaborazione. I layer possono

operare in modo parallelo se l’ampiezza di banda di memoria

è disponibile; a questo proposito è bene tenere presente che la

parte più onerosa, in termini di calcolo, è ascrivibile agli strati di

convoluzione.

La sfida per gli sviluppatori consiste nel mettere a disposizione

risorse di elaborazione sufficienti perché una CNN possa iden-

tificare il numero necessario delle diverse classificazioni delle

immagini nel rispetto dei vincoli temporali di un’applicazione. Ad

esempio, un’applicazione di automazione industriale potrebbe

usare la visione artificiale per identificare in quale fase di lavora-

zione inviare un pezzo mentre passa su un nastro trasportatore.

Fermare il processo temporaneamente per permettere a una rete

neurale di identificare il pezzo comporterebbe l’interruzione del

flusso e il conseguente rallentamento della produzione.

Implementazione di una rete CNN

L’accelerazione di alcune fasi delle operazioni di apprendimento

potenziato e di esecuzione di una CNN aumenterebbe significa-

tivamente la velocità di un’attività di natura prettamentematema-

tica. Grazie alla loro elevata larghezza di banda di memoria e alle

notevoli risorse di calcolo disponibili, GPU e FPGA sono i poten-

Fig. 2 – Blocchi base di una rete CNN utilizzata per applicazioni di riconoscimento dell’immagine (Fonte: Cadence

2

)