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

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 将分布式技术引入科学计算、数值计算领域~

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

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

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

符合使用习惯的接口:Mars 通过 tensor 模块提供兼容 Numpy 的接口,用户可以只需将已有的基于 Numpy 编写的代码进行 import 替换,就可将代码逻辑移植到 Mars,并直接获得比原来大数万倍规模,同时处理能力提高数十倍的能力。目前,Mars 实现了大约 70% 的常见 Numpy 接口。

可充分利用 GPU 加速:Mars 还扩展了 Numpy,充分利用了 GPU 在科学计算领域的已有成果——创建张量时,通过指定 gpu=True 就可以让后续计算在 GPU 上执行。

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

在系统设计方面,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  雷锋网(公众号:雷锋网)雷锋网

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
目录
相关文章
|
4天前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
24 2
|
27天前
|
存储 Java 关系型数据库
在Spring Boot中整合Seata框架实现分布式事务
可以在 Spring Boot 中成功整合 Seata 框架,实现分布式事务的管理和处理。在实际应用中,还需要根据具体的业务需求和技术架构进行进一步的优化和调整。同时,要注意处理各种可能出现的问题,以保障分布式事务的顺利执行。
47 6
|
27天前
|
数据库
如何在Seata框架中配置分布式事务的隔离级别?
总的来说,配置分布式事务的隔离级别是实现分布式事务管理的重要环节之一,需要认真对待和仔细调整,以满足业务的需求和性能要求。你还可以进一步深入研究和实践 Seata 框架的配置和使用,以更好地应对各种分布式事务场景的挑战。
28 6
|
25天前
|
消息中间件 运维 数据库
Seata框架和其他分布式事务框架有什么区别
Seata框架和其他分布式事务框架有什么区别
24 1
|
2月前
|
NoSQL Java Redis
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
Redis分布式锁在高并发场景下是重要的技术手段,但其实现过程中常遇到五大深坑:**原子性问题**、**连接耗尽问题**、**锁过期问题**、**锁失效问题**以及**锁分段问题**。这些问题不仅影响系统的稳定性和性能,还可能导致数据不一致。尼恩在实际项目中总结了这些坑,并提供了详细的解决方案,包括使用Lua脚本保证原子性、设置合理的锁过期时间和使用看门狗机制、以及通过锁分段提升性能。这些经验和技巧对面试和实际开发都有很大帮助,值得深入学习和实践。
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
|
4月前
|
NoSQL Redis
基于Redis的高可用分布式锁——RedLock
这篇文章介绍了基于Redis的高可用分布式锁RedLock的概念、工作流程、获取和释放锁的方法,以及RedLock相比单机锁在高可用性上的优势,同时指出了其在某些特殊场景下的不足,并提到了ZooKeeper作为另一种实现分布式锁的方案。
131 2
基于Redis的高可用分布式锁——RedLock
|
19天前
|
存储 NoSQL Java
使用lock4j-redis-template-spring-boot-starter实现redis分布式锁
通过使用 `lock4j-redis-template-spring-boot-starter`,我们可以轻松实现 Redis 分布式锁,从而解决分布式系统中多个实例并发访问共享资源的问题。合理配置和使用分布式锁,可以有效提高系统的稳定性和数据的一致性。希望本文对你在实际项目中使用 Redis 分布式锁有所帮助。
53 5
|
23天前
|
NoSQL Java 数据处理
基于Redis海量数据场景分布式ID架构实践
【11月更文挑战第30天】在现代分布式系统中,生成全局唯一的ID是一个常见且重要的需求。在微服务架构中,各个服务可能需要生成唯一标识符,如用户ID、订单ID等。传统的自增ID已经无法满足在集群环境下保持唯一性的要求,而分布式ID解决方案能够确保即使在多个实例间也能生成全局唯一的标识符。本文将深入探讨如何利用Redis实现分布式ID生成,并通过Java语言展示多个示例,同时分析每个实践方案的优缺点。
43 8
|
1月前
|
NoSQL Redis
Redis分布式锁如何实现 ?
Redis分布式锁通过SETNX指令实现,确保仅在键不存在时设置值。此机制用于控制多个线程对共享资源的访问,避免并发冲突。然而,实际应用中需解决死锁、锁超时、归一化、可重入及阻塞等问题,以确保系统的稳定性和可靠性。解决方案包括设置锁超时、引入Watch Dog机制、使用ThreadLocal绑定加解锁操作、实现计数器支持可重入锁以及采用自旋锁思想处理阻塞请求。
57 16
|
1月前
|
缓存 NoSQL PHP
Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出
本文深入探讨了Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出。文章还介绍了Redis在页面缓存、数据缓存和会话缓存等应用场景中的使用,并强调了缓存数据一致性、过期时间设置、容量控制和安全问题的重要性。
40 5