阿里重磅开源首款自研科学计算引擎mars,揭秘超大规模科学计算(阿里云 科学计算)-ag凯发k8国际

摘要: 由阿里巴巴统一大数据计算平台maxcompute研发团队,历经1年多研发,打破大数据、科学计算领域边界,完成第一个版本并开源。 mars,一个基于张量的统一分布式计算框架。使用 mars 进行科学计算,不仅使得完成大规模科学计算任务从mapreduce实现上千行代码降低到mars数行代码,更在性能上有大幅提升。

日前,阿里巴巴正式对外发布了分布式科学计算引擎 mars 的开源代码地址,开发者们可以在pypi上自主下载安装,或在github上获取源代码并参与开发。

此前,早在2018年9月的杭州云栖大会上,阿里巴巴就公布了这项开源计划。mars 突破了现有大数据计算引擎的关系代数为主的计算模型,将分布式技术引入科学计算/数值计算领域,极大地扩展了科学计算的计算规模和效率。目前已应用于阿里巴巴及其云上客户的业务和生产场景。本文将为大家详细介绍mars的设计初衷和技术架构。


概述

科学计算即数值计算,是指应用计算机处理科学研究和工程技术中所遇到的数学计算问题。比如图像处理、机器学习、深度学习等很多领域都会用到科学计算。有很多语言和库都提供了科学计算工具。这其中,numpy以其简洁易用的语法和强大的性能成为佼佼者,并以此为基础形成了庞大的技术栈。(下图所示)

numpy的核心概念多维数组是各种上层工具的基础。多维数组也被称为张量,相较于二维表/矩阵,张量具有更强大的表达能力。因此,现在流行的深度学习框架也都广泛的基于张量的数据结构。

随着机器学习/深度学习的热潮,张量的概念已逐渐为人所熟知,对张量进行通用计算的规模需求也与日俱增。但现实是如numpy这样优秀的科学计算库仍旧停留在单机时代,无法突破规模瓶颈。当下流行的分布式计算引擎也并非为科学计算而生,上层接口不匹配导致科学计算任务很难用传统的sql/mapreduce编写,执行引擎本身没有针对科学计算优化更使得计算效率难以令人满意。

基于以上科学计算现状,由阿里巴巴统一大数据计算平台maxcompute研发团队,历经1年多研发,打破大数据、科学计算领域边界,完成第一个版本并开源。 mars,一个基于张量的统一分布式计算框架。使用 mars 进行科学计算,不仅使得完成大规模科学计算任务从mapreduce实现上千行代码降低到mars数行代码,更在性能上有大幅提升。目前,mars 实现了 tensor 的部分,即numpy 分布式化, 实现了 70% 常见的 numpy 接口。后续,在 mars 0.2 的版本中, 正在将 pandas 分布式化,即将提供完全兼容 pandas 的接口,以构建整个生态。

mars作为新一代超大规模科学计算引擎,不仅普惠科学计算进入分布式时代,更让大数据进行高效的科学计算成为可能。

mars的核心能力

  • 符合使用习惯的接口
  • mars 通过 tensor 模块提供兼容 numpy 的接口,用户可以将已有的基于 numpy 编写的代码,只需替换 import,就可将代码逻辑移植到 mars,并直接获得比原来大数万倍规模,同时处理能力提高数十倍的能力。目前,mars 实现了大约 70% 的常见 numpy 接口。
  • 充分利用gpu加速
  • 除此之外,mars 还扩展了 numpy,充分利用了gpu在科学计算领域的已有成果。创建张量时,通过指定 gpu=true 就可以让后续计算在gpu上执行。比如:

a = mt.random.rand(1000, 2000, gpu=true) # 指定在 gpu 上创建(a 1).sum(axis=1).execute()

  • 稀疏矩阵
  • mars 还支持二维稀疏矩阵,创建稀疏矩阵的时候,通过指定 sparse=true 即可。以eye 接口为例,它创建了一个单位对角矩阵,这个矩阵只有对角线上有值,其他位置上都是 0,所以,我们可以用稀疏的方式存储。

