petuum logo img

petuum logo


Petuum 是一个分布式机器学习平台,目标是为大规模机器学习提供一个通用的算法和系统接口,简化分布式机器学习程序的实现。Petuum可使用户从复杂繁琐的分布式系统编程和调试中解脱出来,将更多精力集中在优化模型和算法上。Petuum可高效地运行于各种硬件环境下,包括实验室集群服务器和云计算平台,如Amazon EC2, Google GCE。

Bösen 面向大数据人工智能模型的数据并行化训练引擎

Strads 面向大数据人工智能模型的模型并行化训练引擎

Poseidon 多GPU分布式深度学习系统

Petuum 1.1版本发布

按照 GitHub wiki 上的教程安装Petuum

Petuum简介

Petuum 是一个分布式机器学习平台,用以处理两类大规模机器学习问题: (1) 大数据(数据样本数目庞大); (2)大模型(模型参数众多)。 不同于一般用途的分布式编程平台(如数据流系统), Petuum专门为机器学习而设计。充分利用机器学习算法的特征,如迭代性,容错性,参数收敛的不均匀性等等,以最大化系统性能。Petuum主要包括两个组件: (1)基于受限异步一致性协议的分布式键值存储系统Bösen; (2)动态参数更新调度器Strads

关于Petuum系统的技术细节,请参阅Research页面,提供了7个教程和8篇论文的链。

Petuum 关键特征

  • 运行于集群服务器和云计算平台,可支持几百台机器
  • Bösen,基于受限异步一致性协议的分布式键值存储系统,可支持数据并行分布式机器学习编程
    • Bösen使用的一致性协议是受限异步,既可以获得与完全异步相似的性能,又可以保证机器学习算法的正确性。
  • Strads,动态参数更新调度器,可支持模型并行分布式机器学习编程
    • Strads对机器学习模型参数的更新进行细粒度的调度,根据参数的优先级自动调整更新次序,并根据参数的相关性防止不安全的并行。
  • C++和Jave编程接口
  • 支持Hadoop生态系统,如YARN和HDFS
  • Petuum机器学习库包含十余个算法
    • 较新的算法诸如监督性话题模型(MedLDA),深度学习,距离度量学习,稀疏编码
    • 经典算法包括逻辑回归,k均值聚类,随机森林
    • 全部算法的 完整列表

Petuum在不损失模型性能的前提下,可以在更少的硬件上更快地运行更大的模型。 Petuum性能举例

  • 逻辑回归:使用8台机器(每台16核),在30GB稀疏数据上学习一个千万维度的模型,用时20分钟
  • LDA话题模型:使用25台机器(每台16核),在8百万文本(1.4万词汇)学习1000个话题,用时17分钟
  • 矩阵分解(协同过滤):使用25台机器(每台16核),分解一个4.8万乘以2万的矩阵(秩设为40),用时2分钟
  • 构建于开源深度学习工具包(Caffe)之上的分布式卷积神经网络:使用8台GPU机器(每台一个Tesla K20 GPU),训练Alexnet(0.6亿参数),用时少于24小时
  • MedLDA监督话题模型:使用20台机器(每台12核),在110万文本(20个类)学习1000个话题,用时85分钟
  • 多类逻辑回归:使用8台机器(每台16核),在MNIST数据集(数据量19GB, 8百万样本, 特征维度784)训练,用时6分钟
Amazon和Google等云服务商提供的机器(16核,128G内存),每台费用少于2美元每小时。

除了发布开源代码,Petuum已被应用于解决具体的工业界问题,在大规模硬件系统上得到了部署:

  • 基于深度学习的图像分析:10,000+目标类,几TB图像数据,40,000 GPU核
  • 网络分析:包含数十亿结点,几TB容量的图数据,400台CPU机器
  • 话题分析:包含数十亿词,几TB容量的文本数据,128CPU机器

Petuum命名

Petuum这一名字来源于音乐中的无穷动(perpetuum mobile)体裁, 一种从头到尾贯穿急速节奏的乐曲形式 (意大利小提琴家帕格尼尼的Moto Perpetuo是一个典型例子)。我们采用这一名字的初衷是希望能够搭建一个可以高效的、 可靠的、能够"无穷动”运行的分布式机器学习系统。 Bösen和Strads分别取自于贝森朵夫(Bösendorfer)钢琴 和斯特拉迪瓦里(Stradivarius)小提琴(曾分别被李斯特和帕格尼尼演奏使用)。