MPI 在大规模机器学习领域的前景如何?

我现在的工作是提高机器学习集群的网络性能。很多机器学习应用是本质是并行计算。Message passing interface(MPI)是高性能计算领…
关注者
1,084
被浏览
147,374
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

这个取决于场景,如果要在超算(super computer)上跑机器学习,用MPI是不错的选择。但在云上,不管是公有云的例如AWS/Azure/GCP或者私有云,MPI没有太多必要。

MPI定义的是接口,具体用的时候我们是用某个特定的实现,例如openmpi或者mpich2. 为了简单,这里统一叫MPI。

用MPI实现机器学习是没问题的,不管是对高维稀疏模型还是深度学习。MPI的接口在一些算法的实现上很方便,另外一些地方(例如异步)绕一绕也是可以的。例如虽然MXNet没有用MPI,不过使用MPI来实现个kvstore的backend也是可行的。

MPI的一大优势是支持各种网络硬件,例如infiniband和Intel Omni Path,或者网络拓扑结构,例如cray的dragonfly。通常MPI会做各种针对性的优化从而得到不错的性能。这一点

@SIY.Z

已经提到了。

这个优势主要体现在超算上。而对于云,通常使用常见的网络硬件(例如Ethernet)和连接结构(multi-rooted tree),MPI做的优化通常不会有太大效果。

在云上,MPI的一大问题是容灾。任何一个节点出问题会导致整个任务失败,会导致运营成本增加。(回答里面有提到百度有MPI集群。我当年是最大的用户,一度使用超过50%的节点。对于这一点我是深有体会,例如凌晨3点起来重启任务。)

所以结论是,如果要在云上跑机器学习的话,MPI前景不大。但如果是使用Top500类似的超算,MPI是不错的选择。