NeuroManager:基于工作流分析的计算神经科学仿真管理引擎

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_31790817/article/details/80269110

NeuroManager:基于工作流分析的计算神经科学仿真管理引擎

我们开发了面向计算神经科学的面向对象仿真管理软件引擎NeuroManager。当使用异构计算资源,模拟器和模拟任务时,NeuroManager自动执行模拟作业提交的工作流程。面向对象的方法(1)提供了适应各种神经科学模拟器的灵活性,(2)简化了从台式计算机到超级计算机集群的异构计算资源的使用,以及(3)改善了仿真器/仿真演进的跟踪。我们在MATLAB中使用了NeuroManager,它是一种广泛使用的工程和科学语言,其信号和图像处理工具,电生理分析中的流行性以及在大学生物教育中越来越多的使用。为了设计和开发NeuroManager,我们分析了各种模拟器,操作系统和计算资源的仿真提交工作流程,包括处理输入参数,数据,模型,结果和分析。这导致了22个阶段的模拟提交工作流程。该软件包含进度通知,自动组织,标签,数据和结果的时间标记以及对MATLAB分析和可视化工具的集成访问。 NeuroManager为用户提供了自动执行日常任务的工具,并协助主要调查人员跟踪和重新创建由多人执行的研究项目的演变。总的来说,NeuroManager提供了改善工作流程所需的基础架构,管理多个同时模拟,并保持研究项目过程中可能产生的大量数据的来源。

Introduction

获得高性能计算(HPC)资源可以探索复杂神经生物模型的参数空间。 随着参数数量的增加,有必要跟踪模拟器配置,参考模型和实现的来源,模拟产生的数据,执行的分析及其结果; 软件本身的记录,测试和跟踪也很重要(Gewaltig和Cannon,2014)。 当使用异构计算基础设施并行执行多个模拟时,这样的活动变得更加麻烦(Casanova等人,2004)。 通过分析这些流程的工作流程,可以将这些流程自动化并提高吞吐量,同时最大限度地减少延迟,错误和数据丢失。 因此,开发工作流自动化工具以设置模拟,标记数据文件和跟踪分析以提高计算神经科学研究的生产力和可重复性非常重要。

我们开发了一个叫做NeuroManager的软件工具来组织使用不同模拟器和计算基础设施的建模工作。 NeuroManager基于对几个神经科学模拟器的模拟提交工作流程的分析。 NeuroManager是面向对象的MATLAB(Natick,MA)编写的,广泛使用的数值分析和可视化软件套件广泛使用
(Drongelen,2007; Cui等,2008; Gabbiani和Cox,2010; Van Drongelen,2010; Cohen,2014; Wallisch,2014),并且越来越成为生物学教育的一部分(Gross,2004; Stefan et al。 。,2015)。 NeuroManager虚拟化硬件,用户和模拟器。 NeuroManager中的对象可用于生成由异构计算资源组成的机器集合,从桌面到HPC中心。模拟器也成为与特定模拟文件相结合的对象,从而可以跟踪项目过程中仿真模拟器的演变。最后,用户与不同系统进行交互所需的步骤,例如在本地服务器或集群中提交仿真运行所需的不同步骤也都被虚拟化了。面向对象的方法允许生成对象树,这可以帮助保持模拟器,数据及其分析的出处。该软件提供进度通知,自动组织,数据和结果标签,以及对MATLAB分析和可视化工具的集成访问。该程序生成编译好的MATLAB代码,以跨平台分发,最大限度地减少所需的许可证数量。由于我们的重点是神经科学,我们开发了我们的代码来支持各种标准的神经科学模拟器。 NeuroManager提供了一个统一的平台,降低了开发和分析计算项目的复杂性。

我们软件的预期用户是实验室,他们需要保持计算模拟会话及其演变的组织,有效地使用异构计算资源,并保留多用户模拟及其分析的起源。 不过,我们的软件也可以
用于教学。 虽然本白皮书介绍了工作流程和软件的动机,理论和设计,但补充材料提供了每个工作流程步骤的详细说明。 另外,我们在下面提到的GitHub站点上提供代码和广泛的用户指南。

计算神经科学中模拟提交的工作流程

