OMS平台模型的服务化封装方法研究

2018-10-16 08:21张丰源乐松山温永宁闾国年
地理信息世界 2018年3期
关键词:对模型分析模型部署

王 明,陈 旻,张丰源,乐松山,温永宁,闾国年

(1. 虚拟地理环境教育部重点实验室(南京师范大学),江苏 南京 210023;2. 江苏省地理信息资源开发与利用协同创新中心,江苏 南京210023;3. 江苏省地理环境演化国家重点实验室培育建设点,江苏 南京 210023)

0 引 言

大量复杂和不断演变的地理现象和地理过程发生在地理环境中,地理分析模型被认为是模拟这些地理现象和地理过程的重要工具[1].经过多年的研究,国内外地理学家已经在各个部门学科领域构建了大量的地理分析模型[2-5].近年来面向复杂地理问题求解的需求,随着分布式网络、云计算等技术的发展,基于已经构建的地理分析模型在网络空间开展模型的共享与集成模拟已经成为解决地理问题的重要方法[6-8].在开放式的网络环境下实现模型的共享可以充分利用已有模型资源,降低问题求解过程中的人力成本,减少资源浪费,从而促进地理建模与模拟相关研究[9-10].

然而,由于地理分析模型的跨领域性、多样性等特点,使得模型具有结构、开发语言和执行平台等方面的异构性[11-12].如,不同的模型通常具备不同的用户接口(如控制台命令行、执行文件、动态链接库等),由不同的编程语言来实现(如FORTRAN、C/C++、Python等),构建于不同的操作系统平台(如Windows和Linux平台).因此,为了屏蔽地理模型的异构性,模型封装研究的迫切性日益凸显.

迄今为止,国内外学者已经提出了多种方法以实现地理分析模型的共享,出现了一系列用于模型共享与模拟的动态建模框架与平台,如SME[13]、OpenMI[14-15]、CSDMS[16]等;并且也设计了一些模型服务标准来提供模型服务(如WPS标准等).然而,针对于不同标准和不同模型的封装与共享还存在着一些问题:①由于缺乏对模型通用接口的抽象,导致不同平台模型之间复用性较难.如CSDMS平台下的模型,无法通过简单高效的方式复用至OpenMI平台之上,通常需要通过较为复杂的编程工作来完成;②已有的模型服务标准通常只能用于描述较为简单的模型.面向复杂地理分析模型的描述与调用需求,无法全面地封装模型描述、执行和部署等相关信息.以上问题增加了模型使用者发现和使用模型的难度,模型的封装与共享还有待进一步研究.

OMS(Object Modeling System)是由美国农业部农业系统服务部门(USDA-ARS)和科罗拉多州立大学共同开发的基于组件式的环境建模框架.它提供了一种连续和高效的方法用于:①创建科学模拟组件;②开发、参数化和评估环境模型,并支持对模型的修改和完善;③根据用户的需求重新定制模型[17-18].目前OMS主要用于水资源预测、农业生态建模项目与地下水模拟等方面.然而,OMS平台模型的应用模式还停留在组件式调用,无法提供网络环境下的服务化共享,这在很大程度上阻碍了OMS平台模型的推广应用.

基于对现有封装方法难点的分析以及对OMS平台模型推广过程中遇到的实际问题,本文设计一种地理分析模型的服务化封装策略,对OMS平台模型进行了封装以支持相关模型在开放式网络环境下的共享与重用.

1 封装策略的基本思想

为了实现地理分析模型在网络环境下的服务化共享,面向模型服务容器和门户网站的使用情景,本文提出了一种封装策略,其主要包括3个基本的接口:模型描述接口、模型执行接口和模型部署接口,如图1所示.

图1 地理分析模型封装策略及使用情景Fig.1 The encapsulation strategy and usage scenario of geo-analysis models

通常情况下,模型提供者对于将要发布的模型具有较好的认知,能够比较清楚地表达模型的基本信息(如模型的基本语义相关信息、执行的行为信息与部署的需求信息).这些信息是模型在网络环境下得以共享与正确执行的基础,因此需要设计相关通用接口对这些信息进行描述,并对模型进行封装.对于封装后形成的模型部署包,可以部署到模型服务容器[19]上并发布为模型服务,在门户网站上进行注册,形成网络环境下可重用的服务资源.当模型使用者想要调用模型时,可以通过门户网站搜寻相关的模型服务,配置模型运行数据,执行模型以对相关地理问题开展分析.

