Select Language

AI社区

数据要素产业

深度学习框架哪家强?国产框架OneFlow做了一份测评报告

机器之心报道

机器之心编辑部

近日,国产深度学习框架 oneFlow 发布了人工智能方向深度学习领域的 DLPerf 测评报告。

数据显示,oneFlow 在 4 机 32 卡下的 ResNet50-v1.5 和 BERT-base 两个模型中,无论是 Float32 类型还是自动混合精度,在同样的算法和硬件条件下,吞吐率及加速比均优于其他深度学习框架。

oneFlow 是一流科技自主研发、拥有完全自主知识产权的深度学习框架软件,是国内首个由初创团队研发并开源的 AI 框架,今年 7 月 31 日正式开源。oneFlow 独创的自动数据模型混合并行、静态调度、去中心化和全链路异步流式执行四大核心技术,使用软件技术解决大数据、大模型、大计算所带来的异构集群分布式横向扩展挑战,获得了广泛的业内关注。

报告链接:https://github.com/Oneflow-Inc/DLPerf/blob/master/reports/dlperf_benchmark_test_report_v1_cn.md

此次测评是 oneFlow 开源百天后向广大开发者交出的第一份「大型答卷」。对此,创始人袁进辉表示:「oneFlow 从研发之初就主打高效性,致力于解决大规模分布式 AI 训练问题。这三个多月来,我们做了大量工作来增强稳定性、图编译和运行速度,在多机多卡场景下持续优化,以达到分布式最佳性能。」

参与本次测评的框架共有四款:OneFlow、TensorFlow 1.x & 2.x、PyTorch 和 MXNet。

除了数据对比,在本次测评报告中,oneFlow 还公布了对其他深度学习框架进行调优的过程,以保证测评报告公正、准确、可复现。在谈到为何公布如此详细的调优过程时,袁进辉说道:「首先,我们要保证这份测评报告是客观、可复现的,这样才能帮助到开发者的日常工作。随着数据量级的增长,开发者对于深度学习框架如何激发硬件性能持续关注,我们希望这份报告可以给开发者在应用深度学习框架时提供必要的助力,并以此填补业界没有在严格对齐算法和硬件配置的条件下科学测评分布式深度学习框架的空白。」

据机器之心了解,oneFlow 开源后收到了来自世界范围内的广泛关注,关注者包括来自谷歌、脸书、微软、亚马逊、阿里、字节跳动、、百度、商汤、旷视等企业的核心技术人员。开源一个多月后,接到多家头部互联网企业和人工智能企业的使用意向。

下一步,oneFlow 将基于本次 DLPerf 测试报告,为开发者提供更多关于深度学习框架的系列课程、分享与论文,继续支持企业与机构对深度学习框架的性能优化,提升深度学习框架在行业中的应用水平。

测评背景

这份报告比较了几个深度学习框架在两个经典的深度学习模型训练任务上的吞吐率及分布式训练任务上的加速比。测试均采用相同的数据集、相同的硬件环境和算法。

与其他的评测相比,这次评测有两大特色:

1)强调分布式训练任务的多机扩展性:与 NVIDIA DeepLearningExamples 相比,这次评测对比了多机扩展性,而 NVIDIA 的训练任务仅测试了单机情况。

2)仅测试框架本身的性能差异:与 DAWNBench 相比,这次评测在相同的物理环境下,做了严格的算法对齐工作,让各个框架使用相同的硬件和相同的算法脚本比较吞吐率,仅评测各个框架在系统实现方面的性能表现。而 DAWNBench 对算法要求不限,仅对比收敛到相同精度所使用的时间,所以会把算法改进和系统改进混在一起进行整体比较。

本次评测选择了两个经典主流的深度学习模型 ResNet-50 v1.5 和 BERT-base。测试环境共有 4 台机器,每台机器配置了 8 张 V100 GPU 显卡(每台机器配置与 NVIDA DGX-1 接近)。对于每个框架的每一次性能测试,他们都至少测试了 1 机 1 卡、1 机 8 卡、2 机 16 卡、4 机 32 卡这几种情况。

针对每个框架的每个模型,评测者都测试了其分布式环境下的吞吐率,包含不同的 batch size、是否经过 XLA 优化加速、是否使用自动混合精度训练。最后,他们选取了吞吐率(throughput)和加速比(speedup)作为评测指标

ResNet-50 v1.5 性能测试结果

