cckchina 2017-12-07
机器学习的兴起,给数字运算和计算能力带来了新的要求。随着硬件资源逐渐便捷和便宜,人们选择一些更合适的平台来进行实验和模型训练。
那么,是使用Amazon的AWS EC2实例?或者是IBM的Softlayer、谷歌的计算引擎、微软的Azure,又如何做一个真正的专用服务器,如Hetzner提供的服务器?
由于没有明确的基准来解决为ML选择硬件和软件平台的实际方面,个人和小企业通常会选择比较流行的选择,这往往是不够理想的。
Shiva Manne在博客文章系列中的一部分,它从易用性、成本、稳定性、可扩展性和性能等实际方面比较了硬件平台。
基准设置
硬件平台:参赛者
Hetzner的专用服务器、Amazon的AWS、谷歌的Compute Engine和IBM的Softlayer上的基准测试收集了相关的指标。这些平台是根据它们的流行度来选择的,具体还考虑了这3种机器实例——预算、中等和高端(见表1)。机器的这种分类是基于它们的成本($ / hr),对于这个CPU密集的基准测试来说,主要取决于它所包含的CPU核心的总数。
为了对Spark MLlib进行基准测试,我们在谷歌的Cloud Dataproc上运行该模型。这是一个运行Apache Spark和Apache Hadoop集群的快速、易于使用和完全托管的云服务。
基准测试任务:为什么是Word2Vec?
基准算法的选择是困难的,不管怎样选择,都会引起争议和挑剔。我们决定使用Word2Vec,因为它结合了几个令人愉快的属性:
1.这是一个实用的算法,在工业界和学术界有着无数令人兴奋的应用和广泛的用途。
2.Word2vec是一种计算繁重的算法:大部分时间花费在数字处理上,导致核心的高性能计算配置文件。这对基准测试非常有用。
3.Word2vec也很容易并行化,这意味着我们可以测试硬件和软件的缩放属性。
4.Word2vec由原作者提供了一个很好的参考实现。这使得理智和准确性检查变得更容易 - 对于它应该做什么没有任何争论。
5.它存在已经有四年多的时间了,已经成为ML实践的基石。机器学习框架没有理由不运送一个理智的实现来训练像Word2Vec这样的词嵌入。
简而言之,我们使用Word2Vec作为测量ML框架质量的温和代理,以获得有关其对于性能、稳健性和可伸缩性的见解。同时,我们也用它来比较不同硬件提供商的投资回报率。
评估云平台
关于可重复性的说明
对于任何基准测试来说,可重复性显然是至关重要的,当然是希望保持高标准。为此,我们将发布所有数据集、代码和详细信息,以便你可以查看、重复甚至扩展这些实验:
数据集:单词矢量在英文维基百科语料库转储(14GB xml.bz2;下载)上进行训练,代码是01-05-2017,使用此代码预处理原始转储格式,以生成每行包含一篇文章的纯文本文件,删除标点符号并将所有单词转换为小写。这个预处理的维基语料库的头200万行用于在每个框架和平台上训练Word2Vec。
Docker:基准在Docker容器中运行,以确保在训练模型的同时实现标准化的环境。为了从SSE / AVX / FMA优化中获益,这个Docker容器是通过编译源码中的Tensorflow构建的。每个基准实例使用带有负取样的跳跃图模型和完全相同的参数值进行4个时期的训练。我为这个基准测试项目创建了一个专用的存储库,包含运行、重复基准测试所需的所有资源。
易于安装和使用、稳定
我们发现IBM的Softlayer面对“新用户”是友好的,大大加快了配置和订购实例的过程。从Hetzner门户中订购一台专用服务器时,这种体验是相似的。
对于谷歌的产品来说这不是那么容易的。在GCE上,我不得不花费大约15分钟的时间思考许多必要的领域(如私人密钥,防火墙规则,子网等)。不理想的客户支持经验只会使他们的问题更加复杂。
AWS在建立实例的简易性方面适合两个云平台之间的某个地方。
关于稳定性,AWS、Softlayer或Hetzner都没有任何问题。然而,在GCE上运行一个长时间的任务(Tensorflow-GPU的基准测试)时,这个工作在几天后突然停止了,没有出现任何错误,目前没有找出问题所在。
这些平台之间的另一个区别是在下订单后提供实例所需的时间。 Softlayer在这方面缺乏配置,有时就会需要20分钟。 AWS和GCE最多只花费几分钟的时间。像大多数专用的服务器提供商一样,Hetzner需要从一小时到一天的时间来设置和运行机器。
硬件成本
当比较按比例分摊的成本(即使这些服务器是按月收费并且没有每小时的选项)时,专用服务器将占据巨大的优势。在所有提供云平台的虚拟实例中,GCE不可否认是更便宜的一个。与亚马逊的复杂定价相比,GCE的定价清晰明了,没有任何隐性成本。通过提供诸如不需要预付费用,每秒计费和自动持续使用折扣等功能可以比其他人更好地控制开支。
亚马逊在定价、计费方面的支持率相当低,在大量的基准和博客中这么认为。虽然看图1,似乎不是那么准确,但AWS在预算中等范围内价格是相当便宜的。碰巧的是,在预算案例中甚至超过了GCE。将高端实例并置在一起可以解决AWS和其他平台在这个领域的巨大成本差异。 Softlayer和AWS之间的价格差距并不是很大,但是AWS的成本完全超越了所有其他平台,AWS收取的优质实例的高价格不会受到预期的性能提升的支持,至少对于数字处理任务来说是如此。
在这方面,Softlayer的表现优于AWS,其中较高端(较昂贵)的实例与预期的性能改善相对应。 Softlayer也是唯一允许在3个云服务提供商之间提供裸机服务器的平台,这在安全性或合规性限制下可能是有用的。
Softlayer&GCE允许你自定义配置实例,这有助于降低成本,而AWS客户则需要从预定义的一组实例中进行选择,然后根据需要选择过量的资源(CPU和RAM)。GCE的另一个成功之处就是用于向客户收费的时间粒度。 GCE按每秒/每分钟增量收费,而Softlayer和AWS按小时递增收费。另外,我们还遇到了Softlayer的一个严重的问题,那就是价格在几个星期内没有适当的更新,导致超出了每月的预算。非常不愉快,不好。
从上面的图中可以明显看出,除了原来的C之外,所有其他软件框架在配置更好的硬件实例上花费更多,并且预期的训练时间也减少了(由于更多的CPU核心)这并不能证明这些额外的价格是合理的资源。通过使用具有不同集群大小的Spark MLlib来绘制Word2Vec模型的训练成本,可以得出类似的结论:
TL,DR总结
更多的一般观察:
大多数框架的性能不能超过某个特定点(8个内核)的额外CPU内核,甚至在具有更多内核的机器上也无法很好地扩展。
高时钟速度的内核数量少于低时钟速度的内核数量。可以通过坚持前者来降低总体成本。
像Hetzner这样的专用服务器可以比云便宜一个数量级,因为它们提供高性能和免费带宽。租用机器延长(月+)使用期限时,一定要考虑到这一点。
在上面的一些图片中,你已经可以看到我们不仅针对硬件提供商进行了一系列测试,还针对不同的软件平台进行了测试。
附录