工作流程是运行模拟所需的一组任务的抽象(Garijo et al。,2014)。通常,模拟分析任务要求将流程分解为工作流程阶段(Deelman等,2009)。我们通过使用计算神经科学任务和工具分析模拟作业的提交,开发了抽象工作流程阶段的列表。一般而言,我们假设用户操作主机以在安装了软件模拟器的远程计算机或群集上运行模拟。对于我们的分析,我们使用了两种主机的组合:Windows和UNIX;三个模拟器:仅MATLAB编码,NEURON(Hines和Carnevale,2001)和MCell(Stiles和Bartol,2000);以及三种远程机器类型:Linux多核服务器,Sun Grid Engine(SGE)群集,也称为Univa Grid Engine(Univa,2015)和简单Linux资源管理实用程序(SLURM)群集(SLURM,2015)。我们确定了九个抽象阶段:
1.主机和远程资源的一般设置
2.在遥控器上构建模拟器
3.将模型文件上传到遥控器
4.取模拟输入参数向量
5.将输入数据文件上传到遥控器
6.在遥控器上处理模型文件
7.在遥控器上运行模拟和后处理结果
8.将输出文件下载到标有目录的主机
9.后仿真处理,并从4开始重复所有参数向量
阶段1包括开始日志,初步通知和机器通信测试。阶段2上传形成基于远程的模拟器的文件(包括可能调用标准模拟器(例如MCell)的MATLAB m文件或Python文件,或者可以自己形成模拟器),根据需要配置编译代码。阶段3将仿真模型文件(如果有)上传到远程机器。在阶段4中,用户绘制参数向量以用于来自要使用的向量集合的仿真。向量中的参数决定是否需要修改某些模型文件以及特定模拟可能需要哪些数据文件(阶段5和阶段6)。一旦所有建模文件都被处理完毕,模拟运行(第7阶段)。这可能涉及在主机中生成脚本或作业文件,将其移至远程计算机,然后调用作业提交排队系统(例如HPC群集中的那些作业提交排队系统)。在每次模拟之后,下载得到的输出数据(阶段8)。这在单一仿真过程中是微不足道的,但是因为使用多个异构计算资源提高了同时提交多个作业的可能性,所以软件需要确保输出数据与其输入向量相关联。最后,有必要更新报告,清理并准备好远程机器中的工作目录,以便进行下一次仿真(阶段9)。

我们将这九个工作流程阶段扩展到22阶段模拟提交工作流程,图1.我们使用面向对象的编程来处理机器,操作系统和模拟器需求之间的阶段差异。 此工作流程的每个阶段都对应于一个NeuroManager类方法。 关于为实施这一工作流程而开发的数据结构的完整描述见补充材料。
图一

图1 | NeuroManager工作流程。 九个抽象阶段(左侧)扩展到22个NeuroManager进程(右侧)。 右侧的指示显示过程的位置或性质。 一般准备(Gen Prep)主要由主机完成; 模拟器准备一般在远程机器上进行; 和Simulator Parallelism同时在所有远程机器上进行。 有关阶段的详细说明,请参阅补充材料。 括号中的数字表示22个过程。

NeuroManager Design

整体对象交互和流程

NeuroManager从主机运行以执行对远程资源的模拟。在最简单的情况下,主机和远程计算机是同一台计算机。由于NeuroManager本身就是一个对象,它可以嵌入到其中
更大的MATLAB程序作为模拟提交引擎,或从脚本运行。 NeuroManager通过将真实机器封装在类中,然后将多个SimMachine结合在一起形成一个机器集(图2A),从而构建出名为SimMachines的对象。同样,NeuroManager通过在类定义的组合中包装实际的模拟器(例如MCell)来构建称为模拟器的对象。最具体的模拟器类称为SimTypes。每个SimMachine拥有多个模拟器,形成一个模拟器池(图2B)。每个在模拟器上运行的仿真都与其他输入参数矢量不同。输入参数向量是一组对应于模拟使用的参数的字符串。由所有输入参数向量定义的一组仿真称为SimSet。输入参数可以由代码生成或存储在称为SimSet规范的文本文件中。

Simulator对象由SimCore,默认模型以及预处理和后处理活动组成。此对象包含在子项目开发过程中永不改变的静态参数,例如时间步长,温度,单元格形态或使用随机与确定性算法。模拟器对象使用SimCore,它是要使用的模拟引擎。这可能是NEURON,MCell或自定义可执行文件。

一旦建立了SimSet,NeuroManager就从SimSet中提取每个Simulation,并使用先来先服务的算法从Simulator Pool将其交给可用的Simulator。 负载平衡是在用户选择SimMachine模拟器数量的设置下手动执行的。 模拟完成后,模拟器将结果下载到主机上的目录结构中,并告诉NeuroManager它可用于其他模拟。 Simulator Pool中的每个Simulator的这个过程都是相同的,因此可以在机器组中同时执行多个Simulations。

图二

