作者:唐翊国,开发者生态资深经理,GE数字集团
23年工作经验,长期在杜邦、欧文斯科宁、庄信万丰等从事制造业信息化工作,规划、实施了大量MES、SAP ERP、LIMS、BPM等项目,积累了丰富的制造业数字化转型经验。
前面博客中介绍了如何用Matlab开发一个分析模型,如何创建一个分析服务。
本期介绍如何部署分析服务。
部署分析
Predix提供了非常方便的工具,叫做predix-toolkit,来做一些简单的开发测试工作。
https://predix-toolkit.run.aws-jp01-pr.ice.predix.io/
本博客中,我们会一步一步的教大家如何使用predix-toolkit来部署Matlab 分析模型到Predix Cloud上。
首先,我们要切换到“API Explorer” 模式,并输入UAA URL和相应的客户端ID (client ID)和密码,
一旦成功登录,系统会显示“access_token”等信息。
我们选择左边的 “Analytics Catalog” 菜单,选择“Get the list of analytics”,
输入前面得到的predix-zone-id,点击 Submit,
我们可以得到反馈:“HTTP Response Code: 200 OK”,这表示我们有适当的访问权限来使用分析目录服务analytics catalog service。
第一步创建一个分析目录入口
从“Choose Request” 中选择 “Create an analytics catalog entry”,在“Request Body input”中输入 “name”, “version”等信息,特别是在
“supportedLanguage”必须输入“Matlab”。
点击“Submit”,正常会看到以下结果,复制“id” 字段到一个文本编辑器里,后续的多个步骤都会用到它。
HTTP ResponseCode: 201 Created
{
"id": "20cfa2db-56ed-4c0f-88fd-f03d32541c83",
"name": "MatlabR2011b",
"author": "EagleTang",
"description": "Thisis a matlab test",
"version": "v1",
"supportedLanguage": "Matlab",
"customMetadata": "{\"assetid\":\"abc\"}",
"taxonomyLocation": "/uncategorized",
"state": null,
"access": "FULL",
"createdTimestamp":"2017-04-07T03:18:28+00:00",
"updatedTimestamp": "2017-04-07T03:18:28+00:00"
}
第二步上传分析模型
从“Choose Request” 中选择 “Upload analytic”,粘贴刚才保存的“id”到“catalogEntryId”中。
从目录
C:\PxDev\predix-analytics-sample\analytics\demo-RTM-loco\demo-RTM-loco-matlab-r2011b\target
中选择之前生成的Matlab分析模型:“demo-RTM-loco-matlab-r2011b-1.0.0-SNAPSHOT.jar”
点击“Submit”,正常会看到:
HTTP ResponseCode: 201 Created
{
"id": "77ae0afe-e3bd-4843-a44b-e71dbca6a22b",
"filename": "demo-RTM-loco-matlab-r2011b-1.0.0-SNAPSHOT.jar",
"type": "Executable",
"description": "Describewhat your analytic does in this text box",
"createdTimestamp": "2017-04-07T03:22:18+00:00",
"updatedTimestamp": "2017-04-07T03:22:18+00:00"
}
第三步验证分析模型
从“Choose Request” 中选择 “Validate analytic”,修改“POST” 字段:
默认是
https://predix-analytics-catalog-release.run.aws-usw02-pr.ice.predix.io/api/v1/catalog/analytics/<analyticCatalogEntryId-goes-here>/validation
用前面保存的”id”字段信息替换“<analyticCatalogEntryId-goes-here>”
https://predix-analytics-catalog-release.run.aws-usw02-pr.ice.predix.io/api/v1/catalog/analytics/20cfa2db-56ed-4c0f-88fd-f03d32541c83/validation
在“request body”字段中,从
C:\PxDev\predix-analytics-sample\analytics\demo-RTM-loco\demo-RTM-loco-matlab-r2011b\data\LocoData.json文件中复制所有数据。
点击“Submit”,正常可以看到以下结果,复制validationRequestId字段的信息到文本编辑器中。
HTTP ResponseCode: 200 OK
{
"analyticId": "20cfa2db-56ed-4c0f-88fd-f03d32541c83",
"validationRequestId": "5fe94471-59fa-4eb4-9c6d-f73adca0bb7b",
"status": "QUEUED",
"message": "Analyticvalidation request successfully queued - reference request id is5fe94471-59fa-4eb4-9c6d-f73adca0bb7b for catalog entry id20cfa2db-56ed-4c0f-88fd-f03d32541c83",
"inputData": "{\"test\":{\"wind_speed\":[8,15,11,6,24,3,21,14,25,11,6,1,4,2,4,7,23,13,29,12,12,32,6,15,10,29,2,12,8,31,16,30,4,5,18,7,2,21,8,9,32,21,26,13,28,9,6,10,5
…………
3.53,42.34,44.71,37.67,35.52,51.64,38.14,29.89,44.4,33.42,43.13,41.86,36.45,40.9,37.24,37.48,43.96,35.49,39.62,48.76,44.85,42.08,34.91,35.18,38.42,42.42,43.73,39.86,41.18,38.72,42.75,35.18,44.36,42.31]}}",
"result":null,
"createdTimestamp":"2017-04-07T03:32:35+00:00",
"updatedTimestamp":"2017-04-07T03:32:35+00:00"
}
第四步 得到分析结果
从“Choose Request” 中选择“Get analytic result”,在“GET” 字段中修改
https://predix-analytics-catalog-release.run.aws-usw02-pr.ice.predix.io/api/v1/catalog/analytics/<analyticCatalogEntryId-goes-here>/validation/<requestid goes here>
用保存的“id”替换“<analyticCatalogEntryId-goes-here>”,用保存的“validationRequestId”替换“<requestid goes here>”
https://predix-analytics-catalog-release.run.aws-usw02-pr.ice.predix.io/api/v1/catalog/analytics/20cfa2db-56ed-4c0f-88fd-f03d32541c83/validation/5fe94471-59fa-4eb4-9c6d-f73adca0bb7b
点击“Submit”,正常我们可以得到:
HTTP ResponseCode: 200 OK
{
"analyticId": "20cfa2db-56ed-4c0f-88fd-f03d32541c83",
"validationRequestId": "5fe94471-59fa-4eb4-9c6d-f73adca0bb7b",
"status": "PROCESSING",
"message": "Processinganalytic validation request for analytic id20cfa2db-56ed-4c0f-88fd-f03d32541c83, request id 5fe94471-59fa-4eb4-9c6d-f73adca0bb7b",
"inputData": "{\"test\":{\"wind_speed\":[8,15,11,6,24,3,21,14,25,11,6,1,4,2,4,7,23,13,29,12,12,32,6,15,10,29,2,12,8,31,16,30,4,5,18,7,2,21,8,9,32,21,26,13,28,9,6,10,5
…………
3.53,42.34,44.71,37.67,35.52,51.64,38.14,29.89,44.4,33.42,43.13,41.86,36.45,40.9,37.24,37.48,43.96,35.49,39.62,48.76,44.85,42.08,34.91,35.18,38.42,42.42,43.73,39.86,41.18,38.72,42.75,35.18,44.36,42.31]}}",
"result":null,
"createdTimestamp":"2017-04-07T03:32:35+00:00",
"updatedTimestamp":"2017-04-07T03:32:36+00:00"
}
通常,这一步会花几分钟,我们反复点击“Submit”,正常可以得到:
HTTP ResponseCode: 200 OK
{
"analyticId": "20cfa2db-56ed-4c0f-88fd-f03d32541c83",
"validationRequestId": "5fe94471-59fa-4eb4-9c6d-f73adca0bb7b",
"status": "COMPLETED",
"message": "Analyticvalidation completed successfully.",
"inputData": "{\"test\":{\"wind_speed\":[8,15,11,6,24,3,21,14,25,11,6,1,4,2,4,7,23,13,29,12,12,32,6,15,10,29,2,12,8,31,16,30,4,5,18,7,2,21,8,9,32,21,26,13,28,9,6,10,5
…………
08,34.91,35.18,38.42,42.42,43.73,39.86,41.18,38.72,42.75,35.18,44.36,42.31]}}",
"result":"{\"R2\": [0.97671],\"Prediction\":[370.0659,366.4111,365.6598,371.8394,365.0185,363.5657,366.5063,365.7035,363.5706,356.2802,358.0262,367.9868,371.5592,371.2803
…………
,359.8844,369.0259,347.9803,366.4614,364.7926,358.7443,347.1039,363.3212,365.7386,364.4717,355.928,370.5714,366.0072,361.3121]}",
"createdTimestamp":"2017-04-07T03:32:35+00:00",
"updatedTimestamp":"2017-04-07T03:35:59+00:00"
}
可以看到,我们得到正确的分析结果了,让我们继续部署它吧!
第五步 部署分析模型
从“Choose Request” 中选择“Deploy analytic”,修改 “POSTS” 字段,
默认是
https://predix-analytics-catalog-release.run.aws-usw02-pr.ice.predix.io/api/v1/catalog/analytics/<analyticCatalogEntryId-goes-here>/deployment
用“id”替换“<analyticCatalogEntryId-goes-here>”,
https://predix-analytics-catalog-release.run.aws-usw02-pr.ice.predix.io/api/v1/catalog/analytics/20cfa2db-56ed-4c0f-88fd-f03d32541c83/deployment
点击“Submit”,正常得到以下反馈,我们要保存“requestID”到文本编辑器中。
HTTP ResponseCode: 200 OK
{
"analyticId": "20cfa2db-56ed-4c0f-88fd-f03d32541c83",
"requestId": "8e475de0-deb2-4411-b568-8f2aa016d4b4",
"status": "QUEUED",
"message": "Analyticdeployment request successfully queued - reference request id is8e475de0-deb2-4411-b568-8f2aa016d4b4 for catalog entry id20cfa2db-56ed-4c0f-88fd-f03d32541c83",
"inputConfigData": null,
"result": null,
"createdTimestamp": "2017-04-07T03:40:50+00:00",
"updatedTimestamp": "2017-04-07T03:40:50+00:00"
}
第六步 检查部署状态
从“Choose Request”中选择“Check Deployment status”,修改“GET” 字段,
默认是
https://predix-analytics-catalog-release.run.aws-usw02-pr.ice.predix.io/api/v1/catalog/analytics/<analyticCatalogEntryId-goes-here>/deployment/<deploymentid goes here>
用“id”替换“<analyticCatalogEntryId-goes-here>”,用上一步的“requestID”替换“<deploymentid goes here>”
https://predix-analytics-catalog-release.run.aws-usw02-pr.ice.predix.io/api/v1/catalog/analytics/20cfa2db-56ed-4c0f-88fd-f03d32541c83/deployment/8e475de0-deb2-4411-b568-8f2aa016d4b4
点击“Submit”,正常我们会看到:
HTTP ResponseCode: 200 OK
{
"analyticId": "20cfa2db-56ed-4c0f-88fd-f03d32541c83",
"requestId": "8e475de0-deb2-4411-b568-8f2aa016d4b4",
"status": "PROCESSING",
"message": "Processinganalytic deployment request for analytic id20cfa2db-56ed-4c0f-88fd-f03d32541c83, request id8e475de0-deb2-4411-b568-8f2aa016d4b4",
"inputConfigData": null,
"result": null,
"createdTimestamp": "2017-04-07T03:40:50+00:00",
"updatedTimestamp": "2017-04-07T03:40:50+00:00"
}
这里也要等一会儿,点击“Submit” 几次,我们会得到:
HTTP ResponseCode: 200 OK
{
"analyticId": "20cfa2db-56ed-4c0f-88fd-f03d32541c83",
"requestId": "8e475de0-deb2-4411-b568-8f2aa016d4b4",
"status": "COMPLETED",
"message": "Analyticdeployment completed successfully.",
"inputConfigData": null,
"result": "com.ge.predix.analytics.catalog.dto.AnalyticCatalogEntry@4b892725[id=20cfa2db-56ed-4c0f-88fd-f03d32541c83,name=MatlabR2011b, author=Eagle Tang, description=This is a matlab test,version=v1, supportedLanguage=Matlab,customMetadata={\"assetid\":\"abc\"},taxonomyLocation=/uncategorized, state=VALIDATED, access=FULL,createdTimestamp=2017-04-07T03:18:28+00:00, updatedTimestamp=2017-04-07T03:35:59+00:00]",
"createdTimestamp": "2017-04-07T03:40:50+00:00",
"updatedTimestamp": "2017-04-07T03:45:20+00:00"
}
第七步 运行分析
从“Choose Request” 里选择 “Run analytic”,修改“POST” 字段
https://predix-analytics-catalog-release.run.aws-usw02-pr.ice.predix.io/api/v1/catalog/analytics/<analyticCatalogEntryId-goes-here>/execution
用“id”替换“<analyticCatalogEntryId-goes-here>”
https://predix-analytics-catalog-release.run.aws-usw02-pr.ice.predix.io/api/v1/catalog/analytics/20cfa2db-56ed-4c0f-88fd-f03d32541c83/execution
在“request body”字段中,从
C:\PxDev\predix-analytics-sample\analytics\demo-RTM-loco\demo-RTM-loco-matlab-r2011b\data\LocoData.json文件复制所有数据。
点击“Submit”,一切正常我们会看到:
HTTP ResponseCode: 200 OK
{
"analyticId": "20cfa2db-56ed-4c0f-88fd-f03d32541c83",
"status": "COMPLETED",
"message": "Analyticexecuted successfully.",
"inputData": "{\"test\":{\"wind_speed\":[8,15,11,6,24,3,21,14,25,11,6,1,4,2,4,7,23,13,29,12,12,32,6,15,10,29,2,12,8,31,16,30,4,5,18,7,2,21,8,9,32,21,26,13,28,9,6,10,5
08,34.91,35.18,38.42,42.42,43.73,39.86,41.18,38.72,42.75,35.18,44.36,42.31]}}",
"result":"{\"R2\": [0.97671],\"Prediction\":[370.0659,366.4111,365.6598,371.8394,365.0185,363.5657,366.5063,365.7035,363.5706,356.2802,358.0262,367.9868,371.5592,371.2803
,359.8844,369.0259,347.9803,366.4614,364.7926,358.7443,347.1039,363.3212,365.7386,364.4717,355.928,370.5714,366.0072,361.3121]}",
"createdTimestamp":"2017-04-07 03:51:59.205",
"updatedTimestamp":"2017-04-07 03:52:23.872"
}
这样,我们就完成了一次Matlab分析模型的部署过程,这个模型可以被其它的Predix微服务任意调用了。
在使用中您有任何问题,请访问我们的论坛http://bbs.youkuaiyun.com/forums/GEPredix
GE数字集团的技术专家们会在线回答您的问题。
也请访问我们在优快云的Predix专区http://predix.youkuaiyun.com/ 了解更多Predix的内容和相关活动。