哪家GPU云提供商最合适?也许这份评测能给你答案
做深度学习开发和实验既可以选择自己搭建硬件平台(参阅《深度 | 从硬件配置到软件安装,一台深度学习机器的配备指南》),也可以向 GPU 提供商购买使用服务。本文介绍了 RARE Technologies 的 Shiva Manne 对几个主要 GPU 平台的评测结果,希望能为想要选择最适合自己的平台的企业或开发者提供帮助。
我们最近发表了使用 word2vec 的大规模机器学习基准评测文章,参阅:https://goo.gl/gndD16。该文章在成本、易用性、稳定性、可扩展性和性能等实用性方面对几个流行的硬件提供商和机器学习框架进行了比较。因为那次基准评测只关注了 CPU,所以我们又在 GPU 上进行了一次类似的机器学习基准评测。
平台
这次基准评测囊括了这些硬件平台:亚马逊网络服务 AWS EC2、Google Cloud Engine(GCE)、IBM Softlayer、Hetzner、Paperspace 和 LeaderGPU。
因为很多现代机器学习任务都要使用 GPU,所以理解不同 GPU 提供商的成本和性能之间权衡是至关重要的。
我要感谢所有这些提供商,感谢他们在我的测试期间慷慨提供的基准分数和出色支持。我将在下面详细讨论和比较所有这些平台,但其中每个平台都有自己的相对优势和短板,而且「GPU 即服务(GPUaaS)」市场本身也非常激动人心和活跃。
(备注:微软 Azure 是唯一一家完全没有任何回应的主要供应商,实际上我们从他们的官方支持频道上也没有得到任何回应。)
这个硬件提供商列表包含提供虚拟实例(AWS、GCE)、裸机基础设施(Softlayer)和专用服务器(Hetzner)的公司,也有相对较新的专注于提供 GPUaaS 的玩家(LeaderGPU、Paperspace)。我们根据每个平台上实例的价格而将 GPU 分为了两类——「预算型」和「高端型」(见表 1)。我们的目标是看高端实例要那么多钱是否值得。
基准评测设置
任务
我们 RARE Technologies 常常需要解决自然语言处理(NLP)问题,所以我为本基准评测任务设置了一个情绪分类任务。我们要训练双向 LSTM 来执行一个推文的二元分类任务。算法的选择则不是非常重要的;对于本基准评测,我唯一真正的要求是算法应该是计算密集型的。为了确保 GPU 利用率最大化,我使用了 Keras 的 CuDNN 支持的快速 LSTM 实现——CuDNNLSTM。
CuDNNLSTM 地址:https://keras.io/layers/recurrent/#cudnnlstm
数据集
我们使用了 Twitter 情绪分析数据集,其中包含 1,578,627 条已分类的推文;对于每一行,如果情绪是正面的就标注 1,如果是负面的则标注 0。模型使用 90% 的数据(经过混洗)训练 4 epoch,另外 10% 的留存数据用于模型评估。
Twitter 情绪分析数据集:http://thinknook.com/twitter-sentiment-analysis-training-corpus-dataset-2012-09-22/
Docker
为了再现性,我创建了一个英伟达 Docker 镜像,其中包含重复运行该基准评测任务所需的所有依赖和数据。这个 Dockerfile 以及所有所需的代码都可在这个 GitHub 库找到:https://github.com/RaRe-Technologies/benchmark_GPU_platforms
我们完整公布了设置方式和代码,这样不仅任何人都可以重现这些结果,而且你也可以换上你自己的硬件平台或其它算法选择,从而进行你自己的基准评测。
结果
表 1:基准评测结果汇总。
*这些是多 GPU 实例,其中模型是使用 Keras 的 multi_gpu_model 函数在所有 GPU 上训练的,但之后我们发现这种方法在利用多 GPU 方面是次优的。
**由于上述原因,这些多 GPU 实例中的模型的训练仅使用了其中一个 GPU。
+ Hetzner 是按月提供专用服务器。这里给出的价格是换算成每小时的价格。
评估:订购、设置和使用难度
在我之前的文章中,我曾根据自己的经验推荐使用 AWS、Softlayer 和 GCE。在 LeaderGPU 和 Paperspace 上订购一个实例是相当简单的,无需任何复杂设置。与 AWS 和 GCE 所需的几秒准备时间相比,Paperspace 和 LeaderGPU 所需的准备时间稍微长一点(几分钟)。
LeaderGPU、亚马逊、Paperspace 提供了免费可用的深度学习机器镜像,其中预装了英伟达驱动和 Python 开发环境;它们还提供了免费的英伟达 Docker——基本上就包含了立即开始实验所需的一切。尽管这能让工作轻松很多(尤其是对于那些只是想开始实验机器学习模型的初学者而言),但我选择用老方式从头开始设置一切(对 LeaderGPU 除外),以便评估为满足个体需求而定制实例的难度。在这个过程中,我遇到了在所有平台上都很常见的一些问题,比如英伟达驱动与已安装的 gcc 版本不兼容,或 GPU 使用量在安装驱动之后就达到了 100%,但又没有证据表明运行着什么进程。还有意外的情况——在 Paperspace 低端实例(P6000)上运行我的 Docker 时出现了一个错误。这个问题的原因是 Docker 上的 TensorFlow 是使用 CPU 优化(MSSE、MAVX、MFMA)从源编译的,而 Paperspace 实例不支持这些 CPU 优化。不使用这些优化再运行 Docker 就行了。
就稳定性而言,我没在这些平台上遇到任何问题。
成本
不出所料,专用服务器是控制成本的最佳选择。这是因为 Hetzner 是按月收费的,换算成每小时的价格就非常低。当然,这个数字是均摊之后的,但只要你有足够多的任务保证服务器足够繁忙,那么就能保证成本低廉。在虚拟实例提供商中,显而易见的赢家是 Paperspace。对于低端 GPU,在 Paperspace 上训练一个模型的成本只有在 AWS 上的一半。在高端 GPU 方面 Paperspace 也有类似的优势。
下图是将表 1 相应部分总结成的图表:
图 1:在各种不同的 GPU 硬件平台上为 Twitter 情绪分类任务(约 150 万条推文,4 epoch)训练一个双向 LSTM 的成本。
AWS 和 GCE 在高端和低端 GPU 上的成本优势各有不同。在低端 GPU 方面 GCE 比 AWS 便宜很多,而在高端 GPU 方面 GCE 则比 AWS 稍贵一点。这说明昂贵的 AWS GPU 的额外成本可能是值得的,能够提供物有所值的价值。
IBM Softlayer 和 LeaderGPU 看起来很贵,这主要是由于他们的多 GPU 实例使用率不足。这个基准评测是使用 Keras 框架执行的,而 Keras 框架的多 GPU 实现的效率非常低,有时候甚至还比不上在同一台机器上运行的单个 GPU。但 IBM Softlayer 和 LeaderGPU 这两个平台都不提供单个 GPU 实例。在 Softlayer 上运行的基准评测通过 Keras 的 multi_gpu_model 函数使用了所有可用的 GPU,而在 LeaderGPU 上运行的基准评测只使用了可用 GPU 中的一个。这就导致出现了资源利用不足所造成的额外成本。另外,LeaderGPU 分别以和 GTX 1080 与 Tesla P100 一样的价格提供了更强大的 GPU——GTX 1080 Ti 和 Tesla V100。在这些服务器上运行肯定能降低整体成本。考虑到这些因素,在该图中的 LeaderGPU 的低端成本实际上还是相当划算的。尤其是当你计划使用能更好地利用多 GPU 的非 Keras 框架时。
另外似乎还有另一个普遍趋势——更便宜的 GPU 的性价比优于更昂贵的 GPU;这说明训练时间的减少不能抵消总体成本的增长。
关于使用 Keras 训练多 GPU 模型的备注
学术界和行业很多人都非常喜欢使用 Keras 等高级 API 来开发深度学习模型。因为这是接受度最高和开发活动最活跃的深度学习框架之一,用户期望无需额外的处理就能切换成多 GPU 模型。但实际情况肯定不是如此,如下图给出的证据。多 GPU 的加速效果是相当难以预料的——在「双 GTX 1080」服务器上多 GPU 训练有明显的加速,而在「双 P100」服务器上多 GPU 的训练速度甚至比单 GPU 还慢。在我调查这个成本问题时,我也在 GitHub 上看到了其它一些对此的博客和问题讨论。
图 2:使用 Keras 在多 GPU 和单个 GPU(这些机器的其它方面完全一样)上训练所用的训练时间。
模型准确度
对于健全性测试(sanity testing),我们在训练结束时检测了最终的模型准确度。在表 1 中可以看到,没有显著的差异表明底层的硬件/平台对训练质量有影响,所以该基准评测的设置是正确的。
硬件定价
GPU 价格经常变化,但目前来看,AWS 以 0.9 美元/小时的起步价提供 K80 GPU(p2 实例),并且按使用秒数计费,而更强大和性能更高的 Tesla V100 GPU(p3 实例)的起步价为 3.06 美元/小时。其它服务还包括数据迁移、弹性 IP 地址和 EBS 优化实例,这些需要额外的成本。GCE 是一个经济实惠的选择,可以分别以 0.45 美元/小时和 1.46 美元/小时的起步价提供 Tesla K80 和 P100。这些都是按秒收费的,并且还提供了激励方案,会根据使用情况提供折扣。尽管与 AWS 不同,它们需要附加到一个 CPU 实例上(0.0475 美元/小时的 n1-standard-1)。
在低成本方面,Paperspace 和 GCE 在专用 GPU 费率上差不多,从 0.4 美元/小时的 Quadro M4000 到 2.3 美元/小时的 Tesla V100。除了通常的按小时付费,它们也有按月收费的模式(5 美元/月),其中包含存储和维护费用。Paperspace 按毫秒收费,额外付费可以购买附加服务。Hetzner 只提供了一种按月收费的使用 GTX 1080 的专用服务器,另外还需要一次额外的安装费用。
IBM Softlayer 是市场上按月和按小时提供裸机 GPU 服务器的少数几家平台之一。它提供 3 种 GPU 服务器(包含 Tesla M60 和 K80),起步价 2.8 美元/小时。这些服务器有静态配置,意味着相比于其它云提供商,其定制可能性很有限。Softlayer 的按小时收费方式更加糟糕,事实上在短期运行的任务上成本更高。
LeaderGPU 是一个相对较新的玩家,提供使用各种 GPU(P100、V100、GTX 1080、GTX 1080Ti)的专用服务器。用户可以按月、按小时或按分钟(按秒计费)选择付费方案。服务器最小的有 2 GPU,一直到 8 GPU,价格从 0.02 欧元/分到 0.08 欧元/分。
Spot/Preemptive 实例
某些平台为它们空闲的计算能力提供了很大的折扣(50%-90%)(AWS 的 spot 实例和 GCE 的 preemptive 实例),但它们可能会出人意料地终止服务。因为无法保证该实例什么时候才会再次上线,所以训练时间很难预测。对于可以应付这种中断的应用而言,这可能没什么问题,但很多任务(比如实例时间有限的项目)在这种情况下没什么好处(尤其是考虑到人力时间的浪费时)。在 preemptive/spot 实例上运行任务需要额外的代码才能很好地处理实例的中断和重启(检查点/将数据存储到永久磁盘等)。另外,价格波动(就 AWS 的情况)会导致成本随基准评测运行时的计算能力供需情况而发生变化。需要多次运行才能得到平均成本。鉴于我完成本基准评测的时间有限,所以我没有做 spot/preemptive 实例的评测。
总结点评
Paperspace 在性能和成本上似乎领先一步,对于只是想实验深度学习技术的偶尔使用一次/不经常使用的用户而言尤其如此;另一份评测报告也有类似的结果,参阅:https://goo.gl/rL02rs
专用服务器(比如 LeaderGPU 提供的那种)和裸机服务器(比如 Hetzner)很适合考虑长期使用这些资源的重度用户。注意,因为它们在服务器定制方面的灵活性较小,所以要确保你的任务是 CPU/GPU 高度密集型的,这样才能受益于定价。
不要忽视 Paperspace 和 LeaderGPU 这样更新的提供商,因为它们可以帮助减少大量成本。因为相关的惯性和平台切换成本,企业可能并不愿意更换提供商,但这些更小的平台确实值得考虑。
对于想要实现与提供商的其它服务集成整合(人工智能集成——亚马逊的 Rekognition、谷歌的 Cloud AI)的人来说,AWS 和 GCE 可能是非常棒的选择。
除非你计划运行需要数天时间才能完成的任务,否则坚持使用低端单 GPU 实例才是最好的选择(参阅:http://minimaxir.com/2017/11/benchmark-gpus)。
高端 GPU 速度快得多,但投资回报率(ROI)实际上更差。只有当更短的训练时间(更低的研发周期延迟)比更高的硬件成本更重要时,你才应该选择高端 GPU。