跳转到主要内容

ModECI (模型交换和收敛倡议) 模型描述格式

项目描述

mdf logo

Actions Status PyPI version Documentation Status Code style: black

ModECI模型描述格式(MDF)

点击此处查看完整的MDF文档

注意:MDF仍在开发中!请参阅有关规范相关打开的问题,或此处联系有关MDF的信息。 MDF格式是在2019年7月由斯坦福大学可重复性神经科学中心(CRN)的Russ Poldrack和脑成像数据标准(BIDS)倡议在普林斯顿组织的一次会议后首次提出的。关于该领域的前期工作,请参阅此处

概述

MDF是一个开源、社区支持的标准及其相关工具库,用于以可交换的形式表达计算模型,使其能够在不同的编程语言和执行环境中进行交换。其总体目标是为计算神经科学、认知科学和机器学习提供一种通用的模型格式。计算神经科学认知科学机器学习

MDF由一个用于表达模型的序列化格式规范(目前支持JSONYAMLBSON表示,尽管计划支持其他格式,如HDF5)以及一套Python工具组成,用于实现使用MDF描述的模型。序列化格式可用于将模型导入支持的目标环境以执行它;反之,当从支持的环境导出模型以便在其他环境中重用时,也可以使用这些格式。

MDF Python API可用于创建或加载MDF模型以进行检验和验证。它还包括一个基本的执行引擎,用于模拟该格式的模型。然而,这并非旨在提供一个高效、通用的模拟环境,也不是MDF作为编程语言的目的。相反,Python API的主要目的是方便并验证不同社区之间现有环境之间的模型交换。因此,这些Python工具包括双向支持,用于将广泛使用的编程环境导入和导出,以及轻松将这些工具扩展到其他环境。

开发

MDF语言及其相关工具的实现和推广由模型交换和收敛倡议(ModECI)进行,该倡议得到了NSF收敛加速计划(D轨道:通过数据和模型共享推动AI驱动创新)的支持,作为一个公开可访问的开源项目。最初的设计是基于一系列研讨会的信息,这些研讨会涉及关键软件环境的开发者以及机器学习、认知科学和神经科学的其他利益相关者。未来的研讨会将解决支持扩展到基础和应用科学和技术开发其他领域的广泛问题(例如,种群生物学、医学信息学、结构和环境监测以及复杂系统控制)。目前正在开发支持的环境包括PyTorchONNXWebGMENeuroMLPsyNeuLinkACT-R

mdf interactions
图1: MDF将与之交互的一些当前和计划中的格式。点击图片获取更多信息。

MDF与现有学科标准(如ONNX在机器学习领域,以及NeuroML在神经科学领域)以及通用仿真环境(如WebGME)的成功对接,将允许在这些环境之间建立桥梁,并将它们翻译为支持更广泛环境的那些标准(例如,在ONNX的情况下,是TensorflowKeras,在NeuroML的情况下,是The Virtual BrainSONATA)。初步调查也已开展,与NSF加速器轨道C(量子技术)的项目合作,使用MDF来促进在量子硬件上实现计算模型。

MDF标准的核心元素

模型 MDF中最高级别的结构是模型,它由一个或多个和模型属性组成。前者描述了模型的操作特性(其结构和执行),而后者提供了用于执行、评估、测试或可视化的附加信息(元数据)。

图指定了模型的结构和流程。图的最基本元素是节点,它通过其参数函数定义了一些计算单元。节点通过有向的连接到其他节点,在没有其他条件的情况下,这些边定义了模型的计算流程。

节点 这些定义了图中的核心计算元素,通过其输入和输出端口接收和传输信息。一般来说,端口代表节点与连接到其他节点的边之间的接触点。

输出端口 输出端口是数据传输过程的起点。在处理节点的信息后,输出端口用于通过边开始向下一个节点传输信息。

这些将信息从节点的输出端口传输到另一个节点的输入端口,共同定义了图的地形。边可以包含对它们携带的信息进行操作的权重。

输入端口 输入端口是数据传输过程的终点。它接收通过边传输的信息,并将其输入到下一个节点进行进一步处理。

条件 这是MDF规范的核心和独特元素,它通过提供一组高级描述符来指定节点的条件执行,从而补充了其他基于计算图格式的格式。这允许具有相对复杂的执行需求(例如,包含循环、分支和/或时间依赖性)的模型以足够抽象的形式表达为图,从而便于在高级建模环境之间交换,而无需将它们“降低”到更详细的过程描述中,然后再从中恢复。

参数 用于确定节点和边的配置和操作属性,可以在MDF中使用参数进行定义。在参数指定大型数据结构(例如,权重矩阵)的情况下,可以使用广泛使用的格式(例如numpy数组、TensorFlow张量)的数组,并支持可移植的二进制格式(例如BSON)的序列化。参数可以是固定值,当节点执行时不会改变,也可以随时间改变(状态参数)。

函数 作为输入端口上的值以及其他函数和参数的函数来评估的单个值。与参数的关键区别在于函数始终是无状态的。

模型元数据 可以将“元数据”添加到模型、图、节点以及许多其子元素,提供有关该元素的其他信息。虽然元数据不应是元素行为/结构的数学描述所必需的,但它可能有助于对函数/目的的识别,或用于将其映射到特定应用以进行模拟/可视化。可以将元数据添加到顶级模型以指定联系信息、引用、致谢、指向示例数据和基准结果的指针,以及最初实现该指定模型的环境以及任何经过验证以支持其执行的环境。


图2:用MDF表示的包含3个节点和2个边的简单图。


图3:此图说明了指定超出图有向流行为的能力。在此,节点1生成一个随机数并将其传输到节点2。只有当节点2从节点1接收到的数字大于10时,节点2才会运行。

安装

要求

需要Python >= 3.7

快速入门

pip install modeci-mdf

有关更详细的安装说明,请参阅此处

有关为MDF开发做出贡献的指南,请参阅此处

示例

要开始,请遵循Jupyter笔记本中的简单示例此处

可以在此处找到多个序列化MDF文件的示例,用于生成它们的Python脚本以及到目标环境的映射此处

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

modeci_mdf-0.4.10.tar.gz (99.1 kB 查看哈希值)

上传时间 源代码

构建分发

modeci_mdf-0.4.10-py3-none-any.whl (94.9 kB 查看哈希值)

上传时间 Python 3

由以下支持