针对地理模型的特征和上述使用流程,提出的封装策略包括3个基本接口:模型描述接口,模型执行接口和模型部署接口.

1)模型描述接口负责对模型语义信息进行描述.通过模型描述接口,模型提供者能够以灵活和结构化的方式来描述模型相关的语义信息(如模型的运行机理、适用区域以及建模原理等),同时也提供了相关链接资源信息(如模型应用案例文档等).通过该接口,有助于规范模型描述信息的定义、分类以及原理表达.

2)模型执行接口负责对模型的输入、输出数据以及执行行为进行描述,是模型原始执行程序封装为标准化模型组件的通道.模型执行接口包括模型数据接口和模型执行行为接口.数据接口借用统一数据表达策略,对模型的输入、输出和控制参数进行表达;而模型执行行为接口则借用状态机事件响应策略,将复杂模型运行过程抽象为由状态和事件组成的运行流程.实现该接口,有助于对模型的数据及行为进行结构化和普适化的描述,同时将模型原生的交互接口与该接口进行映射,形成标准化模型组件.

3)模型部署接口负责描述模型的部署信息.模型提供者能够借助模型部署接口以结构化的方式提供模型部署所需的相关信息(模型运行所需的软硬件环境信息以及模型依赖的运行平台等).通过该接口,有助于对模型的部署信息进行全面化的描述,同时模型使用者也能将模型更为方便地部署在计算节点之上.

2 模型封装策略的实现

2.1 模型描述接口

当模型使用者需要使用合适的地理分析模型解决地理问题时,首先最重要就是根据研究内容找到适宜的模型.然而,模型通常是由不同的研究人员和研究小组开发,且它们通常分布在网络环境中"各个角落",为此想要发现目标模型通常需要花费大量的精力[20].并且,不全面的模型语义信息描述也阻碍了模型使用者理解和使用模型.因此,这就需要设计一种对于模型语义描述规范接口.

本文借鉴相关模型描述接口的设计,通过对模型通用描述要素的分析,设计模型描述接口.该接口主要由CategoryCollection集合和LocalAtrtributeCollection集合组成,且这两个集合都是可扩展的:①CategoryCollection集合可以由多个ModelCategory组成,每个ModelCategory用于提供模型的所属类别信息,其中Principle属性定义了模型类别的名称(如CSDMS等),Path属性则定义了模型在所用分类体系下具体的分类级别信息(如SWAT模型在CSDMS下归属于CSDMS/Terrestrial models子类别).②LocalAtrtributeCollection集合则可以包含多个ModelLocalAttribute,每个ModelLocalAttribute用于结构化描述模型概念及相关链接资源信息,其中LocalLanguage属性描述了ModelLocalAttribute集合所使用的语言.当选择了相对应的语言类型时,ModelLocalAttribute中的LocalName(模型名称)、KeyWords(模型描述关键词)、Abstract(模型简述)等信息的描述语言都必须与之对应.LocalWiki属性包含了与模型相关的URL,且这些URL通常链接到一些文本(如说明文档等)或多媒体(如视频和动画等),以对模型进行更明确的解释与表达.通过实现该两个集合的扩展,可以对多个模型进行批量描述.

2.2 模型执行接口

通常情况下地理分析模型可以以数学模型的方式呈现,且可以被实现为具有特定参数和平台需求的可执行程序.当实际应用模型时,必须清楚地了解模型的输入、输出,根据不同模型的具体要求来准备输入数据是使用模型的第一步[21].但是,由于模型数据在数据格式和内容语义方面呈现多样化,为了能够共享具有异构数据需求的地理分析模型,在封装地理模型时就应该采取相同的数据描述策略,以便于用户能够以标准化的方式来共享模型数据.

此外,以执行程序为表现形式的模型是对地理信息和地理过程的抽象,通常内含多个执行步骤.对于模型用户而言,他们需要了解模型每一步的执行信息,并基于特定执行步骤以执行相应操作.因此,模型执行行为的信息也应该包含在封装的模型之中.

基于以上分析,本文设计了模型执行接口,主要包括两个部分:模型数据接口和模型执行行为接口.

2.2.1 模型数据接口

