Torch con accelerazione tramite GPU

Inizia subito con questa guida per applicazioni basate su GPU.

Torch

Torch è un  framework di deep learning con un ampio supporto di algoritmi di  machine learning . È open-source, semplice da utilizzare e particolarmente efficiente grazie a LuaJIT, un linguaggio di script semplice e rapido, e all'implementazione C / CUDA .

Torch offre una rete neurale molto diffusa che incorpora librerie di ottimizzazione facili da utilizzare, garantendo la massima flessibilità nella creazione di topologie di reti neurali complesse.

L'esecuzione, inoltre, è il 70% più veloce sulle GPU  NVIDIA Pascal™ più recenti, per cui il training delle reti richiede ore e non giorni.

Installazione

Requisiti di sistema

Requisiti della versione di Torch con accelerazione tramite GPU:

  • Ubuntu 14.x (o Linux a 64 bit per la build da sorgente)
  • NVIDIA® CUDA® 7.5 o superiore (per GPU Pascal, CUDA 8.0 o superiore)
  • cuDNN v5.0 o superiore

Occorre anche una GPU NVIDIA che supporti la capacità di calcolo versione 3.0 o successiva. NVIDIA Tesla® P100 e M40 sono progettati per carichi di lavoro di machine learning. P100 e M40 sono ideali per i server, mentre TitanX è preferibile per i PC.

Istruzioni di download e di installazione

Torch si basa su LuaRocks, un gestore pacchetti per Lua, e ha una struttura modulare. Un insieme di moduli Torch comunemente utilizzati è distribuito su licenza open-source BSD in GitHub. È preferibile utilizzare un pacchetto debian Torch precompilato (solo Ubuntu 14.x).

SEGUE UN BREVE SOMMARIO DELLA PROCEDURA DI COMPILAZIONE

1. Aggiungere CUDA e i repository di machine learning ad apt-get

I pacchetti di machine learning NVIDIA sono disponibili scaricando e installando i pacchetti cuda-repo-ubuntu1404 e nvidia-machine-learning-repo. Utilizzare i seguenti comandi per accedere ai repository necessari:

1 > CUDA_REPO_PKG=cuda-repo-ubuntu1404_7.5-18_amd64.deb && wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/$CUDA_REPO_PKG && sudo dpkg -i $CUDA_REPO_PKG 

2 > ML_REPO_PKG=nvidia-machine-learning-repo_4.0-2_amd64.deb && wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1404/x86_64/$ML_REPO_PKG && sudo dpkg -i $ML_REPO_PKG 

3 > sudo app-get update

In tal modo, è possibile accedere ai repository NVIDIA contenenti i pacchetti Ubuntu per CUDA e ML, ad es. cuda-toolkit-8-0, digits, caffe-nv, torch e libcudnn5.

2. Installare i pacchetti Torch con apt-get

Dopo aver configurato l'accesso ai repository NVIDIA ML, installare il pacchetto Torch con le relative dipendenze:

4 > sudo app-get install libcudnn5 libcudnn5-dev torch7-nv

Per sistemi differenti e per eseguire la build di Torch da sorgente, fare riferimento al Cheat Sheet di Torch.

Modelli di training

Dopo l'installazione di Torch nel sistema, l'esecuzione può avvenire come di seguito descritto:

5 > th 
 ______             __   |  Torch7                                          
/_  __/__  ________/ /   |  Calcolo scientifico per Lua. 
 / / / _ \/ __/ __/ _ \  |  Type ? for help                                 
/_/  \___/_/  \__/_//_/  |  https://github.com/torch          
                         |  http://torch.ch                   
    
th>

Nell'esempio seguente verrà utilizzato ResNet. Per le istruzioni sul modulo ResNet e il download e l'installazione del dataset di immagini di training, visitare la pagina di training di ResNet di Facebook.

Presupponendo che siano stati installati entrambi,

per eseguire il training, accedere alla directory ResNet clone ed eseguire:

main.lua

Per impostazione predefinita, lo script esegue ResNet-34 su ImageNet con una singola GPU e due thread data-loader:

th main.lua -data [imagenet-folder con le cartelle train e val]

Per addestrare ResNet-50 su 4 thread GPU e 8 thread CPU:

th main.lua -depth 50 -batchSize 256 -nGPU 4 -nThreads 8 -shareGradInput true -data [cartella imagenet]

Modelli addestrati e ulteriori risorse sono disponibili dalla pagina di training per ResNet.

Benchmark

Questa sezione dimostra l'accelerazione via GPU per le serie di dati selezionate. I benchmark sono elencati per ordine crescente di numero di atomi. Nella lettura dell'output, la figura di interesse è "ns/giorno" (più alto è il valore, maggiore è la validità), situato al termine dell'output nel file "mdout". È preferibile acquisire le misurazioni per tutti gli incrementi temporali (invece che per gli ultimi 1000 incrementi).

PRESTAZIONI DELLE IMMAGINI DI TRAINING
SU ALEXTNET E GOOGLENET

AlexNet, una rete neurale convoluzionale, è stata sviluppata per classificare 1,2M immagini in più di un migliaio di categorie differenti

GoogLeNet è un modello più recente di deep learning che sfrutta una rete più ampia e profonda in grado di garantire maggiore precisione nella classificazione delle immagini.

Prestazioni di NVIDIA Tesla P100 PCIe
Prestazioni di NVIDIA Tesla M40
Prestazioni di NVIDIA Tesla K80

Configurazioni del sistema consigliate

Configurazione hardware

PC

Parameter
Specs

CPU Architecture

x86_64

System Memory

8-32GB

CPUs

1

GPU Model

NVIDIA®TITAN X

GPUs

1-2

Servers

Parameter
Specs

CPU Architecture

x86_64

System Memory

32 GB

CPUs/Nodes

1-2

GPU Model

Tesla® P100
Tesla® M40

GPUs/Node

1-4

Configurazione software

Software stack

Parameter
Version

OS

Ubuntu 14.04

GPU Driver

352.68 or newer

CUDA Toolkit

8.0 or newer

cuDNN Library

v5.0 or newer

Python

2.7

Crea la tua soluzione GPU ideale oggi stesso.