图2 | 基本的NeuroManager对象。 (A)SimMachines是包装计算资源的对象。 机器组合是SimMachines的组合。 (B)模拟器池是在机器组中的任何SimMachine上构建的所有模拟器的集合。 对于SimSet中的每个仿真,NeuroManager都会提供一个输入参数向量,以便执行到池中的可用仿真器。 每次模拟完成后,其结果和产品将被移至主机中隔离的时间戳目录。

类层次结构

NeuroManager将Simulator,Simulation,SimSet和SimMachine概念实现为不同的软件对象。 Simulator和SimMachine对象每个都有类层次结构,这些层次结构在用户指南中有完整的说明。 模拟器类层次结构使用模拟器基类来处理NeuroManager模拟器操作的大部分方面,其中子类使Simulator专用于给定的SimCore,还有其他子类使模拟器专用于用户的模型和研究目标。 这种方法的一个优点是,由于研究需要通过各种仿真器/仿真配置来指导研究人员,细微差异被捕获在仿真器对象树中,所以研究人员可以利用继承来简化新配置的开发; 见图3。
图三

图3 | 模拟器是分层次定义的。 左边,一般的类层次结构来实现一个模拟器。 正确的,例子来实现三种不同的模拟器类型。 箭头指向超级类。 模拟器的实现可以分为NeuroManager中提供的Core和用户定义的部分。 核心从一个Simulator基类开始,然后添加一个允许使用文件的ModelFileSim子类; 那么特定的SimCore类会添加工作特性来处理特定的模型,在这种情况下,SimNeuron允许运行NEURON模拟。 然后,用户可以使用SimSpecificModel子类添加特定于特定仿真的其他功能。 最后,设置不同的全局参数来定义子项目会产生单独的SimType。 进一步的变化会产生模拟器类型的分支。

SimMachine类层次结构提供了对机器和作业提交实用程序(包括机器集合)异构性的每个元素的隔离和继承。 SimMachine Class Hierarchy摘录如图4所示;完整的树在用户指南中。有三条祖先线组合起来构建具有完整和特定功能的SimMachine。第一条祖先线提供了在特定资源中运行作业的基础设施,在这种情况下是SGE群集。这一行分为两部分,第一部分介绍使用RealMachine类构建一个通用机器,然后添加在主机和远程之间传输文件的功能以及编译MATLAB代码所需的配置。此行的第二部分添加了基本和特定作业提交程序,最终在可以将作业提交到SGE群集(MachineSGECluster)的对象中。通过MATLABCompileMachine类,MATLAB编译功能是FileTransferMachine的一个子类,因为MATLAB编译需要能够将文件从主机传输到远程。第二条祖先线是SimMachine系列,它提供了处理模拟器和与仿真相互作用的所有方面。第三个是NeuronMachine系列,它提供关于在特定机器上使用的仿真引擎的位置,在这种情况下是NEURON。三条线通过多重继承组合起来生成可以在特定SGE群集上托管基于NEURON的模拟器的机器类。这个类的实例是NeuroManager使用的机器。
图四

图4 | SimMachine类层次结构。 SimMachine是三个对象继承线的组合。在这个例子中,第一祖先线(1)由提供基本通信的类组成;主机和远程之间的文件传输;能够完成模拟器文件的MATLAB编译;基本的工作提交设施;和特定于SGE群集的作业提交。第二行(2)提供了如何构建和托管模拟器的知识。第1行和第2行生成一个机器类,可以在SGE群集上托管和运行模拟器。添加第三行(3)为安装在特定群集上的NEURON软件提供位置信息。它们一起产生一个类MachineMySGECluster01,它对应于一个实际的计算资源。进一步的修改导致在HPC资源的特定队列中执行的对象。核心代码提供虚线以上的类,下面的类是用户提供的。箭头指向超类。用户指南中的完整图表树。

NeuroManager属性

出处

来源是生成数字对象的过程和数据的文档(Simmhan等人,2005; Moreau等人,2011)。对于模拟来源,要求记录获得给定模拟的输出产品的数据,过程和条件以及这些产品,以证明正确性和可重复性以及测试用例和条件的软件验证(Miles等人,2008 ; Gewaltig和Cannon,2014年)。为了记录神经科学模拟的出处,NeuroManager将所有程序输出和模拟结果放入时间/日期戳记的目录中;保存所有活动的详细日志,包括机器数据和作业提交;保留输入参数矢量文件的副本并动态构建或修改模型文件;记录所有相关的软件版本;记录NeuroManager,软件,核心模拟器和用户模拟器类的版本;允许用户将新的模拟器版本添加到模拟器类树中;提供实用程序以根据需要保留其他模拟副产品;并记录大多数脚本和软件输出以及错误输出。

