模型化- 数字化转型的重要基石
在各行各业推行数字化转型过程中,构建信息化模型十分重要,它是数字化转型的基石。事实上,数字化转型的核心是“万物皆模型”,在工业领域,以德国为主导的工业4.0 发展进程中,标准信息模型的构建是主要工作之一。他们提出了资产管理壳模型的概念和一系列标准。并且着力于各种物理设备,软件服务等数字化模型的构建。步伐稳健又迅速。在产品研发阶段重点发展基于AutomationML语言的建模,而现场控制领域正逐步推广OPCUA 信息化模型和协议的应用。
所有的信息模型几乎都是采用了形式化语言描述的结构化数据。并且清晰地定义了模型的语义。使信息模型能够被机器和软件准确地理解和一致性性访问。主要的描述语言是XML 语言,鉴于JSON语言的处理简洁性,也有部分模型使用JSON格式描述。
共识-语言的基础
语言的核心是语法和语义。 对于人类自然语言而言,语法和语义都不是非常规范的。有时候是模糊的含义和简化的语法。人类依靠“社会俗称规约”相互理解。但是在大语言模型(LLM)还没有出现之前,机器仍然无法准确地使用自然语言相互交流。于是人类创建了各种形式化语言,它们具有严格的语法和语义定义。这种形式化语言是人类自然语言的一个子集。消除了自然语言的二义性。
机器之间交换信息的方式也受到严格的定义,这便是通信协议(protocol)。因此,语法,语义和协议是机器交流信息的三要素。
推广一种形式化机器语言的关键是语言的标准化及其推广。使用者之间达成共识。流行的机器之间的语言包括 modebus,TCP/IP,CAN,OPC UA ,,AutomationML,工业4.0 知产管理壳等等语言和协议。
万物皆模型-并非易事
从技术的角度来看,构建各种资产的数字化模型并不存在什么障碍。现代IT技术提供了各种方法和工具。但是实现“万物皆模型”的目标却并非易事。
采用开放的数字模型,意味着各利益方打破了原有的护城河,大公司除非找到了新的技术壁垒,它们不会轻易地拥抱开放系统。
数字化模型的生态没有形成之前,个别公司或者个别项目中采用基于模型的设计方法可能比传统设计工作量更大。学习和采纳模型化设计方法的意愿不足。而且难以达成共识!
由于缺乏广泛的用户,模型化设计的工具软件短缺。
构建资产数字化模型需要专业领域的专家与自动控制与IT行业专家的通力合作。在德国和欧洲,这些行业的数字化模型是由专业的行业协会发起并组织实施的。而我国的行业协会不具备这样的组织能力。
由此可见,构建制造业资产数字化模型是一件说说容易,干起来费劲的事情。笔者看来,至今没有找到可行的方法。
我们需要寻找一种方法,实现便捷,低成本,大批量地构建数字化模型。只有模型库非常丰富之后,人们才会喜欢使用基于模型的设计,生态才会形成。
大语言模型LLM-建模的新工具
大语言模型的出现,极大地提升了机器理解人类自然语言的能力。人们似乎看到了希望,是否能够直接使用自然语言提示大语言模型自动建立资产的数字化模型呢?
人们普遍对LLM 的能力预期过高,让它回答刁钻的问题,一旦chatGPT答非所问,又对LLM失去了信心。对于LLM 编程写代码这样的事情同样是如此,一开始就让它直接写计算机程序。对于LLM 产生的错误再嘲笑一番。
令人遗憾的是目前大模型目前还不能完成这项工作。由于工业领域的资产描述内容繁多,准确性和一致性要求非常高。而大语言模型构建的模型会出现一定概率的差异性。
中间语言-AI时代的建模方法
语言大模型基于模型模板(template)构建模型。而不是基于schema或者元模型规范来建立模型。因此,除非有大量的模板供LLM 学习,直接生成形式化的模型比较困难。
同样地,LLM 生成程序代码也是基于代码的实例来构建代码的。由于网络上程序代码比较多,所以效果要好一点,但是如果需要实现比较复杂的控制算法,它就无能为力了,除非是已有的标准算法。目前的许多程序代码没有详细的注解和描述,LLM 能够学习语言的语法,却难以理解语义。
以笔者的观点,如果要让LLM 生成形式化的模型文本或者复杂的程序代码,使用中间语言更加有效。
所谓中间语言(模型)是指一个介于自然语言和形式化语言之间的语言,它有利于从自然语言描述转换,有能够转化成为标准化的机器可读的程序或者模型。
LLM 的出现使机器理解自然语言的能力大幅度提升,它对语言的语法要求降低了,另一方面,自然语言能够表达语义明确的内容,比如:
- 我要吃饭
- 我想吃饭
- 我想要吃饭
这三句话表达的含义是一致的,明确的。所以说,自然语言完全能够准确的描述事物(模型),只是需要有一定的表达能力和逻辑性(或者说限制)就可以了。要比计算机的形式化语言的简单的多。使用中间语言建立自然语言和机器语言之间的桥梁是可行的方法。
LLM 最擅长的是自然语言的理解和生成,但是它要完成复杂的AI能力,仍然需要使用各种传统的IT工具,比如网络搜索,数据库,软件工具。才能完成复杂的AI任务。所谓智能体是通过自然语言连接起来的工具链(langchain)实现的,我们已有的所有IT技术是AI的基础。其中包括工业自动化行业的各种标准,建模方法和理论。
许多人没有将大语言模型和大语言模型的应用程序区分开来,其实许多所谓的大模型是大模型的应用,它通过大模型调用各种软件工具实现的神奇能力。所以说,并不是由于LLM 的出现,其它技术都歇菜了,程序员要失业了。IT 工程师的作用依然非常重要,我们为LLM 提供新的工具,让它能够做的更多,更好。
中间语言有如下几个特点:
- 简单的结构化形式语言
比如使用JSON 格式或者其他DSL 语言描述。这种结构化模型能够通过程序转化为机器可读的形式化模型。能够通过程序转化为标准化的数字模型或者代码,例如管理壳,OPCUA 模型,计算机代码等。在转化过程中,根据模型的规范,自动添加规范中要求的语义、语法细节。
- 代码或者模型中增加了比较多的自然语言描述(Description)
有利于LLM 理解模型或者语言模型的含义,帮助LLM 准确地生成基于中间语言的代码或者模型。
在中间模型中,每个对象,属性都要增加描述(Description)例如
current= {
value:10"
description :"current of motor Driver"
unit:"A"
}
同样地,在程序代码中的每个函数也需要描述,例如
一个获取天气的函数function get_weather(locaton)需要下面的描述
{
"name": "weather",
"description": "当需要了解天气时调用 需要 位置参数",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "输入您想要了解天气的位置。 示例:无锡",
},
},
"required": ["location"],
},
}
LLM 通过描述理解语义,未来的程序对于“人类”的可读性又非常重要了,这一次是LLM的可读性。
- 能够转换成标准的模型
中间语言是形式化结构型语言,通过添加细节,能够使用软件工具转换成标准化的模型文本。 比如OPC UA 和资产管理壳(AAS)。
这种方法已经被人采纳过,例如OPCUA 的NodeSet2 格式非常复杂,OPCUA 基金会设计了一种ModelDesign的中间模型,通过基金会提供的UAModelCompier 软件生成C# 代码和NodeSet2.xml。ModelDesign便于人工编写和其它程序输出。
由此可见,中间语言是介于自然语言与计算机语言之间的一种“高级”语言。中间语言和模型的另一个优点是它能够生成各种程序设计语言的代码和模型。
初步的实验
在下面的实验中,我们将分三步进行:
- 基于工业4.0 的资产管理壳的数据模型,设计一种资产模型(中间模型)
- 将自然语言编写的资产模型描述通过LLM 生成中间模型
- 设计一个软件工具将中间模型转换成标准的AAS XML 文档
(待续)