现在,开始阅读此《GPU Ready Apps Guide》(GPU Ready 应用程序指南)。
Torch 是一种 深度学习框架 ,可为 机器学习 算法提供广泛支持。得益于简单且快速的脚本语言 LuaJIT 以及底层 C/ CUDA 实现,Torch 是一种易于使用且效率很高的开源软件。
Torch 提供热门的神经网络和优化库,不但容易使用,而且还提供超高灵活性,便于构建复杂的神经网络拓扑。
另外,它在最新 NVIDIA Pascal™ GPU 上的运行速度最多可以提升 70%,因此您现在可以将网络训练时间从几天缩短到几小时。
Torch 的 GPU 加速版本具有以下要求:
此外,还需要支持计算能力 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 个步长)。
AlexNet 是一个卷积神经网络,为分类一千多个不同类别的 120 万张图像而开发。
GoogLeNet 是较新的深度学习模型,可以利用更深度、更广泛的网络提供更高准确度的图像分类。