与集群和HPC资源的交互

NeuroManager使用SSH2与集群提交管理器进行交互,例如SGE和SLURM。 通过用户直接控制,通过子类设置或通过输入参数向量控制的作业文件来指定队列标识,核心/节点数量,超时以及其他作业特征。 NeuroManager为用户写入作业文件,并自动选择名称,文件位置和编译位置,并提供用户通知。 借助NeuroManager,用户可以与主机进行交互,并且该软件负责所有上传,编译,作业提交,收集结果以及自动下载到主机。

监控

NeuroManager允许用户通过四种方式监控模拟进度:(1)记录; 如上所述; (2)网页; MATLAB接口提供了一个内置的浏览器,我们用它来呈现所有模拟的当前状态; (3)远程操作; 通过使用UNIX屏幕实用程序; (4)用户通知; NeuroManager为会话演进中的关键点提供SMS和/或电子邮件消息,这些消息可以全局编程,也可以通过仿真模拟进行编程,并且可以包含附件(如图)。

调度和资源分配

NeuroManager的模拟调度算法是先到先得的方法(Kacprzyk等人,2008)。一旦机器集合中的所有模拟器都已构建好,NeuroManager开始在模拟器上放置模拟器。从模拟器池开始开始,第一个可用的模拟器将在批处理中提供下一个模拟。假设所有模拟在通信要求和计算负荷(足迹和机器操作次数)上都是相等的,除非用户明确改变输入参数矢量中的模拟步骤的数量,否则这是合适的。模拟也被认为是独立的并且具有相同的优先级,并且按照它们出现在SimSet中的顺序进行安排,SimSet没有指定的完成时间或性能标准。在我们目前的方法中,假设模拟器是独立的,相同的和静态的 - 也就是说,它们不会相互影响,具有相同的计算能力和资源,并且不受外部工作负载的影响。

要求和性能

安装和要求

描述了详细的安装和配置过程
在用户指南中。 简而言之,NeuroManager需要:

  • 带有编译器工具箱的MATLAB版本2013a +。在最简单的安装中,主机将具有编译器。但是,可以使用NeuroManager可以用来生成可执行文件的远程编译器机器。这允许MATLAB学生版本被用作主机。作为NeuroManager配置的一部分,所有必要的文件都被收集起来,移到编译机器上,然后移动到远程机器上。所有这些都是自动完成的。因此,可以使用单个编译许可证运行NeuroManager。
  • 主机可以是Windows(在7,8和10测试)和UNIX(在Centos 5.6和6.6上测试)。远程必须是UNIX机器。 Windows机器必须有免费的Putty(Tatham et al。,2006)(包括在NeuroManager中)。所有遥控器都必须具有SSH2。
  • 兼容的Java版本。
  • MATLAB ssh2-v2库(Freedman,2015)(包含在NeuroManager中)。
  • 一些XML示例利用安装在主机上的Saxonica的Saxon处理器的免费HE版本(Saxonica,2015)。
  • SimCore(模拟器引擎)必须在每台远程机器上都可用。
  • 所有的远程机器都必须有适当的免费的MATLAB MCR(Mathworks,2015c)。

NeuroManager可以从MATLAB图形界面运行,但也可以在不使用桌面的情况下运行,这对于UNIX主机来说是允许远程操作的。用户指南详细介绍了如何远程操作NeuroManager。所有软件都可以在https://github.com/SantamariaLab/NeuroManager以及作者的要求下获得。

配置

NeuroManager的配置包括定义要用于模拟的机器,要使用的模拟器以及用于单独模拟的参数。 这些任务中的每一个都是在各个MATLAB m文件中使用面向对象的类来完成的。 我们提供示例来帮助用户完成配置过程。 一些例子在远程机器上使用Python。 该代码与开源许可证一起发布。
我们已经测试了NeuroManager,可以同时使用八台机器进行多种配置:两台多核UNIX服务器,本地UTSA群集上的四个队列(CBI,2015)以及德克萨斯高级计算中心的Stampede群集上的三个队列 (TACC,2014)。 我们已经运行了一系列模拟,运行时间从几秒到几天不等。

测试

我们在两个多核服务器上测试了NeuroManager,并在集群中测试了两个队列(CBI,2015)。测试包括使用NEURON模拟器运行神经元模拟。独立运行,在我们的参考服务器上运行该模拟,需要5到30分钟,具体取决于正在研究的特定测试的参数。

