Schulen und Auswerten eines Modells mithilfe der APISensei Machine Learning

In diesem Tutorial erfahren Sie, wie Sie ein Modell mithilfe von API-Aufrufen erstellen, dazu schulen und auswerten. Eine detaillierte Liste der API-Dokumentation finden Sie in diesem Dokument.

Voraussetzungen

Folgen Sie dem Importieren eines verpackten Rezepts mit der API zum Erstellen einer Engine, die zur Schulung und Auswertung für ein Modell mit der API erforderlich ist.

Folgen Sie dem Tutorial Experience Platform API authentication tutorial, um Beginn API-Aufrufe durchzuführen.

Sie sollten nun die folgenden Werte aus dem Tutorial haben:

  • {ACCESS_TOKEN}: Ihr spezifischer Inhaber-Token-Wert, der nach der Authentifizierung bereitgestellt wird.

  • {IMS_ORG}: Ihre IMS-Organisationsberechtigungen in Ihrer eindeutigen Adobe Experience Platform-Integration.

  • {API_KEY}: Ihr spezifischer API-Schlüsselwert in Ihrer eindeutigen Adobe Experience Platform-Integration.

  • Link zu einem Docker-Bild eines intelligenten Dienstes

API-Workflow

Wir verbrauchen die APIs, um einen Experimentablauf zu Schulungszwecken zu erstellen. Für dieses Tutorial konzentrieren wir uns auf die Endpunkte Engines, MLInstances und Experiments. Das folgende Diagramm zeigt die Beziehung zwischen diesen drei Punkten und stellt auch die Idee eines Ablaufs und eines Modells vor.

HINWEIS

Die Begriffe „Engine“, „MLInstance“, „MLService“, „Experiment“ und „Modell“ werden in der Benutzeroberfläche als unterschiedliche Begriffe bezeichnet. Wenn Sie von der Benutzeroberfläche kommen, werden die Unterschiede in der folgenden Tabelle zugeordnet.

UI-Begriff API-Begriff
Rezept Engine
Modell MLInstance
Schulungsabläufe Experiment
Service MLService

Erstellen einer MLInstance

Das Erstellen einer MLInstance kann mit der folgenden Anfrage durchgeführt werden. Sie verwenden die {ENGINE_ID}, die beim Erstellen einer Engine aus dem Importieren eines verpackten Rezepts mithilfe des API-Tutorial zurückgegeben wurde.

Anfrage

curl -X POST \
  https://platform.adobe.io/data/sensei/mlInstances \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'Content-Type: application/vnd.adobe.platform.sensei+json;profile=mlInstance.v1.json' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {IMS_ORG}' \
  -d `{JSON_PAYLOAD}`

{ACCESS_TOKEN}: Ihr spezifischer Inhaber-Token-Wert, der nach der Authentifizierung bereitgestellt wird.
{IMS_ORG}: Ihre IMS-Organisationsberechtigungen in Ihrer eindeutigen Adobe Experience Platform-Integration.
{API_KEY}: Ihr spezifischer API-Schlüsselwert in Ihrer eindeutigen Adobe Experience Platform-Integration.
{JSON_PAYLOAD}: Die Konfiguration unserer MLInstance. Das Beispiel, das wir in unserem Tutorial verwenden, ist hier dargestellt:

{
    "name": "Retail - Instance",
    "description": "Instance for ML Instance",
    "engineId": "{ENGINE_ID}",
    "createdBy": {
        "displayName": "John Doe",
        "userId": "johnd"
    },
    "tags": {
        "purpose": "tutorial"
    },
    "tasks": [
        {
            "name": "train",
            "parameters": [
                {
                    "key": "numFeatures",
                    "value": "10"
                },
                {
                    "key": "maxIter",
                    "value": "2"
                },
                {
                    "key": "regParam",
                    "value": "0.15"
                },
                {
                    "key": "trainingDataLocation",
                    "value": "sample_training_data.csv"
                }
            ]
        },
        {
            "name": "score",
            "parameters": [
                {
                    "key": "scoringDataLocation",
                    "value": "sample_scoring_data.csv"
                },
                {
                    "key": "scoringResultsLocation",
                    "value": "scoring_results.net"
                }
            ]
        }
    ]
}
HINWEIS

