spark ML 和 system ML 有什么区别?IBM的apache spark引擎中的system ml和spark ml都解决了问题,想知道主要区别是什么?
1 回答
Apache Spark 是一个分布式、数据并行框架,具有丰富的原语,例如 map、reduce、join、filter 等。此外,它还支持一系列“库”,包括 SQL 和 DataFrames、用于机器学习的 MLlib、GraphX 和 Spark Streaming .
Apache SystemML 是一个灵活、可扩展的机器学习 (ML) 系统,支持算法定制和自动优化。SystemML 的显着特点是:
通过类 R 和类 Python 语言的算法可定制性。多种执行模式,包括 Spark MLContext、Spark Batch、Hadoop Batch、Standalone 和 JMLC。基于数据和集群特性的自动优化,确保效率和可扩展性。更有用的比较是 Spark 的 MLLib 和 SystemML:
与 MLLib 一样,SystemML 可以在 Apache Spark [批处理模式或编程 API] 之上运行。但与 MLLib(具有固定的运行时计划)不同,SystemML 有一个优化器,可以根据输入数据和集群特征调整运行时计划。MLLib 和 SystemML 都可以将输入数据作为 Spark 的 DataFrame 接受。MLLib 的算法是使用 Spark 的原语在 Scala 中编写的。在高层次上,MLLib 有两个用户:(1)专家开发人员,他们在 Scala 中实现他们的算法并且对 Spark 的核心有深刻的理解。(2) 想要使用 MLLib 作为黑盒并调整超参数的非专业数据科学家。这两个用户都严重依赖输入数据和集群特征的初始假设。如果这些假设对于生产中的给定用例无效,则用户可能会获得较差的性能甚至OOM。SystemML 的算法使用高级(线性代数友好)语言实现,其优化器根据输入数据和集群特征动态编译运行时计划。为了简化使用,SystemML 附带了一堆预先实现的算法以及类似 MLLib 的包装器。与 MLLib 不同的是,SystemML 的算法可以在其他后端使用:例如 Apache Hadoop、Embedded In-memory、GPU,并且可能在未来的 Apache Flink 中使用。具有基于成本的优化器(类似于 SystemML)的机器学习系统示例:Mahout Samsara、Tupleware、Cumulon、Dmac 和 SimSQL。具有固定计划的机器学习库示例(类似于 MLLib):Mahout MR、MADlib、ORE、Revolution R 和 HP 的 Distributed R。具有特定领域语言的分布式系统示例(类似于 Apache Spark):Apache Flink、REEF 和 GraphLab .