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