我们将时间开销定义为总会话时间减去SimSet时间。 SimSet时间包括获取输入参数矢量和运行实际模拟,并移动所有模拟所需的输入/输出文件。我们将NeuroManager的开销计算为单机和群集上模拟器数量的函数。对于由两个并发模拟器上的12个模拟组成的参考服务器中的会话,运行时间为3950s,SimSet时间为3741s,这导致209s的开销。随着模拟器数量增加到12个,会话时间降至1183 s,SimSet时间为959 s,开销为226 s。我们还计算了12模拟器示例SimSet的开销。所有仿真的平均执行时间为780 s,因此12个仿真器的总SimSet开销为179 s,每次仿真的平均开销为15 s。我们在群集队列中重复了这个相同的过程。对于分布在12个节点上的12个模拟器,运行时间为1408s,SimSet时间为1242s,导致166s的开销。 SimSet的开销是825,导致每个模拟器的平均开销为35s。我们在服务器和集群中为不同数量的模拟器(从2到12)重复此操作。在所有情况下,每台特定机器的开销几乎保持不变。因此,总会话时间的开销部分随着模拟器数量的增加而衰减。当模拟次数增加时,开销也保持不变。

我们通过将4台SimMachines混合服务器配置为集群的固定数量的模拟器来确定NeuroManager的性能。服务器1上的2个模拟器,服务器2上的2个,群集1上的8个和群集2上的8个的会话时间为1536秒。对于每台服务器上具有8个仿真器并且每个群集上有2个仿真器的另一个仿真是1566秒。对于服务器上的所有模拟器,会话时间为1326秒,集群上的所有模拟器为1488秒。因此,我们获得了与模拟器分布无关的类似性能。最后,我们测试了NeuroManager的稳定性,即通过在具有12次模拟器的四台SimMachines上运行10次17分钟的会话,获得相同任务的相同行为。平均会话时间为1028±19秒(STD),平均SimSet时间为713±13秒。

使用NeuroManager

这里我们从一台机器上执行MATLAB代码开始,对NeuroManager的主要编程和概念属性进行了全面描述。 更详细的解释可以在用户指南和附带的示例程序中找到。

基本仿真

在最简单的情况下,主机与远程机器相同。新机器的定义是在一个名为MachineMyMach1.m的文件中完成的(图5A),并存储在名为LocalMachines的子目录中。在那个文件中,我们将一台个人机器定义为一个基于超类的新类。我们为通用UNIX机器,SGE群集和SLURM群集提供超类。参考图5A,我们描述了机器类文件的基本属性。该机器被定义为使用的类定义

classdef MachineMyMach1

Using NeuroManager with Neuron

类似于定义模拟器以运行仅限于MATLAB的代码(图5B),我们可以使用SimNeuron类来构建基于NEURON模拟器的虚拟模拟器(图6)。 NEURON模拟管理可以在新的子类中命名或者使用类方法动态构建或修改的hoc和mod扩展文件。 临时文件用于定义神经元的结构和一般模拟过程,而模块文件用于描述模拟使用的生物物理机制。 我们提供了增量描述如何使用这个类的不同部分的例子。

使用Hoc和Python语言改变NEURON模型中的离子通道分布

在这里,我们使用NeuroManager来研究在浦肯野细胞模型(Hines等,2004),ModelDB Model 17664(Miyasho等,2001; ModelDB,2015)中改变离子通道浓度的效果。 为了与NeuroManager兼容(主要是删除所有GUI元素),我们修改了可用的hoc文件和mod文件,我们使用Python来定义模拟输入电流的位置和特性以及电压数据的收集位置。 NeuroManager使用给定的参数集运行模拟,绘制结果图,标记图并将它们与时间和电压数据一起发回主机。

我们构成SimNeuron类的一个子类,称为SimPc模拟器类,它继承了所有SimNeuron设施。此外,它还涉及确定所用生物物理机制行为的mod文件列表以及包含(1)细胞形态信息(包括体细胞,光滑树突和棘状树突)的Purkinje.hoc文件; (2)轴向电阻等全球电气特性;和(3)每个模型部分中插入的每个生物物理机制的分布和特征。然后,我们创建一个名为SimPcKh的SimPc子类,它可以在仿真模拟的基础上,将异常整流器通道Kh不同地分配给三种截面类型(soma,平滑树突和棘状树突)。为此,在每个模拟的PreRun模型处理主机工作流程阶段,我们组装了一个新的Purkinje.hoc,其中包含模拟特异性Kh插入以及形态学和静态生物机械学。这种方法直接在SimPcKh类中提供了特定于模拟器的处理,因此上传的m文件尽可能简单,并且修改过程成为该类的组成部分。如果我们改变我们的流程,我们可以创建一个名为SimPcKh02的新子类,然后这两个版本的模拟器都可以被检查并且可以在未来使用。通过这种方式,我们对仿真器演化的轨迹有了清晰可用的轨迹。另外,每个模拟器类都可以访问会话日志,因此用户可以在模拟器构建,特殊文件修改或采用模拟器方法时创建日志条目。当所有的遥控器都准备就绪时,每个模拟都将运行模拟特定的Kh浓度值,以获得soma,光滑的枝晶和多刺的枝晶片段。远程上的实际NEURON模拟是作为导入NEURON模块的Python程序完成的。