参与 ResNet-50 v1.5 评测的框架、版本、模型库,以及额外特性如表 4-1 所示:

在 FP32 batch size = 128 时各框架的吞吐率如下所示:

从中可以看出,无论是何种情况( 1 机 1 卡、1 机 8 卡、2 机 16 卡、4 机 32 卡),oneFlow 在 ResNet50-v1.5 模型上的吞吐率均高于其他框架。而且,随着硬件数量的增加,这种优势变得越来越明显。

下图展示了 7 个框架实现在 ResNet50-v1.5 模型上(FP32 batch size = 128)的加速比对比情况:

从中可以看出,在其他条件都相同的情况下,oneFlow 是最接近理想加速比的框架。

除了 Float32,评测者还测试了自动混合精度下各个框架的表现。

注:其中 NGC TensorFlow 1.x 的 batch size = 224,因为 batch size = 256 会遇到 OOM(out of memory)。

从表 4-3 和图 4-3 中可以看出,无论是何种情况( 1 机 1 卡、1 机 8 卡、2 机 16 卡、4 机 32 卡),在自动混合精度下,oneFlow 在 ResNet50-v1.5 模型上的吞吐率均高于其他框架。而且,随着硬件数量的增加,这种优势变得越来越明显。

下图展示了 8 个框架实现在 ResNet50-v1.5 模型上(AMP batch size = 256)的加速比对比情况:

图 4-4 8 个框架实现在 ResNet50-v1.5 模型上(AMP batch size = 256)的加速比对比。

BERT-base pretrain 性能测试结果

参与 BERT-base pretrain 评测的框架、版本、模型库,以及额外特性如表 5-1 所示:

在 FP32 batch size = 32 时各框架的吞吐率如下所示:

和在 ResNet50-v1.5 模型上的表现类似,无论是何种情况( 1 机 1 卡、1 机 8 卡、2 机 16 卡、4 机 32 卡),oneFlow 在 BERT-base pretrain 模型上的吞吐率均高于其他框架。而且,随着硬件数量的增加,这种优势变得越来越明显。

下图展示了 4 个框架实现在 BERT-base 模型上(FP32 batch size = 32)的加速比对比情况:

此外,在 FP32 batch size = max、FP32 batch size = 64 的情况下,oneFlow 在 BERT-base pretrain 模型上也展现出了类似的性能

除了 Float32,评测者还测试了自动混合精度下各个框架的表现。

从上图可以看出,无论是何种情况( 1 机 1 卡、1 机 8 卡、2 机 16 卡、4 机 32 卡),在自动混合精度下,oneFlow 在 BERT-base 模型上的吞吐率均高于其他框架。而且,随着硬件数量的增加,这种优势变得越来越明显。

下图展示了 4 个框架实现在 BERT-base 模型上(AMP batch size = max)的加速比对比情况:

测评总结

根据上述性能测试结果,评测者得出结论:在 ResNet50 和 BERT-base 两个模型中,无论是 Float32 类型还是自动混合精度,oneFlow 的性能表现都优于其他各个框架。

在复现各个框架的性能评测过程中,评测者对比了 oneFlow 框架和其他框架的性能差异以及复现难易程度,总结了一些优缺点。

其他框架的常见缺陷

在评测过程中,评测者发现:

很多框架的数据读取 pipeline 性能存在瓶颈,尤其是 CNN 网络的 AMP 训练,常常依赖 DALI 才能达到理想的性能结果。

在多卡训练时,其他官方框架和官方提供的模型脚本的默认配置一般跑不出最好的吞吐率,经常需要修改数据读取的参数(如 PyTorch 的 worker 数量)并测试多次才能找到最佳的配置参数。

有些框架的分布式性能表现不如 Horovod。

很多框架和模型脚本实现的分布式训练易用性不够好,常常需要测试工程师进行额外的踩坑和脚本修复、第三方依赖安装才能完成分布式训练,有些框架的官方脚本只支持单机,多机即使经过调试、修改代码也难以运行成功。

oneFlow 的优势

评测者还总结了 oneFlow 的优势:

oneFlow 分布式训练非常易用。

oneFlow 不需要依赖 DALI 和 Horovod 就可以实现优秀的分布式训练性能。

oneFlow 多卡训练不需要调试参数,就可以在各种情况下达到最快。

除评测过程、结果等信息以外,该报告还总结了各个框架性能评测复现的踩坑经验,更多内容参见原报告。