陈超伦等人[21-23]在对大量的地理分析模型数据以及较为成熟的模型数据交换方法进行分析和规律的总结之后,借鉴SEDRIS定义的DRM对地理实体表达思想,通过一系列基本变量类型和这些变量类型的组合,提出并设计了统一数据交换表达模型(UDX, Universal Data eXchange model)来屏蔽模型数据使用过程中的异质性.UDX模型能完整地将复杂的地理数据的语义及结构等信息加以描述,并且在计算机的数据存储中能够保证信息的完整性.为此,本文选用UDX模型作为地理模型数据统一的表达策略.

UDX主要包含两个部分的内容:具有自描述特性的数据要素对象模型(UDX Data)和语义增强的Schema(UDX Schema).UDX Data的基本构造元素是节点(Node),一个"节点"包含节点名称(Name)、内核(Kernel)两部分,一个"核" 包含核的类型(KernelType,其包括存储数据的核(Data Kernel)以及容器类型的核(Container Kernel))以及数值类型的核(Data Kernel).一个节点可以有n(n≥0)个子节点,可以构成递归的层次结构.其中,无父节点的节点称为根节点(Root),无子节点的节点称为叶子节点(Leaf),根节点及其全部子节点构成一个UDX数据集(Dataset).而UDX作为层次数据结构,不仅可以存储数据,而且具有自描述特性,可以定义数据的Schema,将说明信息嵌入UDX节点,以实现对数据节点的说明性描述[24].

2.2.2 模型执行行为接口

模型执行行为的复杂性是模型使用与共享过程中所面临的难点.地理分析模型的执行通常涉及多个中间"计算步骤",本研究利用状态机事件响应模型(SMER模型)[20]以实现对模型执行行为的描述.在SM-ER模型中,地理模型的执行过程被抽象为状态,数据输入/输出处理消息被抽象为事件,模型执行与模型用户之间的交互过程被抽象为不同的请求和响应动作.

SM-ER模型的基本设计图如图2所示.ModelBehavior包括了ModelTransition和ModelState两部分.ModelTransition主要用来描述模型执行的源状态(以前的执行步骤)、目标状态(下一步的执行步骤)以及判断条件(判断执行过程是否继续).ModelState包含了属性与关联的ModelEvent,用来表达模型在执行时不同的状态.ModelEvent是由名称和多个RequestData(用来描述外部数据、外部请求等作为外部的输入)与ResponseData(将提交到外部的数据描述为输出)行为组成.

图2 SM-ER模型的基本设计图[20]Fig.2 Basic design of the SM-ER model

结合UDX模型,地理分析模型的执行顺序和数据要求都可以由SM-ER模型表示.基于UDX模型和SM-ER模型,设计的模型执行接口包括Style(对应于模型的3种基本行为特征)、RelatedDataset(UDX Schema中的所有相关数据描述)和ModelExecutionStates(模型执行行为描述).图3左侧给出了设计的模型执行接口的UML图,右侧给出了OMS平台下月水量平衡模型(Thornthwaite model)实现模型执行接口的表达序列化.

通过执行接口,模型可以封装为交互式的"状态机",以便于用户可以获得相应的模型数据描述信息(UDX Schema)来准备数据、使用模型,并根据SM-ER模型提供的执行状态来采取相应的行为.

2.2.3 模型部署接口

图3 模型执行接口的设计及案例Fig.3 Design of model execution interface and a case

随着云计算架构的兴起,地理模型服务能够分布式地部署在不同计算节点之上,使相关模拟资源能够得到充分利用.地理分析模型依赖的运行平台(例如Windows、Linux、UNIX、OSX)和相关执行资源(例如配置文件和外部链接动态库等)是模型软件部署与运行的关键要素[23].此外,模型的版本控制对于地理模型的应用也十分重要.基于地理分析模型的这些特点,本文设计了一种灵活可控的模型部署接口.

模型部署接口是由ModelEntrance(模型执行程序信息)、ModelAssembly(模型依赖项信息)和ModelConfigure(模型配置文档信息)等部分组成.ModelEntrance包含模型可执行程序的文件名、版本号以及相关的平台信息等;ModelAssembly包含与模型执行相关的依赖文件的路径与名称;ModelConfigure则包含模型运行所需的软硬件信息.

使用模型部署接口,模型提供者能以结构化的方式清楚地描述模型部署信息,同时模型使用者也可以在模型部署接口的帮助下,更方便地选择适合模型运行的计算节点,这在一定程度上减少了模型提供者和模型用户之间的协作障碍.

3 OMS平台模型的服务化及验证

本文基于JAVA平台实现了OMS平台模型封装策略的3个封装接口,选择典型的OMS平台模型开展封装实验,并将封装好的模型组件在开放式网络平台下进行部署与服务发布,从而验证本文所提出的封装策略的能力和实用性.