使用NeuroML指定的NEURON模型中变化的离子通道特征

像NEURON这样的SimCore可以处理NeuroML格式(Gleeson et al。,2010)中指定的模型,而另一些则不能。 在第一种情况下,NeuroManager的方法是使用XML技术编辑NeuroML模型文件以响应模拟的输入参数向量,然后将生成的XML文件原样发送到SimCore。 如果SimCore无法理解NeuroML,则更多地涉及到NeuroManager的方法:使用XML技术编辑NeuroML模型文件,然后将编辑后的XML文件转换为SimCore可以理解的输入。

尽管NEURON可以处理NeuroML输入,但是我们介绍后者,更具说明性的情况 - 在将其编译到mod库并随后用于模拟之前,自动将NeuroML格式的模型文件转换为标准NEURON mod文件格式。我们开发了一个名为“NeuroML01”的例子,它是一种具有两种类型的离子通道NaF和Khh以及泄漏通道的Soma。我们使用来自NeuroML网站(Gleeson,2015b)的Nara通道的Padraig Gleeson的NeuroML规范,并从其中抽取8个参数作为在输入参数向量(mAlphaA,mAlphak,mBetaA,mBetak,hAlphaA,hAlphak, hBetaA和hBetak)。相应的模拟器类(SimNeuronSimpleSpike03)根据输入参数向量为每个模拟修改XML信道规范,转换使用格里森的XML样式表在NeuroML的Source Forge的存在(格里森,2015A),以及上载所提供的修改的XML文件转换成NEURON MOD文件新的mod文件到远程进行编译和仿真。在这个例子中,我们用不同的输入参数向量进行了9次模拟,每次输入参数向量对应于NaF离子通道的不同配置。所有其他参数都是静态的并在模拟器中设置。 NeuroML01示例在用户指南中显示为工作会话。

XML NeuroManager会话

我们为单个NeuroManager会话开发了一个XML格式,其中包含一个配置的机器集上的单个SimSet多个仿真。 被称为NMSessionML,格式是主机OS独立和语言无关。 NMSessionML可能在将NeuroManager与其他系统集成时很有用。 我们提供了三个与SineSim03,SimpleSpike02A和KhStudy相同的仿真例子(NMSessionML01-03),但是从NMSessionML文件运行(参见用户指南了解详细信息)。

NMSessionML动作的基本流程如图7所示。用户创建XML文件,该文件指定SimSet,模拟器类型,组成机器组的各个机器,用户信息和文件位置。 运行脚本使用NMSessionML模式检查XML文件的格式,然后使用自定义样式表生成运行会话所需的SimSpec数据文件和特定于语言的脚本文件。

Discussion

在这项工作中,我们描述了NeuroManager,一种面向对象的工具,可以简化异构计算资源和多种模拟器类型中的计算神经科学工作流程。 目前,计算神经科学的大部分努力都集中在开发仿真环境或提供对HPC资源的简单访问。 我们的软件提供基础架构来利用计算资源,管理模拟器的使用和演变,并组织可能产生的大量数据。 因此,NeuroManager提供了一个工具,允许用户在有序的环境中管理,分析和改进他们的模拟。

Workflow and Software Design

随着大数据时代的不断发展和科学进步越来越多学科和协作,工作流建模和管理是当前和未来神经科学的重要组成部分(Chen and Zhang,2014)。使用面向对象的方法设计NeuroManager可实现灵活的工作流管理。 NeuroManager的设计是将工作流程阶段与与模拟提交相关的特定流程联系起来。因此,工作流程阶段不是独立的模块。工作流自动化的其他方法产生可以分离并分布在不同资源上的模块(Korkhov等,2007; Wibisono等,2007; Yu等,2008; Cushing等,2014)。例如,WS-VLAM(Web服务 - 虚拟实验室阿姆斯特丹)项目方法是将工作流的每个元素都作为一个独立运行的组件,然后将这些组件迁移到远程计算资源(Korkhov et al。,2007)。工作流组件通过利用为特定目的构建的通道服务进行通信。虽然高度灵活和可扩展,但这种方法需要全面的电网级支持。相比之下,NeuroManager的方法是使用固定的工作流程,并保持内部的灵活性。 NeuroManager将工作流程阶段裁剪为特定的操作,其中大部分操作不需要HPC资源。而且,NeuroManager不需要任何网格级别的安装,并且可以使用用户有权访问的任何群集或服务器。因此,NeuroManager更容易提供给个人科学家。

