SAP 人工智能解决方案的演进史 - 从 SAP Leonardo 到 SAP Data Intelligence
笔者之前的文章介绍过,我所在的工作团队曾经用 SAP Leonardo 上的机器学习服务,开发了一系列消费这些服务的原型应用:
如何在 Web 应用里消费 SAP Leonardo 的机器学习 API
如何对 SAP Leonardo 上的机器学习模型进行重新训练
SAP Leonardo 图片处理相关的机器学习服务在 SAP 智能服务场景中的应用
最近笔者参与了一个原型应用的开发项目,包含了微信小程序,SAP Conversation AI 同 SAP Cloud for Customer 的集成,需要把用户在微信小程序里同 SAP Conversation AI 的对话记录里的关键词提取出来。
在开发过程中,我发现位于 SAP Leonardo Machine Learning Foundation 这个包里的 Machine Learning API,全部被标注成 Deprecated 状态:
这些 API 在 2020 年的 6 月 30 日之后将停止使用。
在 SAP 官网和 SAP 社区上,我进行了一番搜索,得知这些处于 Deprecated 状态的 API,将被一个新的 SAP 产品所替代:SAP Data Intelligence.https://api.sap.com/package/SAPLeonardoMLFunctionalServices?section=OVERVIEW
在官网能够下载的 SAP AI 发展路线图上,我们能看到这样一张示意图:
处于示意图中人形图示的头部地位的 SAP Data Intelligence,是 SAP 推出的机器学习相关领域的模型开发,运行和生命周期管理的云端工具和平台。
新的 SAP Data Intelligence 位于 SAP 云平台的 Kubernetes 基础设施上,之前 SAP Leonardo Machine Learning Foundation 里的机器学习 API,将会以 Operator 的形式,供机器学习场景建模的从业者使用。
在 SAP 官网上有对 SAP Data Intelligence 的概要介绍:
这里笔者简单介绍下 SAP Data Intelligence 在 SAP Cloud Platform 上的操作界面和用法。
SAP 云平台上打开 Data Intelligence 实例的控制台:
登入之后,是一个类似 SAP Fiori Launchpad 风格的界面。对于笔者来说,我需要将之前原型开发里,所有调用已经处于 Deprecated 状态的 Machine Learning API 的地方,全部替换成调用 SAP Data Intelligence 暴露出的 Machine Learning 服务,因此我首先进入的是 Modeler 这个 tile.
进入 Modeler 之后,在左边的 Operator 标签页里浏览:
这个名叫 MLF Functional Services Interence 的 Operator,从功能上说,就是 SAP Leonardo Machine Learning Foundation 里处于 Deprecated 状态 API 的继任者。
如何使用 SAP Data Intelligence Modeler 里提供的这些标准 Operator 呢?按照 Jerry 学习新东西的惯例,我们还是先来看个 Hello World 的例子。
在 Graph 标签页里,新建一个 Graph. 从这个编辑页面能发现,这个 Graph 由若干节点和彼此之间的连线组成,每个节点是一个 Operator,实现各种操作,而连线表示将一个 Operator 产生的输出传送到下一个 Operator 接收的输入去。因此,从视觉效果上说,这种模型非常形象地被称为 Graph;从运行时的行为上讲,SAP 也将 Graph 模型称之为 Pipeline(管道),这个命令的由来和 Linux 系统里的管道理念一致。
我新建了一个 Graph,命名为 jerrytest,从 Graph 编辑页面里拖拽了两个 Operator,分别是 Data Generator 和 Terminal. 前者会每隔一段时间生成一批随机数,该输出直接重定向到第二个 Operator 里。因此我一旦运行这个 Graph,查看 Terminal Operatpor 的控制台,就能看到随机数发生器生成的随机数打印。
笔者之前分享过 SAP Cloud Integration 里的 iFlow 建模和 SAP 云平台上的 Low Code Development(低代码开发)解决方案里的 Microflow,加上本文正在介绍的 SAP Data Intelligence Graph,这三者的建模都是在编辑器里,通过拖拽的方式来完成的。
在随机数发生器上点右键,选择 Open Script,能查看用 JavaScript 实现的随机数生成代码:
从 JavaScript 代码能看出,这个 Data Generator 以 500 毫秒的时间间隔,生成随机数。
直接运行这个 Graph,等其状态处于 Running 之后,查看 Terminal Operator 的控制台:
就能看到 Data Generator 产生的随机数不断打印出来了:
下载 Graph 的 Diagnostic 信息,能查看到更多 Graph 的运行时明细:
比如其使用的容器和容器镜像的名称:
SAP Data Intelligence Modeler 里的 Kafka Producer 和 Kafka Consumer
首先本地将 kafka 的 docker 容器镜像下载到本地并运行:
docker search kafka
docker pull spotify/kafka
docker run --name kafka3 spotify/kafka
docker ps 命令,查看 tcp 端口号:
新建一个 graph,使用典型的生产者-消费者模型:将 Data Generator 生成的数据交给 kafka Producer operator;
而 Kafka Consumer 从 kafka producer 里读取出 data Generator 生成的数据,通过 ToString converter,输出到 Terminal Operator 上。
kafka producer 和 consumer 使用的 broker 和 topic 必须一致:
运行 graph,可以看到
在 SAP Data Intelligence Modeler 里创建新的 pipeline
新建一个 graph:
保存:
将 Processing 下面的 Data Generator 这个 Operator 拖拽到 graph 的编辑区域,点击<>符号开始编辑脚本:
可以查看自动生成的 JavaScript 代码:
这个 Generator 生成的随机数需要一个输出,这里我们选择 terminal operator:
将 data Generator 的 outport 绑定到 terminal 的 inport:
执行:
在终端上看到打印的输出:
总结
本文详细介绍了 SAP 人工智能解决方案的演进史,以及促成这些产品迭代方向的幕后驱动因素,并且用一个实际例子,详细介绍了 SAP Data Intelligence 的一个使用案例。
版权声明: 本文为 InfoQ 作者【Jerry Wang】的原创文章。
原文链接:【http://xie.infoq.cn/article/cf2229b35ffa795027c3b3386】。文章转载请联系作者。
评论