阿里重磅开源首款自研科学计算引擎mars,揭秘超大规模科学计算

author author     2022-11-28     449

关键词:

日前,阿里巴巴正式对外发布了分布式科学计算引擎 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。

达摩院自研向量检索引擎proxima在行业搜索中的应用

...索,以及多模态检索,它们到底解决了什么问题?今天由阿里达摩院的科学家从业务问题出发,抽丝剥茧,深度揭秘达摩院内部技术,向量检索引擎Proxima,以及在阿里云开放搜索产品行业模板能力的实践应用~技术分享:王绍翾(... 查看详情

喜讯|开源网安三款自研产品均通过cwe国际兼容性认证

近期,开源网安的3款自研产品开源网安灰盒安全测试平台、开源组件安全及合规管理平台、开源网安代码审核平台均通过CWE国际兼容性认证。这表明开源网安的自研产品已登上国际舞台。CWE国际兼容性认证CWE是由美国国土安... 查看详情

阿里重磅开源blink:为什么我们等了这么久?

...和API诸如SparkStreaming、KafkaStreaming、Beam和Flink持续火爆。阿里巴巴自2015年开始改进Flink,并创建了内部分支Blink,目前服务于阿里集团内部搜索、推荐、广告和蚂蚁等大量核心实时业务。12月20日,由阿里巴巴承办的FlinkForwardChina峰... 查看详情

揭秘ges超大规模图计算引擎hyg:图切分(代码片段)

摘要:GES大规模图计算引擎HyG通过实现不同的点边分区算法,可以灵活地供用户选择多种多样的切分策略,进而达到更好的运算性能。本文分享自华为云社区《GES超大规模图计算引擎HyG揭秘之图切分》,作者:... 查看详情

重磅!阿里巴巴开源首个边缘计算云原生项目openyurt

作者|郭飞(阿里云资深技术专家)、徙远(阿里云高级技术专家)、新胜(阿里云技术专家)导读:北京时间5月29日,在阿里云容器服务ACK@Edge(边缘集群托管服务)上线一周年之际,阿里巴巴正式宣布将其核心能力开源,并向... 查看详情

重磅!阿里巴巴开源首个边缘计算云原生项目openyurt

作者|郭飞(阿里云资深技术专家)、徙远(阿里云高级技术专家)、新胜(阿里云技术专家)导读:北京时间5月29日,在阿里云容器服务ACK@Edge(边缘集群托管服务)上线一周年之际,阿里巴巴正式宣布将其核心能力开源,并向... 查看详情

重磅!阿里巴巴开源首个边缘计算云原生项目openyurt

作者|郭飞(阿里云资深技术专家)、徙远(阿里云高级技术专家)、新胜(阿里云技术专家)导读:北京时间5月29日,在阿里云容器服务ACK@Edge(边缘集群托管服务)上线一周年之际,阿里巴巴正式宣布将其核心能力开源,并向... 查看详情

重磅!阿里巴巴开源首个边缘计算云原生项目openyurt

作者|郭飞(阿里云资深技术专家)、徙远(阿里云高级技术专家)、新胜(阿里云技术专家)导读:北京时间5月29日,在阿里云容器服务ACK@Edge(边缘集群托管服务)上线一周年之际,阿里巴巴正式宣布将其核心能力开源,并向... 查看详情

优酷全自研跨平台动态模板引擎重磅开源啦!

动态模板引擎大大提升了优酷的线上用户体验,同时也大大减少了研发门槛。为了和大家交流以及让更多的人享受这一技术,优酷已经将其开源。通过和社区合作,动态模板引擎将会发展的越来越好,实现多赢。... 查看详情

重磅预告揭秘阿里双11技术进步历程!

...现在通过技术的力量不断改写双11的用户体验和参与感,阿里的技术伴随着双11成长起来,强壮起来,自信起来。对各位而言,希望大家可以从书中学习更多,掌握更多。                       从2009... 查看详情

postgresql数据目录深度揭秘(代码片段)

...杂查询SQL的OLTP业务场景,提供PostGIS地理信息引擎、阿里云自研多维多模时空信息引擎等。本文着重介绍Postgr 查看详情

10年磨一剑,阿里开源自研搜索引擎havenask!

...的互联网领域逐渐拓展到了分布式系统之上。近日,阿里重磅开源了自研的搜索引擎Havenask(https://github.com/alibaba/havenask),它也在今年双 查看详情

国内首款开源mysqlhtap数据库即将发布,三大看点提前告知石原子科技重磅推出

前方高能,坐标杭州,2022年6月29日,国内数据库市场或将迎来发展拐点。新锐数据库厂商石原子将发布全面兼容MySQL的实时HTAP数据库——StoneDB。基于全自主研发,结和全面开源,StoneDB将加速国产数据库在替... 查看详情

你知道阿里巴巴是怎么处理大数据的?重磅揭秘!

2018年刚刚到来,科技圈中考过便发生了诸多重大时间,震惊消息从未“消停”,尤其是在2017年底各大平台向用户推出的账单而引发的个人隐私事件,层出不穷。很多人对公众平台的“数据”保存和管理问题相当关注,每个人的... 查看详情

社区首款oam可视化平台发布!关注点分离用户友好上手难度低

...Kubernetes生态资深从业者导读:什么是OAM?2019年10月17日,阿里巴巴合伙人、阿里云智能基础产品事业部总经理蒋江伟(花名:小邪)在QCon上海2019重磅宣布,阿里云与微软联合推出开放应用模型OpenApplicationModel(OAM)开源项目。OA... 查看详情

社区首款oam可视化平台发布!关注点分离用户友好上手难度低

...Kubernetes生态资深从业者导读:什么是OAM?2019年10月17日,阿里巴巴合伙人、阿里云智能基础产品事业部总经理蒋江伟(花名:小邪)在QCon上海2019重磅宣布,阿里云与微软联合推出开放应用模型OpenApplicationModel(OAM)开源项目。OA... 查看详情

阿里自研cpu大规模的应用!阿里自研的cpu有啥特点?

阿里巴巴自研的CPU有什么特点?在最新公布的一次年度峰会上,阿里巴巴集团董事局主席兼首席执行官张勇表示,自研计算机是阿里巴巴从PC时代开始就坚持的一项核心技术。在过去三年时间里,阿里巴巴旗下阿里云的基础架构... 查看详情

谷歌首款tensor手机芯片,全是ai炫技,性能一笔带过

...的Pixel6和Pixel6Pro将会搭载谷歌自研的手机芯片Tensor。作为首款自研的手机SoC,谷歌称,在一些AI体验部分会更具个性化,还能做到降低功耗。Tensor都包含什么谷歌的Tensor规划 查看详情