NeuroManager的设计可能被解释为一个MapReduce框架(Sakr et al。,2013; Radenski,2014)。 NeuroManager有一个Map()阶段,在这个阶段中,要执行的模拟分布在SimMachines上。 模拟完成后,Reduce()过程将运行自动分析并收集结果,例如绘图或摘要文件。 我们使用了“主机”和“远程”而不是“主机”和“从机”,因为NeuroManager不能直接控制对远程节点的访问。 因此,其他任务或用户可以共享相同的资源。 总的来说,NeuroManager作为中间件来对硬件,软件和用户进行虚拟化。

Limitations

与所有软件工具一样,它们的使用也存在限制。 在NeuroManager中,限制与商业软件的使用,并行化和开销有关。 我们设计了NeuroManager以尽量减少许可证的使用。 使用MATLAB的优点是可以访问经验证的软件,其支持不依赖于赠款。 这使得NeuroManager具有更长的可用性范围。 不过,我们目前正在开发等效的Python代码。

NeuroManager不是HPC调度程序; 相反,它使用作业提交实用程序在大型资源上运行模拟。 我们的软件专注于提供跟踪模拟及其演变的基础设施。 潜在地,NeuroManager可以集成更复杂的调度和负载均衡算法。 面向对象的方法为这种修改提供了一个灵活的环境。

NeuroManager的开销是可变的;然而,最大的瓶颈是MATLAB编译。根据我们的经验,这取决于使用的机器可能需要90到180秒。因此,考虑到这一点,NeuroManager似乎最适用于需要几分钟到几天才能运行的模拟。非常短的仿真可能会导致太多的开销,从而在时间上有效;然而,用户工作流程自动化(如文件传输,图形制作和标签)节省的时间和精力可以证明即使是这种使用。如果用户需要运行10,000次短期仿真,则可以将它们组合为100×100方法,以尽量减少开销并最大限度地提高使用HPC资源的效率。同时,用户可以获得所有工作流程上的优势,使得自动标记的图块无需手动上传或下载,所有这些都可能需要很长时间而不需要使用NeuroManager。

当使用异构资源时,如果机器的性能差别很大,由于软件假定所有模拟器都相同,先到先得的调度算法可能面临瓶颈。这可以通过向特定模拟器的SimMachine添加性能描述来克服,从而使NeuroManager更好地调度作业。

人们越来越感兴趣的是开发工具来对工程和科学领域的数据进行注释,跟踪和组织模拟或分析。 与计算神经科学最相关的工具是苏门答腊,柳叶刀和Mozaik。 Sumatra(Davison,2012)是一名模拟项目经理,旨在通过与版本控制工具的紧密集成来演示可复制性。 用户“检出”管理器和模型文件,然后在版本控制下运行模拟,这些模拟会自动放入数据库中。 苏门答腊自动扫描文件的依赖关系,以尽可能多地捕获元数据,并收集一些科学/实验环境。 虽然这两种方法在他们当前的配置中不兼容,但苏门答腊调查的这个概念是一个强大的方法,可能对未来在NeuroManager上的工作有用。

Lancet(Stevens et al。,2013)是一个Python应用程序,它与IPython Notebook(Perez等,2011; Shen,2014)相结合,允许研究人员开发涉及神经模拟的科学工作流程。在日常使用中,“柳叶刀”允许研究人员的工作流程自然发展,并跟踪其变化。柳叶刀为其操作创建了一种脚本语言,可通过IPython Notebook与笔记混合。相比之下,NeuroManager使用固定的工作流程,由用户根据每个阶段的对象方法调整需求。这种更加正式的固定工作流程方法简化了可用计算资源的使用,使得多个并行仿真更易于观察,允许即时访问所有仿真器版本,并促进组间共享。像NeuroManager一样,柳叶刀拥有一个可以处理远程模拟器的“模拟器”对象,但它不允许定义机器组。柳叶刀主要使用模拟器对象来使软件模拟器无关。虽然NeuroManager的确如此,但它也使用仿真器对象来在机器集上托管多个仿真器,以自定义仿真前和仿真后的脚本,并允许树模拟器演进。