Im {JSON_PAYLOAD} definieren wir Parameter, die für Schulungen und Auswertungen im tasks Array verwendet werden. Die {ENGINE_ID} ist die ID der Engine, die Sie verwenden möchten, und das tag-Feld ist ein optionaler Parameter, der zur Identifizierung der Instanz verwendet wird.

Die Antwort enthält die {INSTANCE_ID}, die die erstellte MLInstanz darstellt. Es können mehrere MLInstances mit verschiedenen Konfigurationen erstellt werden.

Antwort

{
    "id": "{INSTANCE_ID}",
    "name": "Retail - Instance",
    "description": "Instance for ML Instance",
    "engineId": "{ENGINE_ID}",
    "created": "2018-21-21T11:11:11.111Z",
    "createdBy": {
        "displayName": "John Doe",
        "userId": "johnd"
    },
    "updated": "2018-21-01T11:11:11.111Z",
    "deleted": false,
    "tags": {
        "purpose": "tutorial"
    },
    "tasks": [
        {
            "name": "train",
            "parameters": [...]
        },
        {
            "name": "score",
            "parameters": [...]
        }
    ]
}

{ENGINE_ID}: Diese ID, die die Engine darstellt, unter der die MLInstance erstellt wird.
{INSTANCE_ID}: Die ID, die die MLInstance darstellt.

Erstellen eines Experiments

Ein Experiment wird von einem Datenwissenschaftler verwendet, um während der Schulung ein leistungsfähiges Modell zu erreichen. Zu den verschiedenen Experimenten gehören das Ändern von Datensätzen, Funktionen, Lernparametern und Hardware. Im Folgenden finden Sie ein Beispiel zum Erstellen eines Experiments.

Anfrage

curl -X POST \
  https://platform.adobe.io/data/sensei/experiments \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'Content-Type: application/vnd.adobe.platform.sensei+json;profile=experiment.v1.json' \
  -H 'x-gw-ims-org-id: {IMS_ORG}' \
  -H 'x-api-key: {API_KEY' \
  -d `{JSON PAYLOAD}`

{IMS_ORG}: Ihre IMS-Organisationsberechtigungen in Ihrer eindeutigen Adobe Experience Platform-Integration.
{ACCESS_TOKEN}: Ihr spezifischer Inhaber-Token-Wert, der nach der Authentifizierung bereitgestellt wird.
{API_KEY}: Ihr spezifischer API-Schlüsselwert in Ihrer eindeutigen Adobe Experience Platform-Integration.
{JSON_PAYLOAD}: Erstelltes Experimentobjekt. Das Beispiel, das wir in unserem Tutorial verwenden, ist hier dargestellt:

{
    "name": "Experiment for Retail ",
    "mlInstanceId": "{INSTANCE_ID}",
    "tags": {
        "test": "guide"
    }
}

{INSTANCE_ID}: Die ID, die die MLInstance darstellt.

Die Antwort aus der Experimenterstellung sieht wie folgt aus.

Antwort

{
    "id": "{EXPERIMENT_ID}",
    "name": "Experiment for Retail",
    "mlInstanceId": "{INSTANCE_ID}",
    "created": "2018-01-01T11:11:11.111Z",
    "updated": "2018-01-01T11:11:11.111Z",
    "deleted": false,
    "tags": {
        "test": "guide"
    }
}

{EXPERIMENT_ID}: Die ID, die das soeben erstellte Experiment darstellt.
{INSTANCE_ID}: Die ID, die die MLInstance darstellt.

Erstellen eines geplanten Experiments zu Schulungszwecken

Geplante Experimente werden verwendet, damit nicht jeder einzelne Experimentablauf über einen API-Aufruf erstellt werden muss. Stattdessen stellen wir alle notwendigen Parameter während der Experimenterstellung bereit und jeder Ablauf wird regelmäßig erstellt.

