使用Sensei Machine Learning API的Publish模型作為服務
本教學課程涵蓋使用Sensei Machine Learning API將模型發佈為服務的程式。
快速入門
此教學課程需要您實際瞭解Adobe Experience Platform資料科學Workspace。 在開始本教學課程之前,請檢閱資料科學Workspace概觀,以取得服務的概略介紹。
要與此教學課程一起追隨,您必須具有現有的 ML 引擎、ML 實例和 實驗。 有關如何在 API 中創建這些元件的步驟,請參閱有關導入打包方式🔗教學課程。
最後,在開始此教學課程之前,請查看開發人員指南的入門🔗部分,了解成功調用 Sensei Machine Learning API 需要了解的重要信息,包括本教學課程中使用的所需標頭:
{ACCESS_TOKEN}
{ORG_ID}
{API_KEY}
所有 POST、PUT 和 PATCH 要求都需要一個額外的標題:
- 內容類型: 應用程式/json
重要術語
下表概述本教學課程中使用的一些常見術語:
使用現有的訓練實驗回合和排程評分建立ML服務
當您以ML服務形式發佈訓練實驗回合時,您可以透過提供評分實驗回合的詳細資訊來排程評分,其中包含POST請求的裝載。 這將導致建立排程的實驗實體以進行評分。
API格式
POST /mlServices
要求
curl -X POST
https://platform.adobe.io/data/sensei/mlServices
-H 'Authorization: {ACCESS_TOKEN}'
-H 'x-api-key: {API_KEY}'
-H 'x-gw-ims-org-id: {ORG_ID}'
-H 'Content-Type: application/json'
-d '{
"name": "Service name",
"description": "Service description",
"trainingExperimentId": "c4155146-b38f-4a8b-86d8-1de3838c8d87",
"trainingExperimentRunId": "5c5af39c73fcec153117eed1",
"scoringDataSetId": "5c5af39c73fcec153117eed1",
"scoringTimeframe": "20000",
"scoringSchedule": {
"startTime": "2019-04-09T00:00",
"endTime": "2019-04-10T00:00",
"cron": "10 * * * *"
}
}'
mlInstanceId
trainingExperimentId
trainingExperimentRunId
scoringDataSetId
scoringTimeframe
10080
表示每個排程的評分實驗回合將使用過去10080分鐘或168小時的資料。 請注意,值0
不會篩選資料,資料集內的所有資料都會用於評分。scoringSchedule
scoringSchedule.startTime
scoringSchedule.endTime
scoringSchedule.cron
回應
成功的回應會傳回新建立的ML服務的詳細資料,包括其唯一的id
及其對應評分實驗的scoringExperimentId
。
{
"id": "string",
"name": "string",
"description": "string",
"mlInstanceId": "string",
"trainingExperimentId": "string",
"trainingExperimentRunId": "string",
"scoringExperimentId": "string",
"scoringDataSetId": "string",
"scoringTimeframe": "integer",
"scoringSchedule": {
"startTime": "2019-03-13T00:00",
"endTime": "2019-03-14T00:00",
"cron": "30 * * * *"
},
"created": "2019-04-08T14:45:25.981Z",
"updated": "2019-04-08T14:45:25.981Z"
}
從現有的ML執行處理建立ML服務
根據您的特定使用案例和需求,以ML執行個體建立ML服務在排程訓練和評分實驗執行方面是有彈性的。 本教學課程將介紹以下特定案例:
請注意,您可以使用ML執行個體來建立ML服務,而不需要排程任何訓練或評分實驗。 此類ML服務將建立普通的Experiment實體和用於訓練和評分的單一Experiment Run。
具有已排程實驗以進行評分的ML服務 ml-service-with-scheduled-experiment-for-scoring
您可以透過發佈具有已排程的評分實驗回合的ML執行個體來建立ML服務,這會建立用於訓練的普通實驗實體。 已產生訓練實驗回合,並將用於所有已排程的評分實驗回合。 確定您具有建立ML服務所需的mlInstanceId
、trainingDataSetId
和scoringDataSetId
,而且它們存在且是有效值。
API格式
POST /mlServices
要求
curl -X POST
https://platform.adobe.io/data/sensei/mlServices
-H 'Authorization: {ACCESS_TOKEN}'
-H 'x-api-key: {API_KEY}'
-H 'x-gw-ims-org-id: {ORG_ID}'
-H 'x-sandbox-name: {SANDBOX_NAME}'
-d '{
"name": "Service name",
"description": "Service description",
"mlInstanceId": "c4155146-b38f-4a8b-86d8-1de3838c8d87",
"trainingDataSetId": "5c5af39c73fcec153117eed1",
"trainingTimeframe": "10000",
"scoringDataSetId": "5c5af39c73fcec153117eed1",
"scoringTimeframe": "20000",
"scoringSchedule": {
"startTime": "2019-04-09T00:00",
"endTime": "2019-04-10T00:00",
"cron": "10 * * * *"
}
}'
mlInstanceId
trainingDataSetId
trainingTimeframe
"10080"
表示過去10080分鐘或168小時的資料將用於訓練實驗回合。 請注意,值"0"
不會篩選資料,資料集內的所有資料都會用於訓練。scoringDataSetId
scoringTimeframe
"10080"
過去 10080 分鐘或 168 小時的數據將用于每個計劃的評分實驗 Run。 請注意,的值 "0"
不會篩選數據,資料集內的所有數據都用於評分。scoringSchedule
scoringSchedule.startTime
scoringSchedule.endTime
scoringSchedule.cron
回應
成功的回應會傳回新建立的ML服務的詳細資料。 這包括服務的唯一id
,以及其對應訓練和評分實驗的trainingExperimentId
和scoringExperimentId
。
{
"id": "string",
"name": "string",
"description": "string",
"mlInstanceId": "string",
"trainingExperimentId": "string",
"trainingDataSetId": "string",
"trainingTimeframe": "integer",
"scoringExperimentId": "string",
"scoringDataSetId": "string",
"scoringTimeframe": "integer",
"scoringSchedule": {
"startTime": "2019-04-09T00:00",
"endTime": "2019-04-10T00:00",
"cron": "10 * * * *"
},
"created": "2019-04-09T08:58:10.956Z",
"updated": "2019-04-09T08:58:10.956Z"
}
使用已排程實驗的ML服務以進行訓練和評分 ml-service-with-scheduled-experiments-for-training-and-scoring
若要將現有的ML執行個體發佈為ML服務,並包含已排程的訓練和評分實驗回合,您必須提供訓練和評分排程。 创建此配置的 ML 服務時,還會為培訓和評分創建計劃實驗實體。 請注意,訓練和評分排程不一定要相同。 在評分工作執行期間,將會擷取由排程的訓練實驗回合產生的最新已訓練模型,並用於排程的評分回合。
API格式
POST /mlServices
要求
curl -X POST 'https://platform.adobe.io/data/sensei/mlServices'
-H 'Authorization: Bearer {ACCESS_TOKEN}'
-H 'x-api-key: {API_KEY}'
-H 'x-gw-ims-org-id: {ORG_ID}'
-H 'x-sandbox-name: {SANDBOX_NAME}'
-d '{
"name": "string",
"description": "string",
"mlInstanceId": "string",
"trainingDataSetId": "string",
"trainingTimeframe": "string",
"scoringDataSetId": "string",
"scoringTimeframe": "string",
"trainingSchedule": {
"startTime": "2019-04-09T00:00",
"endTime": "2019-04-10T00:00",
"cron": "10 * * * *"
},
"scoringSchedule": {
"startTime": "2019-04-09T00:00",
"endTime": "2019-04-10T00:00",
"cron": "10 * * * *"
}
}'
mlInstanceId
trainingDataSetId
trainingTimeframe
"10080"
表示過去10080分鐘或168小時的資料將用於訓練實驗回合。 請注意,值"0"
不會篩選資料,資料集內的所有資料都會用於訓練。scoringDataSetId
scoringTimeframe
"10080"
表示每個排程的評分實驗回合將使用過去10080分鐘或168小時的資料。 請注意,值"0"
不會篩選資料,資料集內的所有資料都會用於評分。trainingSchedule
scoringSchedule
scoringSchedule.startTime
scoringSchedule.endTime
scoringSchedule.cron
回應
成功的回應會傳回新建立的ML服務的詳細資料。 這包括服務的唯一id
,以及其對應訓練和評分實驗的trainingExperimentId
和scoringExperimentId
。 在下列範例回應中,trainingSchedule
和scoringSchedule
的存在表示訓練和評分的實驗實體是排程的實驗。
{
"id": "string",
"name": "string",
"description": "string",
"mlInstanceId": "string",
"trainingExperimentId": "string",
"trainingDataSetId": "string",
"trainingTimeframe": "integer",
"scoringExperimentId": "string",
"scoringDataSetId": "string",,
"scoringTimeframe": "integer",
"trainingSchedule": {
"startTime": "2019-04-09T00:00",
"endTime": "2019-04-10T00:00",
"cron": "10 * * * *"
},
"scoringSchedule": {
"startTime": "2019-04-09T00:00",
"endTime": "2019-04-10T00:00",
"cron": "10 * * * *"
},
"created": "2019-04-09T08:58:10.956Z",
"updated": "2019-04-09T08:58:10.956Z"
}
查詢ML服務 retrieving-ml-services
您可以透過向/mlServices
發出GET
請求並在路徑中提供唯一的id
ML服務來查詢現有的ML服務。
API格式
GET /mlServices/{SERVICE_ID}
{SERVICE_ID}
id
。要求
curl -X GET 'https://platform.adobe.io/data/sensei/mlServices/{SERVICE_ID}'
-H 'Authorization: Bearer {ACCESS_TOKEN}'
-H 'x-api-key: {API_KEY}'
-H 'x-gw-ims-org-id: {ORG_ID}'
-H 'x-sandbox-name: {SANDBOX_NAME}'
回應
成功的回應會傳回ML服務的詳細資料。
{
"id": "string",
"name": "string",
"description": "string",
"mlInstanceId": "string",
"trainingExperimentId": "string",
"trainingDataSetId": "string",
"trainingTimeframe": "integer",
"scoringExperimentId": "string",
"scoringDataSetId": "string",
"scoringTimeframe": "integer",
"trainingSchedule": {
"startTime": "2019-04-09T00:00",
"endTime": "2019-04-10T00:00",
"cron": "10 * * * *"
},
"scoringSchedule": {
"startTime": "2019-04-09T00:00",
"endTime": "2019-04-10T00:00",
"cron": "10 * * * *"
},
"created": "2019-05-13T23:46:03.478Z",
"updated": "2019-05-13T23:46:03.478Z"
}
排程訓練或評分
如果您想要在已發佈的ML服務上排程評分和訓練,可以透過/mlServices
上的PUT
請求更新現有的ML服務來進行。
API格式
PUT /mlServices/{SERVICE_ID}
{SERVICE_ID}
id
。要求
下列要求會新增trainingSchedule
和scoringSchedule
金鑰及其各自的startTime
、endTime
和cron
金鑰,以排程現有ML服務的訓練和評分。
curl -X PUT 'https://platform.adobe.io/data/sensei/mlServices/{SERVICE_ID}'
-H 'Authorization: {ACCESS_TOKEN}'
-H 'x-api-key: {API_KEY}'
-H 'x-gw-ims-org-id: {ORG_ID}'
-H 'x-sandbox-name: {SANDBOX_NAME}'
-d '{
"name": "string",
"description": "string",
"mlInstanceId": "string",
"trainingExperimentId": "string",
"trainingDataSetId": "string",
"trainingTimeframe": "integer",
"scoringExperimentId": "string",
"scoringDataSetId": "string",
"scoringTimeframe": "integer",
"trainingSchedule": {
"startTime": "2019-04-09T00:00",
"endTime": "2019-04-11T00:00",
"cron": "20 * * * *"
},
"scoringSchedule": {
"startTime": "2019-04-09T00:00",
"endTime": "2019-04-11T00:00",
"cron": "20 * * * *"
}
}'
startTime
。 如果必須修改startTime
,請考慮發佈相同的模型並重新排程訓練和評分工作。回應
成功的回應會傳回已更新ML服務的詳細資料。
{
"id": "string",
"name": "string",
"description": "string",
"mlInstanceId": "string",
"trainingExperimentId": "string",
"trainingDataSetId": "string",
"trainingTimeframe": "integer",
"scoringExperimentId": "string",
"scoringDataSetId": "string",
"scoringTimeframe": "integer",
"trainingSchedule": {
"startTime": "2019-04-09T00:00",
"endTime": "2019-04-11T00:00",
"cron": "20 * * * *"
},
"scoringSchedule": {
"startTime": "2019-04-09T00:00",
"endTime": "2019-04-11T00:00",
"cron": "20 * * * *"
},
"created": "2019-04-09T08:58:10.956Z",
"updated": "2019-04-09T09:43:55.563Z"
}