最后,Mozaik是一个专注于管理二维神经网络模拟的资源(Antolíkand Davison,2013a,b),它使用PyNN(Davison等,2008)模拟器类型独立性,Neo数据结构化(Garcia等, 2014)和Matplotlib进行数据绘图(Matplotlib,2015)。 该软件是模块化的,增强了可扩展性和可定制性。 Mozaik的基本设计专用于二维神经网络。 相比之下,NeuroManager并不特定于特定的模拟类型。

复杂工作流程的自动化在生物科学中越来越普遍。 例如,Taverna(Oinn等人,2004)是一个与基于Web的生物信息学数据库一起工作的工具,Vistrails(Callahan等人,2006)的目标是将可视化处理流水线移动到繁琐的单一配置之外 通过一次促进许多可视化产品的生产来实现点击式方法。

Interaction with Other Computational Neuroscience Resources

NeuroManager已经使用NEURON,MCell和MATLAB模拟器进行过测试,但其基于工作流的方法应该适合与MOOSE(Bhalla et al。,2011),PyNN和Neo对象模型集成。 Neuromanager还可以扩展为接受使用neuroConstruct构建的模型(Gleeson et al。,2007),该工具允许用户以NeuroML格式构建3D神经模型。

NeuroManager将来可以与其他资源和工具进行交互。 神经科学门户网站是一个大型设施,充当神经科学家和HPC资源上托管的各种神经科学模拟器之间的门户(Sivagnanam et al。,2013)。 虽然Neuroscience Gateway负责模拟管理的许多方面,但一旦配置好,NeuroManager提供了使用本地和HPC资源的灵活性和独立性,并且能够在其他软件中作为嵌入式仿真引擎进行操作。

有人努力将系统生物学模拟的表示和报告标准化。 一个重要的努力是围绕着SED-ML的发展,这是一个模拟出处的演化标准(Köhn和Le Novere,2008; Waltemath等,2011)。 虽然SED-ML涉及使用“模拟程序”和“模拟算法”,“模型”以及日常模拟工作的大多数其他方面,但它们并未实现“模拟器”或“机器”的概念。为了 更好地与NeuroManager进行交互,就有必要在SED-ML中实现模拟器和机器的概念。

NeuroManager可以利用基于Python的软件包RADICAL-SAGA(RADICAL,2015),这是对异构分布式计算资源的SAGA访问层的轻量级实现(Merzky et al。,2015)。 虽然没有SAGA的MATLAB绑定,但Python绑定具有适用于此处提及的两种群集类型(SGE和SLURM)的适配器。

虽然超出了本文的范围,但NeuroManager的工作流程自动化应该对参数空间搜索和优化有用。 NeuroManager类的runFromSimSpec()和runFromFile()方法返回一个结果结构,其中包含每个模拟的SimID,结果的位置以及其成功或失败。嵌入NeuroManager的脚本可以访问此结构,处理结果,并基于其搜索算法创建并运行新的SimSet。 NeuroManager为每个仿真使用独特的SimID,可以使单线程和多线程搜索算法在给定的SimSet中同时运行。在这种形式下,NeuroManager可以与Neurofitter(Van Geit et al。,2007)交互,该应用程序旨在研究神经科学中的参数空间。其他重要的改进将包括MATLAB的全局优化工具箱(Mathworks,2015b)和scipy.optimize Python模块(SciPy.org,2015)。正如我们之前提到的那样,NeuroManager的面向对象的特性使它能够灵活地整合这些工具。

在未来的NeuroManager版本中,我们期望提供检查点管理,高级容错,处理分配的超时以及更复杂的调度程序。 NeuroManager另一个有用的补充是在NeuroManager运行时添加和/或减少单个机器,模拟器和模拟的能力。对于编录输入,配置,评论,结果和分析的数据库设施也是有益的。 MATLAB具有与数据库交互的功能,如数据库工具箱(Mathworks,2015a)。该领域的其他努力(Günay等,2009)可能与NeuroManager的构建相兼容。我们还希望添加更为正式的源代码设施,并允许向ModelDB提交的文件不仅包括模型文件和特殊文件,还包括模拟器类文件,规范文件以及足以重新创建模拟的其他相关文件。

我们意识到NeuroManager在整合涉及电生理学和计算神经科学模拟实验的潜在作用。这将需要开发处理实验结果分析的对象类,然后与建模结果进行交互。

猜你喜欢

转载自blog.csdn.net/sinat_31790817/article/details/80269110
今日推荐