Torch mit Grafikprozessorbeschleunigung

Anleitung für grafikprozessorfähige Anwendungen lesen und direkt beginnen

Torch

Torch ist ein Deep-Learning-Framework mit umfassender Unterstützung von Algorithmen für maschinelles Lernen.  Dank der einfachen, schnellen Skriptsprache LuaJIT und der C / CUDA -Implementierung ist dieses Open-Source-Framework sehr benutzerfreundlich und effizient.

Torch umfasst gängige Bibliotheken für neuronale Netze und für Optimierungszwecke. Sie sind benutzerfreundlich und bieten zugleich maximale Flexibilität beim Erstellen neuronaler Netze mit komplexen Topologien.

Auf den neuesten Grafikprozessoren mit der NVIDIA Pascal™-Architektur läuft Torch zudem bis zu 70 % schneller, sodass Sie Ihre Netzwerke innerhalb weniger Stunden anstatt mehrerer Tage trainieren können.

Installation

Systemanforderungen

Für die grafikprozessorfähige Version von Torch gelten folgende Anforderungen:

  • Ubuntu 14.x (oder ein beliebiges anderes 64-Bit-Linux-System, wenn Sie das Framework anhand des Quellcodes erstellen möchten)
  • NVIDIA® CUDA® 7.5 oder neuer (für Pascal-Grafikprozessoren: CUDA 8.0 oder neuer)
  • cuDNN v5.0 oder neuer

Außerdem benötigen Sie NVIDIA-Grafikprozessoren, die mindestens Compute Capability 3.0 unterstützen. Der NVIDIA Tesla® P100 und der M40 sind auf Workloads für maschinelles Lernen ausgelegt. Wir empfehlen den P100 und den M40 für Server und den TitanX für PCs.

Download‑ und Installationsanleitung

Torch basiert auf LuaRocks, einem Paketmanager für Lua, und hat eine modulare Struktur. Die geläufigsten Torch-Module sind unter einer Open-Source-Lizenz von BSD auf GitHub verfügbar. Wir empfehlen die Verwendung eines vorab erstellten Torch-Debian-Pakets (nur Ubuntu 14.x).

KOMPILIERUNG IM ÜBERBLICK

1. Fügen Sie CUDA und die Repositorys für maschinelles Lernen zu apt-get hinzu.

Um auf die NVIDIA-Pakete für maschinelles Lernen zuzugreifen, laden Sie die Pakete „cuda-repo-ubuntu1404“ und „nvidia-machine-learning-repo“ herunter und installieren Sie sie. Führen Sie folgende Befehle aus, um auf die erforderlichen Repositorys zuzugreifen:

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

So erhalten Sie Zugriff auf die NVIDIA-Repositorys, die die Ubuntu-Pakete für CUDA und ML enthalten, wie „cuda-toolkit-8-0“, „digits“, „caffe-nv“, „torch“ und „libcudnn5“.

2. Installieren Sie die Torch-Pakete über apt-get

Nachdem Sie den Zugriff auf die NVIDIA-Repositorys für maschinelles Lernen eingerichtet haben, folgt die Installation des Torch-Pakets und seiner Abhängigkeiten:

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

Wenn Sie ein anderes System haben oder Torch anhand des Quellcodes erstellen möchten, finden Sie im  Torch-Cheatsheet hilfreiche Informationen.

Training der Netzwerke

Wenn Sie Torch auf Ihrem System installiert haben, können Sie es folgendermaßen ausführen:

5 > th 
 ______             __   |  Torch7                                          
/_  __/__  ________/ /   |  Wissenschaftliches Computing für Lua. 
 / / / _ \/ __/ __/ _ \  |  Type ? for help                                 
/_/  \___/_/  \__/_//_/  |  https://github.com/torch          
                         |  http://torch.ch                   
    
th>

Als Beispiel verwenden wir hier ResNet. Anleitungen zum ResNet-Modul sowie zum Herunterladen und Installieren von Datensätzen zum Trainieren von Bildern finden Sie auf der  Facebook-Seite für ResNet-Training.

Im Folgenden gehen wir davon aus, dass beides erfolgreich installiert wurde.

Rufen Sie zum Trainieren das Verzeichnis des ResNet-Klons auf und führen Sie Folgendes aus:

main.lua

Standardmäßig führt das Skript ResNet-34 auf ImageNet mit einem einzelnen Grafikprozessor und zwei Data-Loader-Threads aus:

th main.lua -data [imagenet-Ordner mit Ordnern zum Trainieren und Validieren]

ResNet-50 auf vier Grafikprozessoren und mit acht CPU-Threads ausführen:

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

Trainierte Modelle und weitere Ressourcen sind auf der ResNet-Trainingsseite verfügbar.

Benchmarks

In diesem Abschnitt wird die Grafikprozessorbeschleunigung anhand ausgewählter Datensätze erläutert. Die Benchmarks sind aufsteigend nach der Anzahl der Atome aufgeführt. Beim Lesen der Ausgabe ist „ns/Tag“ die Leistungszahl (je höher, desto besser), die sich am Ende der Ausgabe in der Datei „mdout“ befindet. Am besten führen Sie die Messung über alle Zeitschritte durch (anstatt nur über die letzten 1.000 Schritte).

LEISTUNG BEIM TRAINIEREN MIT BILDERN
AUF ALEXTNET UND GOOGLENET

Das Konvolutionsnetz AlexNet ist auf die Klassifizierung von 1,2 Millionen Bildern aus mehr als 1.000 Kategorien ausgelegt.

GoogLeNet ist ein neueres Deep-Learning-Modell, das ein tieferes, umfassenderes Netz nutzt und dadurch eine präzisere Bildklassifizierung ermöglicht.

Leistung mit NVIDIA Tesla P100 PCIe
Leistung mit NVIDIA Tesla M40
Leistung mit NVIDIA Tesla K80

Empfohlene Systemkonfigurationen

Hardwarekonfiguration

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

Softwarekonfiguration

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

Ihre ideale Grafikprozessorlösung