LF Edgee 是实现的轻量级物联网边缘分析、流式处理开源软件,可以运行在各类资源受限的边缘设备上。的主要目标是在边缘端提供一个流媒体软件架构(类似于 Flink)。的规则引擎允许用户提供基于SQL或基于图形(类似于Node-RED)的规则,在几分钟内创建物联网边缘分析应用。
近日,发布了1.8.0版本。该版本的主要亮点有:
同时,产品团队也重构了文档结构,更新了安装和应用场景文档,方便用户快速找到有用的文档信息。
通用AI函数
之前的版本中,支持通过扩展的方式,在插件中调用AI/ML模型进行流式数据算法推理。这种方法方便用户进行算法的预处理和后处理,但有较高的使用门槛,运维更新也比较复杂。
新版本提供了 Flow Lite函数插件,用于在流式计算和视频流中进行实时AI推理。这个函数为通用的AI函数,可用于处理大部分已预训练好的 Flow Lite模型。使用中,用户只需上传或提前部署好需要使用到的模型,无需额外编码即可在规则中使用这些模型。
函数接收两个参数,其中第一个参数为模型(扩展名须为.)的名称,第二个参数为模型的输入。假设用户预先训练好了文本分类模型和智能回复模型,需要对实时流入的数据应用这两个模型分析。使用时仅需要两个步骤:
1.下发模型到部署的边缘端,可通过的 API或者其他应用管理。
2.配置规则,使用函数,指定模型名称即可使用。
函数会在层面针对输入数据格式进行验证。用户可以通过更多的SQL语句对模型的输入和输出做预处理或者后处理。
图像/视频流推理
配合新版本提供的视频流源(详情见下文),提供了视频接入并定时获取图像帧的能力。图像帧可在规则中,使用函数进行AI推理。 Flow模型通常是针对特定的图像大小进行训练的,对图像进行推理时,经常需要进行变更大小等预处理。也提供了、等预处理方法。函数会返回 的数组表示供后续规则或应用处理。
在以下的规则中,我们调用了label.模型,对传入的图像先进行预处理,大小调整为224*224。
使用通用AI函数,用户可以快速部署、验证和更新AI模型,加快应用的迭代更新。
可视化编辑器Flow
从1.6.0版本开始提供适合面向可视化界面的图规则API,相比于SQL更适合于构建UI界面。在1.8.0版本中,我们正式在免费的 管理控制台中提供了Flow 可视化编辑器。用户在创建和编辑规则时,可选择使用原有的SQL规则编辑器或使用试用版本的Flow 。
Flow 的界面如下图所示。它的使用遵循主流可视化工作量编辑器的风格和使用逻辑。左侧是可用节点,用户自定义插件和函数也会出现在列表中。中间是画布,用户可拖拽节点并连线;右侧是属性配置视图,点击节点后可在此配置。
除了集成原有功能到Flow 中,新版本中还添加了两种节点:
有了这两种节点,Flow 可以创建传统多分支工作流并且更加容易进行节点的扩展,实现脚本编写。
连接格式优化和自定义:序列化和
通过/sink与外部系统进行连接、读入或写出数据。以为例,每种类型的读取数据时都需要经过连接()和序列化()两个步骤。例如,MQTT ,连接意味着遵循MQTT协议连接,而序列化则是将读取到的数据解析成内部的map格式。
连接和序列化
此前,连接和序列化通常在内部实现,因此当用户需要解析自定义格式时,即使连接协议是MQTT等已支持协议,仍然需要编写完整的插件。新的版本中,格式和类型进一步分离,用户可以自定义格式,而各种格式可以与不同的连接类型结合使用。
例如,创建MQTT类型的数据流时可定义各种不同的格式。
MQTT类型的数据流使用自定义格式,此时MQTT的中的数据应当使用自定义的格式。
此前支持在 的时候指定数据结构类型等。但该方式存在一些不足:
新的版本中,定义时支持逻辑和格式中的物理定义。SQL解析时,会自动合并物理和逻辑,用于指导SQL的验证和优化。同时,我们也提供了API,用于外部系统获取数据流的实际推断。
格式列表
新版本中,支持的格式扩展到如下几种。部分格式包含内置的序列化;部分格式(如)既可以使用内置的动态序列化方式也可以由用户提供静态序列化插件以获得更好的性能。在支持方面,部分格式带有,而自定义格式也可以提供实现。
分析能力增强
新的版本继续加强了有状态分析函数的能力,同时提供了统计函数,提升了产品原生的分析能力。
有条件分析函数
分析函数添加了WHEN条件判断子句,根据是否满足条件来确定当前事件是否为有效事件。当为有效事件时,根据分析函数语意计算结果并更新状态。当为无效事件时,忽略事件值,复用保存的状态值。
增加了WHEN子句之后,分析函数可以实现更加复杂的有状态分析。
新的版本中,我们提供了多个聚合统计函数,例如标准差、方差和百分位的计算。
连接生态扩展
可以处理二进制图像数据,但是此前的测试中,图像都是经由MQTT、HTTP等偏向文本数据传输的协议来发送。新版本提供了视频流源,增加了一种新的二进制数据源。另外,我们大幅增强了文件的能力,支持更多文件类型并支持流式消费文件内容。
文件源
之前版本的文件源主要用于创建Table,对流式处理的支持不够完善。新的版本中,文件源也支持作为用作流,此时通常需要设置参数以定时拉取更新。同时增加了文件夹的支持,多种文件格式的支持和更多的配置项。
新版本中支持的文件类型有:
视频流源
视频源用于接入视频流,例如来自摄像头的视频或者直播视频流。视频流源定期采集视频流中的帧,作为二进制流接入中进行处理。
通过视频源接入的数据,可以使用已有的SQL功能,例如AI推理函数功能等,转换成数据进行计算或输出为新的二进制图像等。
规则自动化运维
部署在边缘端的规则运维相对困难。而边缘端的部署数量通常较大,手工重启规则或重启也会成为较为繁琐的工作。新的版本中,我们增强了规则的自治和自适应能力。
规则自动重启策略
规则因各种原因出现异常时可能会停止运行,其中有些错误是可恢复的。 1.8.0提供了可配置的规则自动重启功能,使得规则失败后可以自动重试从而从可恢复的错误中恢复运行。
用户可配置全局的规则重启策略,也可以针对每个规则配置单独的重启策略。规则重启配置的选项包括:
通过配置重试,可以在出现偶发错误时自动恢复,减少人工运维的需要。
数据导入导出
新版本中提供了和CLI接口,用于导入导出当前实例中的所有配置(流、表、规则、插件、源配置、动作配置、模式)。这样可以快速地备份配置或者移植配置到新的实例中。导入导出的规则集为文本的JSON格式,可读性较强,也可以手工编辑。
插件热更新
相比原生插件,插件更加容易打包和部署,因此也有更多的更新需求。之前的版本中,插件更新后无法立即生效,需要手动重启使用插件的规则或者重启。 1.8.0中,插件更新后,使用插件的规则可无缝切换到新的插件实现中,减少运维工作。
发表回复