云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

专属服务器_域名解析错误连不上网_超低折扣

小七 141 0

apachespark作为大规模神经科学平台

大脑是人体最复杂的器官,可能也是宇宙中最复杂的结构之一。数百万个神经元以某种方式协同工作,赋予生物体与周围世界互动的非凡能力。我们的大脑不费吹灰之力就能控制的事情——踢一个球,或者阅读和理解这句话——已经证明在机器上很难实现。长期以来,我们的努力受到实验技术的限制。尽管大脑有许多神经元,但大多数技术只能同时监测一个或几个神经元的活动。这些方法教会了我们很多东西,比如说,有些神经元只有在你看到某个特定物体时才会做出反应,这证明了实验的创造性。然而,在下一个时代,我们将受到的限制不是我们的录音,而是我们理解数据的能力。新技术使人们能够同时监测成千上万个神经元的活动——从老鼠大脑的一个小区域,或者从斑马鱼幼体的整个大脑中。记录技术的这些进步伴随着数据量的急剧增加。几年前,一个大的神经数据集可能只有几GB,是几个月或几年积累起来的。今天,监测整个斑马鱼的大脑可以在一个小时内产生几个TBs(有关最新实验技术的描述,请参阅本文)。在斑马鱼幼鱼身上测量的同时呈现移动视觉刺激(左上)和监测预期游泳行为(圆圈大小)的全脑活动分析神经数据有许多挑战。测量是间接的,有用的信号必须被提取和转换,以适合每种实验技术的方式——我们的ETL版本。在更高的层次上,我们的分析必须从海量的数据中找到生物感兴趣的模式。分析的好坏取决于它所激发的实验;我们探索数据的速度越快,我们就越快产生假设并推动研究向前发展。过去,神经科学分析主要依赖于单工作站解决方案。未来,它将越来越依赖于某种形式的分布式计算,我们认为Spark是理想的平台。这篇文章解释了原因。为什么选择Apache Spark?将分布式计算带到当前不使用它的社区的第一个挑战是部署。apachespark可以在Amazon的EC2上开箱即用,这将立即向广大社区开放。尽管云有很多优势,但一些大学和研究机构已经拥有了高性能的计算集群。我们对将Spark集成到运行Univa网格引擎的集群中是多么简单感到高兴和惊讶。我们使用Spark独立脚本,以及现有的UGE调度程序,使我们的用户能够使用预先指定的节点数启动自己的私有Spark集群。我们不需要设置Hadoop,因为Spark可以从我们的网络文件系统本机加载数据。我们的基础设施对许多学术和研究机构来说是共同的,我们希望在其他地方能够很容易地复制我们的方法。神经数据分析如此具有挑战性和吸引力的原因之一是我们所做的很少是标准化的。不同于,比如说,试图最大化用户推荐的准确性,或者分类器的性能,我们试图最大化我们的理解。诚然,我们经常使用工作流、分析和算法系列,但它只是一个工具箱,而且是一个不断发展的工具箱。为了理解数据,我们必须尝试许多分析,查看结果,在多个层次上进行修改——无论是调整预处理参数,还是开发一个全新的算法——并再次检查结果。使用Spark进行的分析示例,包括活动模式的基本处理(左)、描述功能相似区域的矩阵因子分解(如不同颜色所示)(中间),以及将整个大脑活动的动态嵌入低维轨迹(右)在RAM中缓存一个大数据集并通过多次分析反复查询它的能力对于这个探索过程至关重要,这也是Spark与传统MapReduce系统相比的一个关键优势。任何一个数据科学家都知道有一个"工作记忆用于分析":如果你需要等待超过几分钟的结果,你就会忘记你在做什么。如果你要等一夜,你就迷路了。有了Spark,尤其是数据被缓存后,我们可以在几秒钟或几分钟内得到新查询的答案,而不是几小时或几天。对于探索性的分析,这是一个游戏规则的改变者。为什么是PySpark?Spark在Scala、Java和Python中提供了优雅而强大的api。我们正在开发一个名为Thunder的神经数据分析库,主要使用pythonapi(PySpark),它为我们提供了一些独特的优势。(最近在《自然方法》杂志上发表了一篇文章,描述了这个库及其应用程序,并与Misha Ahrens实验室合作,由Spark开发人员Josh Rosen担任合著者1) 易用性。尽管Scala有很多优点(我个人更喜欢它),但对于大多数用户来说,Python是一种更易于学习和用于开发分析的语言。由于其科学计算库(见下文),Python在神经科学和其他科学领域的应用正在增加。在某些情况下,拥有现有分析的用户可以直接将其引入Spark。举一个简单的例子,一个常见的工作流程就是独立地将单个模型与成千上万的神经元或神经信号相匹配。我们可以在PySpark中很容易地表达这个令人尴尬的并行问题(参见示例)。如果一个新用户想用他们自己现有的模型拟合例程来做同样的分析,这个程序已经用Python编写并在更小规模的数据上进行了审查,那么它将是即插即用的。更令人兴奋的是,在Spark中工作意味着他们可以使用完全相同的平台来尝试更复杂的分布式操作:例如,从那些独立拟合的模型中获取参数并执行聚类或降维——所有这些都是用Python编写的。2) 强大的图书馆。有了像NumPy、SciPy和scikit-learn这样的库,Python已经成为一个强大的科学计算平台。当使用PySpark时,我们可以很容易地利用这些库进行分析,包括信号处理(例如fourier变换)、线性代数、优化、统计计算等等。Spark本身通过其MLlib库提供了许多机器学习算法的高性能分布式实现。这些实现很好地补充了我们正在开发的分析。由于存在重叠,而且我们的分析具有足够的通用性,我们要么正在使用MLLib中的分析,要么正在为之作出贡献。但是,我们所做的以及我们如何实现它,很大程度上是特定于我们的问题和数据类型(例如图像和时间序列)。对于Thunder,我们希望提供一个外部库如何在Spark之上茁壮成长的例子(参见AmpLab的基因组分析ADAM库)。3) 可视化。特别是对于探索性的数据分析,可视化中间结果的能力是至关重要的,而且通常这些可视化必须根据数据进行调整和调整。同样,Spark和Python的结合提供了许多优点。Python有一个核心的绘图库matplotlib,新的库正在改进它的美观性和功能(例如mpld3、seaborn)。在iPython笔记本中,我们可以使用Spark执行分析并直观地检查结果(参见示例)。我们正在开发工作流,其中定制的可视化将紧密地集成到我们的每个分析中,随着我们的分析变得越来越复杂,我们认为这一点至关重要。未来:火花流Spark已经大大加快了我们的事后数据处理和分析。但是如果我们想在实验中得到答案呢?我们开始使用火花流来实时分析和可视化神经数据。因为Spark流是内置于Spark生态系统中的,而不是一个独立的平台,所以我们可以利用一个通用的代码库,以及相同的部署和安装。流式分析可以让我们动态地调整实验。随着技术的不断进步,我们可能很快就会收集到如此之大、如此之快的数据,以至于即使我们想存储完整的数据集,我们也无法存储。通过对越来越多的在线分析和存储的减少,Spark Streaming可能会给我们一个解决方案。结论我们正处在大规模神经科学激动人心的时刻的开始。我们认为Spark将是我们分析的核心,但未来仍有重大挑战。考虑到我们问题的规模和复杂性,不同的研究小组必须合作,统一分析工作,审查替代方法,并共享数据和代码。我们认为,任何此类努力都必须彻底开源,我们完全致力于构建开源解决方案。我们还需要与更广泛的数据科学和机器学习社区合作,开发新的分析方法,这反过来可能会使社区受益远远超过神经科学。理解大脑需要我们所有的生物学和分析创造力,我们可能会在这个过程中帮助数据科学革命。免费试用Databricks。今天就开始吧