首先,需要对OMS平台模型的运行机理及本身特性进行分析,以便基于本文所提出的封装策略进行封装.在模型描述方面,OMS借助于模型描述文档,实现对模型语义、数据以及方法的定义和描述;对于模型的执行行为,它将模型的输入输出抽象为数据流,模型的执行算法抽象为组件,且通过模拟配置文件(sim文件)使用不同类别的注释描述不同组件之间的交互过程;而在模型部署描述方面,OMS主要是通过非结构化的网页文本进行描述,没有通用接口描述模型的部署信息.通过解析OMS平台运行机理及模型模拟相关配置文件,得到的描述信息可以利用本文所提出的封装策略进行封装,形成面向服务的可解析通用接口.

本文选取OMS平台下基于JAVA的空间分布式水文/水质模型--AgES-W模型(AgroEcoSystem-Watershed)为案例来演示封装实验过程.该模型通过水文响应单元来模拟连接流域和地下水的相互作用,实现对流域进行全面分布式的水文模拟[25-27].封装流程主要包括以下几个部分:①解析AgES-W模型描述文档,利用模型描述接口实现模型语义信息的描述;②解析AgES-W模型输入输出数据及执行行为,通过模型执行接口,对AgES-W模型原始执行接口进行映射,形成具有标准化接口的可执行程序,如图4a给出了数据与行为封装过程的部分代码,生成模型数据与行为信息的描述文件.③通过由网页文本解析得来的AgES-W模型部署所依赖的环境信息,实现模型部署接口,生成模型部署的描述文件.针对于3个接口生成的描述文件,本文利用XML的方式来组织这些文件信息,以装配的方式形成以模型描述语言(Model Description Language)构成的模型MDL文件.通过将模型执行文件、MDL文件以及相关依赖性文件放在同一个文件夹下,形成标准化封装的模型文件夹,如图4b所示.

图4 OMS平台下AgES-W模型的封装案例Fig.4 Encapsulation example of the AgES-W model in OMS

MDL文档的根节点是ModelClass,介绍了模型的名称以及模型全局唯一的ID,其主要包含4个子节点:①AttributeSet节点是模型描述接口的信息入口;②Data节点下的DataDeclarations节点包含UDX Schema,用来指示用户该如何准备输入数据和定义输出数据;③Behavior节点是模型执行接口的信息入口,其State子节点则用来指示执行和数据分发请求时的不同状态;④Runtime节点是模型部署接口的信息入口,描述了模型部署相关的资源信息等.在具体实现时,将Data节点和Behavior节点合并成为一个节点.图4给出了AgES-W模型实现封装接口生成MDL文档的具体内容.

此外,构建了相关的GUI工具以支持对模型的便捷封装和打包.通过封装打包工具生成模型部署包后,将部署包上传至已构建好的模型服务容器之上,进行部署、发布及服务化调用,其具体流程截图如图5所示.

图5 模型服务化共享流程Fig.5 The process of model service sharing

4 结束语

本文以OMS平台模型的共享为导向,进行OMS平台模型的服务化封装方法研究.利用提出的模型封装策略,通过封装策略下的模型描述接口、模型执行接口和模型部署接口,可以清晰地描述OMS平台模型和模型相关资源,从而使模型用户来更好地重用与共享OMS平台模型,这也为异构地理分析模型的网络共享奠定了基础.然而,本文所提出的服务化封装策略在具体方面还需改善,且封装过程需要较多的人工编程干预,在接下来的研究中,需要开发一套实用的应用程序来帮助模型研究者实现地理分析模型的自动化封装.目前,地理分析模型的封装过程还依赖于大量的编程工作,自动化封装应用工具的构建可以有效地促进模型的共享.

猜你喜欢
对模型分析模型部署
基于BERT-VGG16的多模态情感分析模型
一种基于Kubernetes的Web应用部署与配置系统
晋城:安排部署 统防统治
部署
光源对模型贴图的影响——3种人造光源在三维数字化采集中的应用
层次分析模型在结核疾病预防控制系统中的应用
部署“萨德”意欲何为?
蒙药特润舒都乐对模型小鼠脾脏NK细胞活性的影响
蒙医开窍补肾针刺法对模型大鼠胸腺、脾脏指数的影响
蒙医催熟疗法对模型大鼠炎症因子影响的实验研究