Ray 训练基准测试#
下面我们记录了常见 Ray Train 任务和工作流的性能基准。
GPU 图像训练#
此任务使用 TorchTrainer 模块,通过 Pytorch ResNet 模型训练不同数量的数据。
我们在不同的集群规模和数据规模上测试性能。
备注
对于多主机分布式训练,在AWS上我们需要确保ec2实例在同一个VPC中,并且在安全组中所有端口都是开放的。
集群设置 |
数据大小 |
性能 |
命令 |
1 个 g3.8xlarge 节点(1 个工作节点) |
1 GB (1623 张图片) |
79.76 秒 (2 个周期, 40.7 张图像/秒) |
|
1 个 g3.8xlarge 节点(1 个工作节点) |
20 GB (32460 张图片) |
1388.33 秒 (2 个周期, 46.76 张图像/秒) |
|
4 个 g3.16xlarge 节点(16 个工作节点) |
100 GB (162300 张图片) |
434.95 秒 (2 个周期, 746.29 张图像/秒) |
|
Pytorch 训练一致性#
此任务检查原生 Pytorch Distributed 和 Ray Train 的分布式 TorchTrainer 之间的性能一致性。
我们展示了两个框架之间的性能相似(在2.5%以内)。性能在不同的模型、硬件和集群配置下可能会有很大差异。
报告的时间是针对原始训练时间的。两种方法都有几秒钟的未报告的常数设置开销,对于较长的训练运行来说可以忽略不计。
集群设置 |
数据集 |
性能 |
命令 |
4 个 m5.2xlarge 节点 (4 个工作节点) |
FashionMNIST |
196.64 秒(对比 Pytorch 的 194.90 秒) |
|
4 个 m5.2xlarge 节点 (16 个工作节点) |
FashionMNIST |
430.88 秒(对比 Pytorch 的 475.97 秒) |
|
4 个 g4dn.12xlarge 节点 (16 个工作进程) |
FashionMNIST |
149.80 秒(对比 Pytorch 的 146.46 秒) |
|
Tensorflow 训练一致性#
此任务检查原生 Tensorflow Distributed 和 Ray Train 的分布式 TensorflowTrainer 之间的性能一致性。
我们展示了两个框架之间的性能相似(差异在1%以内)。性能在不同模型、硬件和集群配置下可能会有很大差异。
报告的时间是针对原始训练时间的。两种方法都有几秒钟的未报告的常数设置开销,对于较长的训练运行来说可以忽略不计。
备注
批量大小和训练轮数对于GPU基准测试是不同的,这导致了更长的运行时间。
集群设置 |
数据集 |
性能 |
命令 |
4 个 m5.2xlarge 节点 (4 个工作节点) |
FashionMNIST |
78.81 秒(对比 Tensorflow 的 79.67 秒) |
|
4 个 m5.2xlarge 节点 (16 个工作节点) |
FashionMNIST |
64.57 秒(对比 Tensorflow 的 67.45 秒) |
|
4 个 g4dn.12xlarge 节点 (16 个工作进程) |
FashionMNIST |
465.16 秒(对比 Tensorflow 的 461.74 秒) |
|
XGBoost 训练#
此任务使用 XGBoostTrainer 模块,在不同大小的数据上进行训练,并采用不同的并行度,以展示从分布式数据并行中获得的近线性扩展。
XGBoost 参数在本任务中保持为 xgboost==1.7.6
的默认设置。
集群设置 |
分布式训练工作者的数量 |
数据大小 |
性能 |
命令 |
1 个 m5.4xlarge 节点,配备 16 个 CPU |
使用 12 个 CPU 训练工作器,为 Ray Data 任务留下 4 个 CPU |
10 GB (2600万行) |
310.22 秒 |
|
10 个 m5.4xlarge 节点 |
10 个训练工人(每个节点一个),使用 10x12 个 CPU,留下 10x4 个 CPU 用于 Ray Data 任务 |
100 GB (2.6亿行) |
326.86 秒 |
|