a = mt.eye(1000, sparse=true) # 指定创建稀疏矩阵(a 1).sum(axis=1).execute()

系统设计

接下来介绍 mars 的系统设计,让大家了解 mars 是如何让科学计算任务自动并行化并拥有强大的性能。

  • 分而治之—tile
  • mars 通常对科学计算任务采用分而治之的方式。给定一个张量,mars 会自动将其在各个维度上切分成小的 chunk 来分别处理。对于 mars 实现的所有的算子,都支持自动切分任务并行。这个自动切分的过程在mars里被称为 tile。

比如,给定一个 1000 2000 的张量,如果每个维度上的 chunk 大小为 500,那么这个张量就会被 tile 成 2 4 一共 8 个 chunk。对于后续的算子,比如加法(add)和求和(sum),也都会自动执行 tile 操作。一个张量的运算的 tile 过程如下图所示。

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

对于前面一个图的例子,在 tile 完成之后,mars 会对细粒度的 chunk 级别图进行 fusion 优化,比如8个 rand add sum,每个可以被分别合并成一个节点,一方面可以通过调用如 numexpr 库来生成加速代码,另一方面,减少实际运行节点的数量也可以有效减少调度执行图的开销。

  • 多种调度方式
  • mars 支持多种调度方式:

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

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

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

下图是 mars 分布式的执行架构:

mars 分布式执行时会启动多个 scheduler 和 多个 worker,图中是3个 scheduler 和5个 worker,这些 scheduler 组成一致性哈希环。用户在客户端显式或隐式创建一个 session,会根据一致性哈希在其中一个 scheduler 上分配 sessionactor,然后用户通过 execute 提交了一个张量的计算,会创建 graphactor 来管理这个张量的执行,这个张量会在 graphactor 中被 tile 成 chunk 级别的图。这里假设有3个 chunk,那么会在 scheduler 上创建3个 operandactor 分别对应。这些 operandactor 会根据自己的依赖是否完成、以及集群资源是否足够来提交到各个 worker 上执行。在所有 operandactor 都完成后会通知 graphactor 任务完成,然后客户端就可以拉取数据来展示或者绘图。

  • 向内和向外伸缩
  • mars 灵活的 tile 化执行图配合多种调度模式,可以使得相同的 mars 编写的代码随意向内(scale in)和向外(scale out)伸缩。向内伸缩到单机,可以利用多核来并行执行科学计算任务;向外伸缩到分布式集群,可以支持到上千台 worker 规模来完成单机无论如何都难以完成的任务。

benchmark

在一个真实的场景中,我们遇到了巨型矩阵乘法的计算需求,需要完成两个均为千亿元素,大小约为2.25t的矩阵相乘。mars通过5行代码,使用1600 cu(200个 worker,每 worker 为 8核 32g内存),在2个半小时内完成计算。在此之前,同类计算只能使用 mapreduce 编写千余行代码模拟进行,完成同样的任务需要动用 9000 cu 并耗时10个小时。

让我们再看两个对比。下图是对36亿数据矩阵的每个元素加一再乘以二,红色的叉表示 numpy 的计算时间,绿色的实线是 mars 的计算时间,蓝色虚线是理论计算时间。可以看到单机 mars 就比 numpy 快数倍,随着 worker 的增加,可以获得几乎线性的加速比。

下图是进一步扩大计算规模,把数据扩大到144亿元素,对这些元素加一乘以二以后再求和。这时候输入数据就有 115g,单机的 numpy 已经无法完成运算,mars 依然可以完成运算,且随着机器的增多可以获得还不错的加速比。

开源地址

mars 已经在 github 开源:https://github.com/mars-project/mars ,且后续会全部在 github 上使用标准开源软件的方式来进行开发,欢迎大家使用 mars,并成为 mars 的 contributor。

