Adobe AI Machine Learning APIを使用したサービスとしてのモデルの公開
このチュートリアルでは、Adobe AI Machine Learning APIを使用してモデルをサービスとして公開するプロセスについて説明します。
はじめに
このチュートリアルでは、Adobe Experience Platform Data Science Workspaceについて理解する必要があります。 このチュートリアルを開始する前に、Data Science Workspaceの概要で、サービスの概要を確認してください。
このチュートリアルに従うには、既存のML エンジン、ML インスタンス、および実験が必要です。 APIでこれらを作成する手順については、 パッケージ化されたレシピの読み込みに関するチュートリアルを参照してください。
最後に、このチュートリアルを開始する前に、このチュートリアル全体で使用される必須ヘッダーを含む、Adobe AI Machine Learning APIの呼び出しを正常に行うために知っておく必要がある重要な情報については、開発者ガイドの入門 セクションを確認してください。
{ACCESS_TOKEN}{ORG_ID}{API_KEY}
すべての POST、PUT、および PATCH リクエストには、次の追加ヘッダーが必要です。
- Content-Type: application/json
キーワード
次の表に、このチュートリアルで使用される一般的な用語の概要を示します。
既存のトレーニング実験の実行とスケジュールされたスコアリングを使用してML サービスを作成する
トレーニング Experiment Run as a ML Serviceを公開する場合、POST リクエストのペイロードを実行するスコアリング Experiment Runの詳細を指定することで、スコアリングをスケジュールできます。 これにより、スコアリング用にスケジュールされた実験エンティティが作成されます。
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応答
応答が成功すると、新しく作成された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 サービスの作成
特定のユースケースや要件に応じて、マシンラーニングインスタンスを使用してマシンラーニングサービスを作成すると、トレーニングのスケジュール設定や実験の実行のスコアリングに柔軟に対応できます。 このチュートリアルでは、次のような特定のケースについて説明します。
マシンラーニングサービスは、トレーニングやスコアリング実験をスケジュールしなくても、マシンラーニングインスタンスを使用して作成できます。 このようなマシンラーニングサービスは、通常の実験エンティティと、トレーニングとスコアリング用の単一の実験ランを作成します。
スケジュールに沿ったスコアリング Experiment を含む ML サービス ml-service-with-scheduled-experiment-for-scoring
マシンラーニングサービスを作成するには、スコアリング用にスケジュールされた実験実行を使用してマシンラーニングインスタンスを公開します。これにより、トレーニング用に通常の実験エンティティが作成されます。 トレーニング実験の実行が生成され、スケジュールされたすべてのスコアリング実験の実行に使用されます。 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 サービスとして公開するには、トレーニングスケジュールとスコアリングスケジュールの両方を提供する必要があります。 この設定のマシンラーニングサービスを作成すると、トレーニングとスコアリングの両方のスケジュール済み実験エンティティも作成されます。 トレーニングとスコアリングのスケジュールが同じである必要はありません。 スコアリングジョブの実行中に、スケジュールに沿ったトレーニング 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
既存のML サービスを検索するには、/mlServicesにGET リクエストを行い、パスにML サービスの一意のidを指定します。
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。リクエスト
次のリクエストでは、既存のML サービスのトレーニングとスコアリングをスケジュールし、trainingScheduleおよびscoringSchedule個のキーと、それぞれのstartTimeおよびendTime個のキーおよびcron個のキーを追加します。
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"
}