La creazione e l’addestramento di reti neurali sempre più sofisticate è la grande sfida dell’It dei nostri giorni. Non è un caso che le migliori università si contendano gli esperti di intelligenza artificiale, che insieme ai data scientist cercano di costruire software abbastanza ‘smart’ da interpretare e sfruttare il caos dei big data. Per avere un’idea del futuro che ci attende nello sviluppo del deep learning si può leggere questo recente post sul blog di Kyunghyun Cho, ricercatore coreano che ha riassunto i principali temi discussi all’International Conference of Machine Learning (Icml) che si è da poco svolta a Lille, in Francia.

Cresce il ruolo delle Gpu

Per elaborazioni così complesse ci vuole un elevato parallelismo, e quello delle Cpu multicore, da solo, non basta. Il ruolo delle Gpu in quest’ambito è noto da tempo e chiunque si occupi di reti neurali conosce librerie capaci di sfruttare l’incredibile capacità di calcolo dei potenti acceleratori grafici, nati per maneggiare in tempo reale i miliardi di poligoni colorati della realtà virtuale ma anche utilissimi supporti ai calcoli in virgola mobile degli HPC.

Tra i più noti standard software in quest’ambito c’è OpenAcc, creato tre anni fa da Nvidia e Cray per supportare la programmazione in ambienti ibridi, con un misto di Cpu e Gpu. Consente infatti di compilare programmi in grado di girare su entrambe senza problemi, adattandosi al sistema disponibile e abilitando l’accelerazione sulle parti del codice desiderate attraverso direttive specifiche.

Nuovo software Nvidia

In questi giorni, all’Icml, Nvidia ha voluto dare una spinta in più al settore, proponendo nuove versioni dei suoi software dedicati a questo tipo di elaborazioni, capaci di far compiere un vero balzo in avanti in termini di prestazioni sfruttando molto meglio l’hardware disponibile.

Si tratta della versione 2 di Digits (Deep learning Gpu Training System) e della versione 3 di cuDNN (Cuda deep neural network library). Il primo è un tool di sviluppo interattivo per chi sviluppa reti neurali per interpretare il linguaggio naturale, tradurre o estrarre concetti utili da grandi dataset di informazioni disaggregate, riconoscere oggetti e così via.
Digits, quindi, semplifica e velocizza la creazione di una rete neurale consentendo aggiustamenti immediati ai suoi parametri operativi. La versione 2, inoltre, permette di sfruttare le maggiori prestazioni di sistemi con più Gpu, scalando automaticamente e raddoppiando così la velocità di addestramento delle reti rispetto a sistemi basati su singolo acceleratore grafico. Si tratta di un risultato che i tecnici Nvidia dichiarano di aver concretamente ottenuto addestrando un sistema all’auto-tagging di una banca dati di immagini. Se con la versione precedente ci volevano 16 giorni a completare l’addestramento, aiutandosi con una GeForce Gtx Titan X, sfruttando un sistema analogo ma con quattro Titan X e Digits 2, il training si è concluso in cinque giorni soltanto.

Anche cuDNN 3, la nuova libreria matematica per la gestione delle reti neurali, dovrebbe far fare passi da gigante alle prestazioni dell’hardware, specie quando si lavora con reti particolarmente sofisticate. Permette infatti di sfruttare lo storage di dati a 16-bit in virgola mobile nella memoria della Gpu, raddoppiando la quantità di spazio rispetto al passato e migliorando l’efficienza in sistemi multi-Gpu.

Un toolkit che apre molte strade

L’obiettivo di Nvidia è chiaro, rendere la sua piattaforma la più interessante per equipaggiare sistemi HPC pronti alle elaborazioni del futuro, imbottendoli di Gpu capaci di sopperire al sempre più modesto aumento delle prestazioni delle Cpu.

Per questo è stato annunciato da Nvidia anche il lancio di un completo toolkit OpenACC, liberamente scaricabile da ricercatori e università, mentre per l’uso commerciale è possibile attivare un periodo di prova di 90 giorni. Si tratta di una suite per workstation Linux che consente di sfruttare al massimo le Gpu, ma portando anche vantaggi alle elaborazioni con le moderne Cpu multi-core, supportando la versione 2.0 dello standard OpenAcc, Il cuore del kit è il compilatore C e Fortran, sviluppato dalla PGI (The Portland Group), società acquisita da Nvidia nel 2013. Il sistema capisce se sono disponibili Gpu e le usa in fase di compilazione, altrimenti si accontenta di lavorare con i core della Cpu.

Nvidia si è anche premurata di documentare la differenza di prestazioni tra OpenAcc su un sistema a doppia Cpu Haswell rispetto a uno con Gpu Tesla K80, che stando a quanto indicato dall’azienda di Santa Clara, in alcuni scenari riduce il tempo di elaborazione di 12 volte.

Quel che è certo è che lo sguardo di tutta l’industria dell’IT si sta rivolgendo verso questo tipo di elaborazioni e i progressi, in tempi brevi, non mancheranno.