mars科学计算引擎产品发布会

发布直播回放>>https://yq.aliyun.com/live/800

发布活动页>> https://promotion.aliyun.com/ntms/act/cloud/marsfbh.html

大数据计算服务maxcomputeag凯发k8国际官网>>https://www.aliyun.com/product/odps

maxcompute试用申请页面>>https://i.aliyun.com/inviteapplyagent_id=183

聚能聊>>https://yq.aliyun.com/roundtable/493400

作者:晋恒

ag凯发k8国际的版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2024年4月16日 上午11:20
下一篇 2024年4月16日 上午11:32

相关推荐

  • 《建筑装饰工程项目管理》课程作业 班级: 姓名: 分数: 填空题(每空1分,共20分) 既有建筑装饰装修工程设计涉及主体和承重结构变动时,必须在施工前委托 单位或者具有 单位提出设…

    科研百科 2023年8月31日
    218
  •   第一师五团加快效益奶牛养殖业发展步伐,积极拓宽奶牛提质增效渠道,扩大奶牛繁育比重,不断选优淘劣提升高产奶牛数量。xyi   为了促进团场奶牛养殖业持续健康发展,提高生产水平,增…

    科研百科 2022年5月30日
    318
  •   近日,天津市畜牧兽医局召开2015年天津市秋季重大动物疫病防控工作会议,贯彻落实农业部全国秋季重大动物疫病防控工作视频会议精神,部署启动全市秋防工作。市畜牧兽医局局长王红军出席…

    科研百科 2022年6月6日
    284
  • 项目介绍 一套企业级低代码开发平台,用户使用门槛极低,完全开源免费。 采用组件模式,可以扩展不同的业务组件功能,更加方便的实现更多的各种业务场景需求,且不会导致系统臃肿。组件即使即…

    科研百科 2024年2月15日
    70
  • 免费工程项目管理软件: 提高项目效率的实用工具 随着数字化时代的到来,工程项目管理也逐渐走向智能化。免费的工程项目管理软件成为了越来越多企业和个人的选择。这些软件可以帮助项目管理人…

    科研百科 2024年5月24日
    38
  • 展望丨常德:努力建设省域副中心城市和现代化区域中心城市(常德将成为中心城市)

    编 者 按 2019年,是全面建成小康社会关键之年。新的一年,如何推动常德经济社会发展迈上新台阶?“思想是行动的先导,开放是时代的强音……”在前日开幕的市七届人大三次会议上,市委副…

    科研百科 2023年1月21日
    1.3k
  • 科技支撑发展现代畜牧业

      本报讯(记者何雪)近日,记者来到贺州温氏养猪公司羊头种猪场,只见采用物流网智能技术的猪舍里,温度、湿度和氨气浓度实行自动检测和自动调节,存栏的1万头母猪舒适地在猪圈里悠闲踱步、…

    科研百科 2022年6月8日
    264
  • 市级科研项目管理办法 为加强市级科研项目管理,提高科研项目的质量和效率,根据《中华人民共和国科学技术法》等相关法律法规,我市制定了《市级科研项目管理办法》和《市级科研项目经费管理办…

    科研百科 2024年3月30日
    41
  • □大河报·豫视频记者 高志强 牛静芳 通讯员 刘省文 李拥军 王庆绍 宋良臣 张肖明 刘珂 廉政伟 近年来,滑县城市管理局始终坚持党建引领全局,主动适应城市管理工作新形势、改革发展…

    科研百科 2023年10月13日
    199
  •   2月11日,重庆日报记者从重庆市扶贫办获悉,今年第一批市级以上财政专项扶贫资金约29.1亿元已下达到各区县,为全市打赢打好脱贫攻坚战提供资金保障。s09   据悉,29.1亿元…

    科研百科 2022年5月13日
    259
网站地图