Um die Erstellung eines geplanten Experiments anzuzeigen, müssen wir einen template-Abschnitt im Text der Anfrage hinzufügen. In der template sind alle erforderlichen Parameter für die Planung von Abläufen enthalten, z. B. tasks, die angeben, welche Aktion ausgeführt werden soll, und ein schedule, der den Zeitpunkt der geplanten Abläufe angibt.

Anfrage

curl -X POST \
  https://platform.adobe.io/data/sensei/experiments \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'Content-Type: application/vnd.adobe.platform.sensei+json;profile=experiment.v1.json' \
  -H 'x-gw-ims-org-id: {IMS_ORG}' \
  -H 'x-api-key: {API_KEY}' \
  -d '{JSON_PAYLOAD}`

{IMS_ORG}: Ihre IMS-Organisationsberechtigungen in Ihrer eindeutigen Adobe Experience Platform-Integration.
{ACCESS_TOKEN}: Ihr spezifischer Inhaber-Token-Wert, der nach der Authentifizierung bereitgestellt wird.
{API_KEY}: Ihr spezifischer API-Schlüsselwert in Ihrer eindeutigen Adobe Experience Platform-Integration.
{JSON_PAYLOAD}: Zu veröffentlichender Datensatz. Das Beispiel, das wir in unserem Tutorial verwenden, ist hier dargestellt:

{
    "name": "Experiment for Retail",
    "mlInstanceId": "{INSTANCE_ID}",
    "template": {
        "tasks": [{
            "name": "train",
            "parameters": [
                   {
                        "value": "1000",
                        "key": "numFeatures"
                    }
            ],
            "specification": {
                "type": "SparkTaskSpec",
                "executorCores": 5,
                "numExecutors": 5
            }
        }],
        "schedule": {
            "cron": "*/20 * * * *",
            "startTime": "2018-11-11",
            "endTime": "2019-11-11"
        }
    }
}

Wenn wir ein Experiment erstellen, sollte der Text, {JSON_PAYLOAD}, entweder den mlInstanceId- oder den mlInstanceQuery-Parameter enthalten. In diesem Beispiel ruft ein geplantes Experiment alle 20 Minuten einen Ablauf auf, der im cron-Parameter festgelegt wird, beginnend mit der startTime bis zur endTime.

Antwort

{
    "id": "{EXPERIMENT_ID}",
    "name": "Experiment for Retail",
    "mlInstanceId": "{INSTANCE_ID}",
    "created": "2018-11-11T11:11:11.111Z",
    "updated": "2018-11-11T11:11:11.111Z",
    "deleted": false,
    "workflowId": "endid123_0379bc0b_8f7e_4706_bcd9_1a2s3d4f5g_abcdf",
    "template": {
        "tasks": [
            {
                "name": "train",
                "parameters": [...],
                "specification": {
                    "type": "SparkTaskSpec",
                    "executorCores": 5,
                    "numExecutors": 5
                }
            }
        ],
        "schedule": {
            "cron": "*/20 * * * *",
            "startTime": "2018-07-04",
            "endTime": "2018-07-06"
        }
    }
}

{EXPERIMENT_ID}: Die ID, die das Experiment darstellt.
{INSTANCE_ID}: Die ID, die die MLInstance darstellt.

Erstellen eines Experimentablaufs für Schulungszwecke

Wenn eine Experiment-Entität erstellt wurde, kann ein Schulungsablauf mithilfe des nachfolgenden Aufrufs erstellt und ausgeführt werden. Sie benötigen die {EXPERIMENT_ID} und geben an, welchen mode Sie im Anfragetext auslösen möchten.

Anfrage

curl -X POST \
  https://platform.adobe.io/data/sensei/experiments/{EXPERIMENT_ID}/runs \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'Content-Type: application/vnd.adobe.platform.sensei+json;profile=experimentRun.v1.json' \
  -H 'x-gw-ims-org-id: {IMS_ORG}' \
  -H 'x-api-key: {API_KEY}' \
  -d '{JSON_PAYLOAD}'

