Sensei Machine Learning API を使用したサービスとしてのモデルのPublish
このチュートリアルでは、Sensei Machine Learning API を使用してモデルをサービスとして公開するプロセスについて説明します。
はじめに
このチュートリアルでは、Adobe Experience Platform Data Science Workspaceに関する十分な知識が必要です。 このチュートリアルを開始する前に、Data Science Workspaceの概要 を参照して、サービスの概要を確認してください。
このチュートリアルを進めるには、既存の ML エンジン、ML インスタンス、および実験が必要です。 API でこれらを作成する手順については、 パッケージ化されたレシピの読み込み に関するチュートリアルを参照してください。
最後に、このチュートリアルを開始する前に、デベロッパーガイドの はじめに の節を参照して、このチュートリアルで使用される必須ヘッダーなど、Sensei Machine Learning API の呼び出しを正常に行うために必要となる重要な情報を確認してください。
{ACCESS_TOKEN}{ORG_ID}{API_KEY}
すべての POST、PUT、および PATCH リクエストには、次の追加ヘッダーが必要です。
- Content-Type: application/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 * * * *"
}
}'
mlInstanceIdtrainingExperimentIdtrainingExperimentRunIdscoringDataSetIdscoringTimeframe10080 を指定すると、過去 10,080 分(168 時間)のデータが、スケジュールに沿ったスコアリング Experiment Run に使用されます。値 0 を指定すると、データはフィルタリングされず、データセット内のすべてのデータがスコアリングに使用されます。scoringSchedulescoringSchedule.startTimescoringSchedule.endTimescoringSchedule.cron応答
応答が成功すると、一意の id と、対応するスコアリング実験の scoringExperimentId を含む、新しく作成された ML サービスの詳細が返されます。
{
"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 を含む 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 * * * *"
}
}'
mlInstanceIdtrainingDataSetIdtrainingTimeframe"10080" を指定すると、過去 10,080 分(168 時間)のデータがトレーニング Experiment Run に使用されます。値 "0" を指定すると、データはフィルタリングされず、データセット内のすべてのデータがトレーニングに使用されます。scoringDataSetIdscoringTimeframe"10080" を指定すると、過去 10,080 分(168 時間)のデータが、スケジュールに沿ったスコアリング Experiment Run に使用されます。値 "0" を指定すると、データはフィルタリングされず、データセット内のすべてのデータがスコアリングに使用されます。scoringSchedulescoringSchedule.startTimescoringSchedule.endTimescoringSchedule.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"
}
スケジュールに沿ったトレーニングおよびスコアリング Experiment を含む ML サービス ml-service-with-scheduled-experiments-for-training-and-scoring
スケジュールされたトレーニングおよびスコアリング実験実行を使用して既存の ML インスタンスを ML サービスとして公開するには、トレーニングスケジュールとスコアリングスケジュールの両方を提供する必要があります。 この設定の ML サービスを作成すると、トレーニングとスコアリングの両方のスケジュール済み実験エンティティも作成されます。 トレーニングとスコアリングのスケジュールが同じである必要はありません。スコアリングジョブの実行中に、スケジュールに沿ったトレーニング Experiment Run によって生成された最新のトレーニング済みモデルが取得され、スケジュールに沿ったスコアリングの実行に使用されます。
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 * * * *"
}
}'
mlInstanceIdtrainingDataSetIdtrainingTimeframe"10080" を指定すると、過去 10,080 分(168 時間)のデータがトレーニング Experiment Run に使用されます。値 "0" を指定すると、データはフィルタリングされず、データセット内のすべてのデータがトレーニングに使用されます。scoringDataSetIdscoringTimeframe"10080" を指定すると、過去 10,080 分(168 時間)のデータが、スケジュールに沿ったスコアリング Experiment Run に使用されます。値 "0" を指定すると、データはフィルタリングされず、データセット内のすべてのデータがスコアリングに使用されます。trainingSchedulescoringSchedulescoringSchedule.startTimescoringSchedule.endTimescoringSchedule.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 リクエストを実行し、パスで ML サービスの一意の id を指定することで、既存の 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"
}