译者:yportne13
作者: Nathan Inkawhich
编辑: Teng Li
在这篇教程中我们会展示如何使用 Amazon AWS 的两个多路GPU节点来设置,编写和运行 PyTorch 1.0 分布式训练程序。首先我们会介绍 AWS 设置, 然后是 PyTorch 环境配置, 最后是分布式训练的代码。你会发现想改成分布式应用你只需要对你目前写的训练程序做很少的代码改动, 绝大多数工作都只是一次性的环境配置。
Amazon AWS 设置
在这篇教程中我们会在两个多路 GPU 节点上运行分布式训练。在这一节中我们首先会展示如何创建节点,然后是设置安全组(security group)来让节点之间能够通信。
创建节点
在 Amazon AWS 上创建一个实例需要七个步骤。首先,登录并选择 Launch Instance.
1: 选择 Amazon Machine Image (AMI) - 我们选择 Deep Learning AMI (Ubuntu) Version 14.0
。 正如介绍中所说的,这个实例安装了许多流行的深度学习框架并已经配置好了 CUDA, cuDNN 和 NCCL。 这是一个很好的开始。
2: 选择一个实例类型 - 选择GPU计算单元 p2.8xlarge
。 注意,每个实例的价格不同,这个实例为每个节点提供 8 个 NVIDIA Tesla K80 GPU,并且提供了适合多路 GPU 分布式训练的架构。
3: 设置实例的细节 - 唯一需要设置的就是把 Number of instances 加到 2。其他的都可以保留默认设置。
4: 增加存储空间 - 注意, 默认情况下这些节点并没有很大的存储空间 (只有 75 GB)。对于这个教程, 我们只使用 STL-10 数据集, 存储空间是完全够用的。但如果你想要训练一个大的数据集比如 ImageNet , 你需要根据数据集和训练模型去增加存储空间。
5: 加 Tags - 这一步没有什么需要设置的,直接进入下一步。
6: 设置安全组(Security Group) - 这一步很重要。默认情况下同一安全组的两个节点无法在分布式训练设置下通信。 这里我们想要创建一个新的安全组并将两个节点加入组内。 但是我们没法在这一步完成这一设置。记住你设置的新的安全组名(例如 launch-wizard-12)然后进入下一步步骤7。
7: 确认实例启动 - 接下来,确认例程并启动它。 默认情况下这会自动开始两个实例的初始化。你可以通过控制面板监视初始化的进程。
阅读全文/改进本文