GPU 加速的 Torch

现在,开始阅读此《GPU Ready Apps Guide》(GPU Ready 应用程序指南)。

Torch

Torch 是一种 深度学习框架 ,可为 机器学习 算法提供广泛支持。得益于简单且快速的脚本语言 LuaJIT 以及底层 C/ CUDA 实现,Torch 是一种易于使用且效率很高的开源软件。

Torch 提供热门的神经网络和优化库,不但容易使用,而且还提供超高灵活性,便于构建复杂的神经网络拓扑。

另外,它在最新 NVIDIA Pascal™ GPU 上的运行速度最多可以提升 70%,因此您现在可以将网络训练时间从几天缩短到几小时。

安装

系统要求

Torch 的 GPU 加速版本具有以下要求:

  • Ubuntu 14.x(或者任何 64 位 Linux,如果您选择从源文件构建)
  • NVIDIA® CUDA® 7.5 或更高版本(对于 Pascal GPU,需要 CUDA 8.0 或更高版本)
  • cuDNN v5.0 或更新版本

此外,还需要支持计算能力 3.0 或更高版本的 NVIDIA GPU。NVIDIA Tesla® P100 和 M40 专为处理机器学习工作负载而设计。我们建议将 P100 和 M40 用于服务器,而将 TitanX 用于 PC。

下载和安装说明

Torch 基于 Lua 的包管理器 LuaRocks 构建,具有模块化结构。一组常用的 Torch 模块在 GitHub 上遵循 BSD 开源许可证分发。我们建议使用预先构建的 Torch debian 包(仅限 Ubuntu 14.x)。

以下是编译过程的简要概述

1.向 apt-get 中添加 CUDA 和机器学习资源库

下载并安装 cuda-repo-ubuntu1404 和 nvidia-machine-learning-repo 包,以获取 NVIDIA 的机器学习包。运行下列命令以获取所需资源库:

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

您可借此获取包含用于 CUDA 和 ML 的 Ubuntu 包的 NVIDIA 库,例如 cuda-toolkit-8-0、digits、caffe-nv、torch 和 libcudnn5。

2. 通过 apt-get 安装 Torch 包

由于您已配置对 NVIDIA ML 库的访问,因此需要安装 Torch 包及其依赖项:

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

如果您使用不同的系统,或者选择从源文件构建 Torch,请参阅 Torch 速查手册

训练模型

在系统上安装 Torch 后,可按以下所示内容运行:

5 > th 
 ______             __   |  Torch7                                          
/_  __/__  ________/ /   |  用于 Lua 的科学计算。 
 / / / _ \/ __/ __/ _ \  |  键入 ? 查看帮助                                 
/_/  \___/_/  \__/_//_/  |  https://github.com/torch          
                         |  http://torch.ch                   
    
th>

这里我们使用 ResNet 作为示例。如需获取关于下载及安装 ResNet 模块和训练图像数据集的说明,请访问 Facebook ResNet 训练页面

我们假设您已成功安装该模块及数据集。

要运行训练,请转到 ResNet 副本所在目录并运行以下命令:

main.lua

默认情况下,脚本使用单个 GPU 及两个数据加载线程在 ImageNet 上运行 ResNet-34:

th main.lua -data [imagenet-folder with train and val folders]

要在 4 个 GPU 和 8 个 CPU 线程上训练 ResNet-50,请运行以下命令:

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

可以从 ResNet 训练页面获取经过训练的模型和其他资源。

基准

本节演示了所选数据集的 GPU 加速。基准按照递增的原子序号列出。读取输出结果时的品质因数为“纳秒/天”(值越大越好),位于“mdout”文件中输出内容的结尾。最好对所有时间步长进行测量(而不是最后 1000 个步长)。

ALEXTNET 和 GOOGLENET 的图像训练性能

AlexNet 是一个卷积神经网络,为分类一千多个不同类别的 120 万张图像而开发。

GoogLeNet 是较新的深度学习模型,可以利用更深度、更广泛的网络提供更高准确度的图像分类。

NVIDIA Tesla P100 PCIe 性能
NVIDIA Tesla M40 性能
NVIDIA Tesla K80 性能

推荐的系统配置

硬件配置

PC

参数
规格

CPU 架构

x86_64

系统内存

8-32 GB

CPU 数

1

GPU 型号

NVIDIA®TITAN X

GPU

1-2

服务器

参数
规格

CPU 架构

x86_64

系统内存

32 GB

CPU 数/节点

1-2

GPU 型号

Tesla® P100
Tesla® M40

GPU 数/节点

1-4

软件配置

软件堆栈

参数
版本

操作系统

Ubuntu 14.04

GPU 驱动程序

352.68 或更高版本

CUDA 工具包

8.0 或更高版本

cuDNN 库

v5.0 或更高版本

Python

2.7

立即构建理想的 GPU 解决方案。