资讯 人工智能
此为临时链接,仅用于文章预览,将在时失效

阿里开源首款自研科学计算引擎 Mars :基于张量的统一分布式计算框架

作者:丛末
2019/01/18 15:21

雷锋网 AI 科技评论按:日前,阿里巴巴正式开源分布式科学计算引擎 Mars。Mars 是由阿里巴巴统一大数据计算平台 MaxCompute 研发团队历经一年多研发的基于张量的统一分布式计算框架,用其进行科学计算时,不仅使得完成大规模科学计算任务从 MapReduce 实现上千行代码降低到 Mars 数行代码,还能大幅度地提升科学计算性能。

对于科学计算领域来说,Mars 意义重大,其突破了现有大数据计算引擎的关系代数为主的计算模型,并将分布式技术引入科学计算、数值计算领域,极大地扩展了科学计算的计算规模和效率。目前,该引擎在阿里巴巴及其云上客户的业务和生产场景中都的得到了应用。

作为新一代超大规模科学计算引擎,Mars 主要具备三项核心能力:

在系统设计方面,Mars 则具备以下四大特点:

第一,对科学计算任务采用分而治之的方式。

给定一个张量,Mars 会自动将其在各个维度上切分成小的 Chunk 来分别处理。对于 Mars 实现的所有的算子,都支持自动切分任务并行,这一自动切分过程在 Mars 这里被称做 tile。

第二,采用延迟执行机制和 Fusion 优化。

目前,基于 Mars 的延迟执行机制,Mars 编写的代码需要显式调用 execute 触发,不过用户在写中间代码时,并不会需要任何的实际数据计算。这样的好处是可以对中间过程做更多优化,让整个任务的执行更优。在优化方面,Mars 目前主要使用了 fusion 优化,即把多个操作合并成一个执行。

第三,支持多线程模式、单机集群模式以及分布式等多种调度方式

  • 多线程模式:Mars 可以使用多线程在本地调度执行 Chunk 级别的图。对于 Numpy 来说,大部分算子都是使用单线程执行,仅使用这种调度方式,也可使 Mars 在单机即可获得 tile 化的执行图的能力,突破 Numpy 的单机内存限制,同时充分利用单机所有 CPU/GPU 资源,获得比 Numpy 快数倍的性能。

  • 单机集群模式: Mars 可以在单机启动整个分布式运行时,利用多进程来加速任务的执行。这种模式适合模拟面向分布式环境的开发调试。

  • 分布式 : Mars 可以启动一个或者多个 scheduler以及多个 worker,而 scheduler 会调度 Chunk 级别的算子到各个 worker 去执行。

第四,支持代码向内和向外伸缩:Mars 灵活的 tile 化执行图配合多种调度模式,可以使得相同的 Mars 编写的代码随意向内(scale in)和向外(scale out)伸缩:

  • 向内伸缩到单机,可以利用多核来并行执行科学计算任务;

  • 向外伸缩到分布式集群,可以支持到上千台 worker 规模来完成单机无论如何都难以完成的任务。

目前,Mars 实现了 tensor 的部分—— numpy 分布式化,实现了 70% 常见的 numpy 接口。而后续的 Mars 0.2 的版本,也正在尝试将 pandas 分布式化,即将提供完全兼容 pandas 的接口,以构建整个生态。

Github 开源地址:

https://github.com/mars-project/mars

资料来源:阿里技术,https://mp.weixin.qq.com/s/CmAzifMBgkaytd17xknjig  雷锋网雷锋网

长按图片保存图片,分享给好友或朋友圈

阿里开源首款自研科学计算引擎 Mars :基于张量的统一分布式计算框架

扫码查看文章

正在生成分享图...

取消
相关文章