建站怎么建,手机app网站模板,胶州网站制作,兼职网网站建设方案简介#xff1a; 本文从数据科学概念、背景和现状切入#xff0c;引出加速数据科学的新方式Mars#xff0c;并介绍了Mars具体能解决的一些问题和背后的逻辑、哲学#xff0c;同时对Mars整体数据处理流程进行了介绍。 本文分为4个部分#xff1a;
Mars的背景和现状 Mars解…简介 本文从数据科学概念、背景和现状切入引出加速数据科学的新方式Mars并介绍了Mars具体能解决的一些问题和背后的逻辑、哲学同时对Mars整体数据处理流程进行了介绍。 本文分为4个部分
Mars的背景和现状 Mars解决了什么问题 Mars背后的哲学 总结与展望 一、Mars的背景和现状 说到加速数据科学的新方式就不得不说什么是数据科学以下是维基的定义
数据科学通过运用各种相关的数据来帮助非专业人士来理解问题。第一它的目标是从数据中提取输入价值的部分第二它要生产数据产品第三它结合了非常多重要的技术包括数学、统计、机器学习、可视化最后它需要真正解决问题。
它包含三个方面计算机科学、数学和统计、领域和商业知识。它们结合起来分别是机器学习、软件开发和传统研究中间是数据科学。
数据科学技术栈包含语言、数据分析、数据工程、机器学习、Web开发、运维和商业智能。每个技术栈都包含不同的工具提供不同的数据服务。
传统Python数据科学栈的三大底座是NumPy、Pandas和SciPy。NumPy是最核心的部分它用来做数值计算几乎其他所有Python的数据科学技术栈都建立在NumPy上因为它有最基础的数据结构也就是多维数组另外Pandas也用NumPy实现它上面有很多API来进行分析操作而SciPy主要负责科学计算。在此基础上是机器学习和可视化同时还有丰富的Python函数。
上面是Python数据科学技术栈整体的状况他们有几大好处比如广泛使用是事实标准上手成本低容易为初学者和学生入门和语言结合紧密能用Python来组织函数调用。但是它们都是单机的库不能处理很大的数据量所以需要用到大数据的数据工程技术栈比如Hadoop、Hive、Spark等。它们虽然支持多语言没有强绑定但是学习门槛比较陡峭也需要对系统本身有足够的了解。做数据科学需要把精力放在数据本身而不是工具但是这几个库让工作围绕着库展开而非数据。因此我们是否能把这两个工作连接起来利用传统的技术价值而不是关注大数据系统本身来解决很多问题。
现在大家说摩尔定律已经失效我们可以回顾一下它的历史。早期它通过复杂指令集和精简指令集的方式让速度提升但是随着缩放比例定律和阿姆达尔定律的终结未来是不是要20年才能达到2倍效率的提升呢
另外随着深度学习、机器学习和AI的火热机器学习模型也会越来越大它的训练已经呈指数级增长但是摩尔定律并没有追上机器学习模型训练发展的速度。
另外一个现状就是技术栈的问题NumPy、Pandas等它们更多只能在单核上来应用计算但是阿姆达尔定律下的核数是会越来越多所以并没有很好地进行利用。同时不管是计算量还是数据规模的增长速度都超过了摩尔定律的速度所以也不能用单机解决问题。
基于以上加速数据科学主要有两种方式。第一是Scale up利用多核和更好的硬件比如GPU、FPGA和TPU等以及现有的库包括Modin、CuPy、Rapids等来提升效率。第二是 Scale out利用分布式的方式来加速因为单核的性能总归是有限的可以利用Ray、Dask和Modin等。而结合Scale up和Scale out就可以构建一个大规模的更好的硬件集成比如今天介绍的加速数据科学的新方式Mars。
二、Mars解决了什么问题 Mars就是我们试图构建的“桥”能来兼顾小规模和大规模数据处理。大规模数据处理能构建集群有三种主要方式第一是在物理机上第二是kubernetes第三是Hadoop Yarn的调度器上拉起Mars的集群。
Mars的核心基础部分对应着传统Python数据技术栈比如Mars Tensor对应NumPyDataFrame对应Pandas等。而构建在这个基础之上的是Mars Learn模块它可以兼容Scikit-learn API能简单地进行更大数据规模的分布式处理。此外Mars还支持深度学习和机器学习的框架比如能轻松运行TensorFlow、PyTorch等而且可视化也可以在Mars上宣布。除此之外Mars还支持了丰富的数据源。
从传统Python技术栈到Mars也非常简单比如在NumPy和Pandas里要变成Mars只需要替换import然后后面变为延迟执行即可。
普通的Python函数在调用的时候变成mr.spawn来延迟这个过程最后通过execute来并发执行不用担心Mars是运行在单机上还是分布式运行。
而Mars上的TensorFlow大部分也一样区别在于main函数部分的变化。
三、Mars背后的设计哲学
第一是分而治之不重复造轮子。比如创建一个Mars的Tensor对里面所有元素进行求和操作在触发execute之后Mars会生成小任务的计算图它可以将小任务调度到分布式的集群中来运行。此外还做了很多优化通过算子融合来提升性能。
第二在Mars的世界一切皆可并行。在Mars里实现了并行正则排序算法比如创建一个cluster有5个Worker每个Worker是8核32G那么相比单机的NumPy函数它提升了4倍。
下面看下Mars整体数据的处理流程。我们通过客户端的代码触发执行生成一个粗粒度的计算图然后通过Web服务器提交任务并将任务转发给Scheduler然后在这里切分成小任务。随后Scheduler根据Worker工作负载的情况来把它分发到各个机器上运行这里会用到调度的策略等等。这个过程中Mars会自动触发数据传输工作保证在节点执行的时候它所有输入的数据都在这台机器上。此外Mars还会自动进行Spill操作当我们内存不够的时候它会把不常用的数据Spill到磁盘上让Mars可以处理远超过这个内存能放下的数据规模。
四、总结与展望
首先Mars是完全开源的项目完全遵循开源的规范而且项目的progress都能在GitHub上看到其次Mars有兼容性它的API高度兼容NumPy、Pandas和Scikit-learn同时它的单机、多核与分布式的处理性能也更高最后是交互性Mars Remote可以把以前的代码变成分布式代码并且内部也可以与第三方库做集成。
Github地址https://github.com/mars-project/mars
下面是关于Mars未来的展望大家可以访问专栏。未来我们的开发计划重心放在提升Mars learn的接口覆盖率和Mars DataFrame接口覆盖率上统一单机和分布式执行层等等。
原文链接 本文为阿里云原创内容未经允许不得转载。