中微子是宇宙中数量最多的基本粒子之一,是构造宇宙中一切的基本元素。中微子又是最轻的物质粒子,迄今还未能测出它的确切质量,但至少比电子还要轻100万倍。如果能探测到中微子,我们就找到回答人类最难解之谜——宇宙如何诞生的钥匙。[1]
为了探索中微子的奥秘,科学家们建立了神冈中微子探测实验项目 KamLAND,其中涉及到大量复杂的科学计算,比如有若干变量的线性或非线性方程组、复杂的微积分公式等等。想要找到答案,需要具备强大算力的计算机,以及支持科学计算的编程语言和程序库,Numpy 就是其中的核心库之一,而且用在 KamLAND 项目中。[2]Numpy 主要的功能是支持海量多维数组——即张量与矩阵的运算。然而,随着机器学习、深度学习的研究不断深入,应用持续落地,大家发现 Numpy 难以实现高效的并行计算。
为了解决 Numpy 的问题,阿里巴巴大数据计算平台 MaxCompute 团队研发了 Mars ——基于张量的统一分布式计算框架,同时使用英特尔® 傲腾™ 持久内存,加速了数据 I/O 过程,极大提升了分布式科学计算的运算效率。
突破传统大数据计算引擎模式,并行化 Mars 更高效
Mars 的出现,是为了解决科学运算库 Numpy 的下列主要问题:
1 |
Numpy 中大部分函数无法并行化,因此不能利用 CPU 的多核能力提高计算效率; |
2 |
实现 Numpy 并行化,需要手工编写多线程、分布式的代码,不但难度大,而且效率低,尤其是遇到大规模数据集时,根本无法下手; |
3 |
目前的主流分布式计算引擎的上层接口无法匹配科学计算任务,难以使用常见的 SQL 和 MapReduce 编写,同时引擎本身没有针对科学计算的优化,计算效率低下。 |
作为基于张量的统一分布式计算框架,Mars 突破了现有大数据计算引擎以关系代数为主的计算模型,将分布式技术引入科学计算/数值计算领域,极大扩展了科学计算的计算规模和效率,目前已应用于阿里巴巴及其云上客户的业务和生产场景。
Mars 的核心能力包括:
1 |
符合使用习惯的接口,易于上手;以往的 Numpy 代码无需修改,就能直接移植到 Mars,获得比原来大数万倍规模,同时处理能力提高数十倍的能力; |
2 |
支持 GPU 加速; |
3 |
支持二维稀疏矩阵; |
4 |
易于扩展:支持单机和集群之间的轻松迁移; |
5 |
内存计算支持溢出控制,保证计算安全。 |
傲腾持久内存助力,Mars 超越磁盘 I/O 瓶颈
不过在实际运行过程中,Mars 却受到传统磁盘,I/O 速度的限制。因为 Mars 主要在内存中完成计算,数据也在内存中,如果内存不够,暂时不用的数据就会放在磁盘中。而科学任务的大量中间过程会导致大量磁盘 I/O,从而拉低整个系统性能。如果添加更多内存,又会使得硬件成本激增。那么,如何才能既控制总体拥有成本 TCO,又可以提高 Mars 性能?
阿里与英特尔深度合作,将英特尔® 傲腾™ 持久内存安装在 Mars 服务器上,英特尔® 傲腾™ 持久内存容量大,延迟低,可为 Mars 计算提供大容量共享内存,从而提升了科学计算的性能。
英特尔® 傲腾™ 持久内存颠覆了传统内存技术,它基于 3DXpoint 介质,速度快,延迟低,容量大,可以持久化数据,既能充当 DRAM 内存,又可作为传统存储。与第二代英特尔® 至强® 可扩展处理器一起使用,英特尔® 傲腾™ 持久内存不但可以提供类似于 DRAM 内存的性能,而且能像 SSD 一样持久存储数据,同时容量比 DRAM 内存更大,价格也更便宜。
Mars 使用英特尔® 傲腾™ 持久内存完成科学计算,不再出现数据输入的巨大开销,降低了数据延迟,让 Mars 运算效率大大提升。
经过测试发现,针对两个矩阵相乘的科学计算,当数据集规模不断变大时,使用 DRAM 的服务器会将数据存入 SSD,而使用英特尔® 傲腾™ 持久内存的方案就没有这个问题,同时性能相对 DRAM 方案提升 11% 。
科学计算的未来,是星辰大海
无论是探测中微子这样的高能物理,还是气候研究、基因测序、金融工程、天文学模拟,所有这些都离不开科学计算。有了英特尔® 傲腾™ 持久内存加持的 Mars,将会在科学计算领域中大展身手,以更多、更新、更重要的科学发现,造福人类,让我们有更强大的能力去探索宇宙的奥秘。
[1] 中微子,关乎宇宙起源之谜
http://www.cas.cn/kx/kpwz/202004/t20200421_4741952.shtml
[2] Suppression of Cosmic Muon Spallation Backgrounds inLiquid Scintillator Detectors Using ConvolutionalNeural Networks
https://arxiv.org/pdf/1812.02906.pdf