Publish ein Modell als Dienst mit dem Sensei Machine Learning API
In diesem Tutorial wird der Prozess zum Veröffentlichen eines Modells als Dienst mit dem Wert Sensei Machine Learning API beschrieben.
Erste Schritte
Dieses Tutorial setzt ein Verständnis von Adobe Experience Platform Data Science Workspace voraus. Bevor Sie mit diesem Tutorial beginnen, lesen Sie die Übersicht über Data Science Workspace , um eine allgemeine Einführung in den Dienst zu erhalten.
Um diesem Tutorial zu folgen, benötigen Sie eine vorhandene ML-Engine, MLInstance und ein vorhandenes Experiment. Anweisungen zum Erstellen dieser Rezepte in der API finden Sie im Tutorial zum Importieren eines gepackten Rezepts.
Bevor Sie mit diesem Tutorial beginnen, lesen Sie abschließend den Abschnitt Erste Schritte des Entwicklerhandbuchs, um wichtige Informationen zu erhalten, die Sie benötigen, um die Sensei Machine Learning-API erfolgreich aufrufen zu können, einschließlich der in diesem Tutorial verwendeten erforderlichen Kopfzeilen:
{ACCESS_TOKEN}
{ORG_ID}
{API_KEY}
Für alle POST-, PUT- und PATCH-Anfragen ist eine zusätzliche Kopfzeile erforderlich:
- Content-Type: application/json
Schlüsselbegriffe
In der folgenden Tabelle sind einige häufig verwendete Begriffe in diesem Tutorial aufgeführt:
Erstellen eines ML-Dienstes mit einem vorhandenen Schulungs-Experimentablauf und geplanter Auswertung
Wenn Sie einen Schulungs-Experimentablauf als ML-Dienst veröffentlichen, können Sie die Auswertung planen, indem Sie Details für den Auswertungs-Experimentablauf angeben, um die Payload einer POST-Anfrage auszuführen. Dies führt zur Erstellung einer geplanten Experiment-Entität für die Auswertung.
API-Format
POST /mlServices
Anfrage
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
verwendet, was Daten aus den letzten 10080 Minuten oder 168 Stunden bedeutet. Beachten Sie, dass mit dem Wert von 0
keine Daten gefiltert werden. Alle Daten im Datensatz werden für die Auswertung verwendet.scoringSchedule
scoringSchedule.startTime
scoringSchedule.endTime
scoringSchedule.cron
Antwort
Eine erfolgreiche Antwort gibt die Details des neu erstellten ML-Dienstes zurück, einschließlich des eindeutigen id
und des scoringExperimentId
für das entsprechende Scoring-Experiment.
{
"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"
}
Erstellen eines ML-Dienstes aus einer vorhandenen MLInstance
Je nach Anwendungsfall und Anforderungen ist das Erstellen eines ML-Dienstes mit einer MLInstance hinsichtlich der Planung von Schulungs- und Auswertungs-Experimentabläufen flexibel. In diesem Tutorial werden die spezifischen Fälle behandelt, in denen:
Beachten Sie, dass ein ML-Dienst mit einer MLInstance erstellt werden kann, ohne Schulungs- oder Auswertungs-Experimente zu planen. Solche ML-Dienste erstellen normale Experiment-Entitäten und einen einzelnen Experimentablauf für Schulung und Auswertung.
ML-Dienst mit geplantem Experiment für die Auswertung ml-service-with-scheduled-experiment-for-scoring
Sie können einen ML-Dienst erstellen, indem Sie eine MLInstance mit geplanten Experimentabläufen für die Auswertung veröffentlichen, wodurch eine normale Experiment-Entität für die Schulung erstellt wird. Ein Schulungs-Experimentablauf wird generiert und für alle geplanten Auswertungs-Experimentabläufe verwendet. Vergewissern Sie sich, dass Sie über mlInstanceId
, trainingDataSetId
und scoringDataSetId
verfügen, die für das Erstellen des ML-Dienstes erforderlich sind und dass diese vorliegen und gültige Werte sind.
API-Format
POST /mlServices
Anfrage
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"
verwendet, was Daten aus den letzten 10080 Minuten oder 168 Stunden bedeutet. Beachten Sie, dass mit dem Wert von "0"
keine Daten gefiltert werden. Alle Daten im Datensatz werden für die Schulung verwendet.scoringDataSetId
scoringTimeframe
"10080"
verwendet, was Daten aus den letzten 10080 Minuten oder 168 Stunden bedeutet. Beachten Sie, dass mit dem Wert von "0"
keine Daten gefiltert werden. Alle Daten im Datensatz werden für die Auswertung verwendet.scoringSchedule
scoringSchedule.startTime
scoringSchedule.endTime
scoringSchedule.cron
Antwort
Eine erfolgreiche Antwort gibt die Details des neu erstellten ML-Dienstes zurück. Dazu gehören die eindeutige id
des Dienstes sowie die trainingExperimentId
und scoringExperimentId
für die entsprechenden Schulungs- und Auswertungsexperimente.
{
"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-Dienst mit geplanten Experimenten für Schulung und Auswertung ml-service-with-scheduled-experiments-for-training-and-scoring
Um eine vorhandene MLInstance als ML-Dienst mit geplanten Schulungs- und Auswertungs-Experimentabläufen zu veröffentlichen, müssen Sie Schulungs- und Auswertungszeitpläne bereitstellen. Wenn ein ML-Dienst dieser Konfiguration erstellt wird, werden auch geplante Experiment-Entitäten für Schulung und Auswertung erstellt. Beachten Sie, dass Schulungs- und Auswertungszeitpläne nicht identisch sein müssen. Während der Ausführung eines Auswertungsauftrags wird das neueste geschulte Modell, das von geplanten Schulungs-Experimentabläufen produziert wird, abgerufen und für den geplanten Auswertungsablauf verwendet.
API-Format
POST /mlServices
Anfrage
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"
verwendet, was Daten aus den letzten 10080 Minuten oder 168 Stunden bedeutet. Beachten Sie, dass mit dem Wert von "0"
keine Daten gefiltert werden. Alle Daten im Datensatz werden für die Schulung verwendet.scoringDataSetId
scoringTimeframe
"10080"
verwendet, was Daten aus den letzten 10080 Minuten oder 168 Stunden bedeutet. Beachten Sie, dass mit dem Wert von "0"
keine Daten gefiltert werden. Alle Daten im Datensatz werden für die Auswertung verwendet.trainingSchedule
scoringSchedule
scoringSchedule.startTime
scoringSchedule.endTime
scoringSchedule.cron
Antwort
Eine erfolgreiche Antwort gibt die Details des neu erstellten ML-Dienstes zurück. Dazu gehören die eindeutige id
des Dienstes sowie die trainingExperimentId
und scoringExperimentId
der zugehörigen Schulungs- und Auswertungsexperimente. In der folgenden Beispielantwort deutet das Vorhandensein von trainingSchedule
und scoringSchedule
darauf hin, dass die Experiment-Entitäten für Schulung und Auswertung geplante Experimente sind.
{
"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"
}
Suchen nach einem ML-Dienst retrieving-ml-services
Sie können einen vorhandenen ML-Dienst nachschlagen, indem Sie eine GET
-Anfrage an /mlServices
senden und im Pfad die eindeutige id
des ML-Dienstes angeben.
API-Format
GET /mlServices/{SERVICE_ID}
{SERVICE_ID}
id
des ML-Dienstes, den Sie suchen.Anfrage
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}'
Antwort
Eine erfolgreiche Antwort gibt die Details des ML-Dienstes zurück.
{
"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"
}
Planen von Schulungen oder Auswertungen
Wenn Sie die Auswertung und Schulung für einen bereits veröffentlichten ML-Dienst planen möchten, können Sie dies tun, indem Sie den vorhandenen ML-Dienst mit einer PUT
-Anfrage für /mlServices
aktualisieren.
API-Format
PUT /mlServices/{SERVICE_ID}
{SERVICE_ID}
id
des ML-Dienstes, den Sie aktualisieren.Anfrage
Die folgende Anfrage plant das Trainieren und Scoring für einen vorhandenen ML-Dienst, indem die Tasten trainingSchedule
und scoringSchedule
mit ihren jeweiligen Tasten startTime
, endTime
und cron
hinzugefügt werden.
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
für bestehende geplante Trainings- und Scoring-Aufträge zu ändern. Wenn die startTime
geändert werden muss, sollten Sie erwägen, dasselbe Modell zu veröffentlichen und die Schulungs- und Auswertungsaufträge umzuplanen.Antwort
Eine erfolgreiche Antwort gibt die Details des aktualisierten ML-Dienstes zurück.
{
"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"
}