如何对SAP-Leonardo上的机器学习模型进行重新训练

7次阅读

共计 1922 个字符,预计需要花费 5 分钟才能阅读完成。

Jerry 之前的两篇文章介绍了如何通过 Restful API 的方式,消费 SAP Leonardo 上预先训练好的机器学习模型:

如何在 Web 应用里消费 SAP Leonardo 的机器学习 API
部署在 SAP Cloud Platform CloudFoundry 环境的应用如何消费

当时 Jerry 提到,Product Image Classification API 只支持 29 种产品类别:

如果我们开发应用时需要支持额外的产品类别,就得需要自行提供该产品类别的图片并重新训练。

下面是 SAP Leonardo 上机器学习模型的重新训练步骤。

假设我们期望重新训练之后,Product Image Classfication 这个模型能够识别出不同种类的花,那么我们首先得搞到大量花的图片。Tensorflow 的官网上,已经体贴地给想做模型训练的学习者们,提供了一个做练习用的压缩包,里面包含了大量各式花的图片。
http://download.tensorflow.or…

SAP Leonardo 接受的能用于重新训练模型的数据集,必须符合下列的层级结构,即 training, validation 和 test 三个文件夹下面,分别包含以产品类别命名的字文件夹,且数据规模之比为 8:1:1.

有了用于训练的数据后,下一步就是把这些数据上传到 SAP Leonardo 的模型在线存储平台上。

Jerry 的前一篇文章部署在 SAP Cloud Platform CloudFoundry 环境的应用如何消费曾经介绍了如何在 SAP 云平台上创建 Leonardo 机器学习的服务实例,这个实例的 service key 里包含了一个 IMAGE_RETRAIN_API_URL,可以用来获取在线存储的 url:

向这个 url 发送一个 HTTP get 请求,得到在线存储的 url:

把这个 url 粘贴到浏览器里,输入 postman 里返回的 accessKey 和 secretKey 登录,就能以 web 的方式访问这个在线存储了:

下一步是把本地的训练文件上传到这个部署在 AWS 上的在线存储上去。

首先用命令行 mc config host 定义一个名为 sapjerrys3 的远程站点,将上一步从 postman 获得的 AWS 在线存储 url,accessKey 和 secret 绑定到这个站点上:

然后使用命令行上传文件:
mc.exe cp -r C:CodeMachineLearningStudyflowersjerry sapjerrys3data
大概十几分钟后,文件上传完毕:

此时可以从浏览器里看到 AWS 在线存储上传完毕的训练文件。

现在可以提交一个后台作业了,让 Leonardo 去处理这些上传好的文件,ABAP 顾问们可以把这个动作理解成在 Netweaver 事务码 SM36 里定义一个后台作业并提交。发送一个 HTTP post 请求,除了下图 jobName, dataset 和 modelName 需要自己维护外,其他字段都使用 SAP 官网上定义的默认值。

这个请求会返回一个后台作业 ID,抄下来后把它拼到 url 末尾,然后重新发送一个 HTTP get 请求,即可查询到这个作业的执行情况。Jerry 做的时候,等待了大概五分钟,作业状态就变为 SUCCEEDED 了。

因为上一篇和本文做的练习都是在 SAP Cloud Platform 的 CloudFoundry 环境中进行的,因此我们也可以用 cf 命令行来查询这些作业的执行情况:

cf sapml retraining jobs -m image

如果遇到作业状态为 FAILED 的情况,去 AWS 在线存储上查看以作业名称命名的文件夹,里面包含了详细的训练日志,可以用作错误分析:

在这个训练好的模型能正式被使用之前,我们还需要对其进行部署,类似 ABAP Netweaver 里的“激活”动作。

和提交训练的后台作业类似,模型部署也是一个异步执行的步骤,提交部署请求后,得到一个部署作业 ID:ms-26c5a22c-6d07-4164-8222-a4182969162d

根据这个部署作业 ID 可以查询模型部署状态:

成功部署后,我们就可以用 Restful API 消费这个模型了,url 的格式为:https://mlfinternalproduction…;model name>/versions/1

我从网络上随便找一张向日葵的照片,

将这张图片作为 HTTP POST 的参数发给我重新训练并且部署好的模型 flowerjerrymodel,得到的结果显示,重新训练后的模型认为这张图片有大约 87% 的可能性是代表向日葵。


接下来有时间的话,我打算搜集一些异形的图片来训练,看 SAP Leonardo 能不能把我桌上挂着的这个异形吊饰识别出来。感谢阅读。

要获取更多 Jerry 的原创文章,请关注公众号 ” 汪子熙 ”:

正文完
 0