{EXPERIMENT_ID}: Die dem Zielexperiment entsprechende Kennung. Diese finden Sie in der Antwort beim Erstellen Ihres Experiments.
{IMS_ORG}: Ihre IMS-Organisationsberechtigungen in Ihrer eindeutigen Adobe Experience Platform-Integration.
{ACCESS_TOKEN}: Ihr spezifischer Inhaber-Token-Wert, der nach der Authentifizierung bereitgestellt wird.
{API_KEY}: Ihr spezifischer API-Schlüsselwert in Ihrer eindeutigen Adobe Experience Platform-Integration.
{JSON_PAYLOAD}: Um einen Schulungsablauf zu erstellen, müssen Sie Folgendes in den Text einschließen:

{
    "mode":"Train"
}

Sie können die Konfigurationsparameter auch außer Kraft setzen, indem Sie ein tasks-Array einfügen:

{
   "mode":"Train",
   "tasks": [
        {
           "name": "train",
           "parameters": [
                {
                   "key": "numFeatures",
                   "value": "2"
                }
            ]
        }
    ]
}

Sie erhalten die folgende Antwort, die Sie über die {EXPERIMENT_RUN_ID} und die Konfiguration unter tasks informiert.

Antwort

{
    "id": "{EXPERIMENT_RUN_ID}",
    "mode": "train",
    "experimentId": "{EXPERIMENT_ID}",
    "created": "2018-01-01T11:11:11.903Z",
    "updated": "2018-01-01T11:11:11.903Z",
    "deleted": false,
    "tasks": [
        {
            "name": "Train",
            "parameters": [...]
        }
    ]
}

{EXPERIMENT_RUN_ID}: Die ID, die den Experimentablauf darstellt.
{EXPERIMENT_ID}: Die ID, die das Experiment darstellt, unter dem sich der Experimentablauf befindet.

Abrufen eines Experimentablauf-Status

Der Status des Experimentablaufs kann mit der {EXPERIMENT_RUN_ID} abgefragt werden.

Anfrage

curl -X GET \
  https://platform.adobe.io/data/sensei/experiments/{EXPERIMENT_ID}/runs/{EXPERIMENT_RUN_ID}/status \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-gw-ims-org-id: {IMS_ORG}' \
  -H 'x-api-key: {API_KEY}'

{EXPERIMENT_ID}: Die ID, die das Experiment darstellt.
{EXPERIMENT_RUN_ID}: Die ID, die den Experimentablauf darstellt.
{ACCESS_TOKEN}: Ihr spezifischer Bearer-Tokenwert, der nach der Authentifizierung bereitgestellt wird.
{IMS_ORG}: Ihre IMS-Organisationsberechtigungen in Ihrer eindeutigen Adobe Experience Platform-Integration.
{API_KEY}: Ihr spezifischer API-Schlüsselwert in Ihrer eindeutigen Adobe Experience Platform-Integration.

Antwort

Der GET-Aufruf stellt den Status im state-Parameter wie folgt bereit:

{
    "id": "{EXPERIMENT_ID}",
    "name": "RunStatus for experimentRunId {EXPERIMENT_RUN_ID}",
    "experimentRunId": "{EXPERIMENT_RUN_ID}",
    "deleted": false,
    "status": {
        "tasks": [
            {
                "id": "{MODEL_ID}",
                "state": "DONE",
                "tasklogs": [
                    {
                        "name": "execution",
                        "url": "https://mlbaprod1sapwd7jzid.file.core.windows.net/..."
                    },
                    {
                        "name": "stderr",
                        "url": "https://mlbaprod1sapwd7jzid.file.core.windows.net/..."
                    },
                    {
                        "name": "stdout",
                        "url": "https://mlbaprod1sapwd7jzid.file.core.windows.net/..."
                    }
                ]
            }
        ]
    }
}

{EXPERIMENT_RUN_ID}: Die ID, die den Experimentablauf darstellt.
{EXPERIMENT_ID}: Die ID, die das Experiment darstellt, unter dem sich der Experimentablauf befindet.

Neben dem Status DONE gibt es auch folgende Status:

  • PENDING
  • RUNNING
  • FAILED

Um weitere Informationen zu erhalten, finden Sie die detaillierten Protokolle unter dem Parameter tasklogs.

Abrufen des Schulungsmodells

Um das oben erstellte Schulungsmodell während der Schulung zu erhalten, stellen wir folgende Anfrage:

Anfrage

curl -X GET \
  'https://platform.adobe.io/data/sensei/models/?property=experimentRunId=={EXPERIMENT_RUN_ID}' \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-gw-ims-org-id: {IMS_ORG}'

{EXPERIMENT_RUN_ID}: Die dem Zielexperimentablauf entsprechende Kennung. Diese finden Sie in der Antwort beim Erstellen des Experimentablaufs.
{ACCESS_TOKEN}: Ihr spezifischer Bearer-Tokenwert, der nach der Authentifizierung bereitgestellt wird.
{IMS_ORG}: Ihre IMS-Organisationsberechtigungen in Ihrer eindeutigen Adobe Experience Platform-Integration.

Die Antwort stellt das Schulungsmodell dar, das erstellt wurde.

Antwort

{
    "children": [
        {
            "id": "{MODEL_ID}",
            "name": "Tutorial trained Model",
            "experimentId": "{EXPERIMENT_ID}",
            "experimentRunId": "{EXPERIMENT_RUN_ID}",
            "description": "trained model for ID",
            "modelArtifactUri": "wasb://test-models@mlpreprodstorage.blob.core.windows.net/{MODEL_ID}",
            "created": "2018-01-01T11:11:11.011Z",
            "updated": "2018-01-01T11:11:11.011Z",
            "deleted": false
        }
    ],
    "_page": {
        "property": "ExperimentRunId=={EXPERIMENT_RUN_ID},deleted!=true",
        "count": 1
    }
}

{MODEL_ID}: Die dem Modell entsprechende ID.
{EXPERIMENT_ID}: Die Kennung, die dem Experiment entspricht, unter dem sich der Experimentablauf befindet.
{EXPERIMENT_RUN_ID}: Die Kennung, die dem Experimentablauf entspricht.

Beenden und Löschen eines geplanten Experiments

Wenn Sie die Ausführung eines geplanten Experiments vor dessen endTime abbrechen möchten, können Sie eine DELETE-Anfrage an die {EXPERIMENT_ID} senden

Anfrage

curl -X DELETE \
  'https://platform.adobe.io/data/sensei/experiments/{EXPERIMENT_ID}' \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-gw-ims-org-id: {IMS_ORG}'

{EXPERIMENT_ID}: Die Kennung, die dem Experiment entspricht.
{ACCESS_TOKEN}: Ihr spezifischer Bearer-Tokenwert, der nach der Authentifizierung bereitgestellt wird.
{IMS_ORG}: Ihre IMS-Organisationsberechtigungen in Ihrer eindeutigen Adobe Experience Platform-Integration.

HINWEIS

Der API-Aufruf deaktiviert die Erstellung neuer Experimentabläufe. Die Ausführung bereits ausgeführter Experimentabläufe wird jedoch nicht beendet.

Im Folgenden finden Sie die Antwort, die darauf hinweist, dass das Experiment erfolgreich gelöscht wurde.

Antwort

{
    "title": "Success",
    "status": 200,
    "detail": "Experiment successfully deleted"
}

Nächste Schritte

In diesem Tutorial wurde erläutert, wie die APIs genutzt werden können, um eine Engine, ein Experiment, geplante Experimentabläufe und Schulungsmodelle zu erstellen. In der nächsten Übung werden Sie Prognosen erstellen, indem Sie einen neuen Datensatz mit dem leistungsfähigsten Schulungsmodell auswerten.

Auf dieser Seite