Entrenar y evaluar un modelo con Sensei Machine Learning API

Este tutorial muestra cómo crear, entrenar y evaluar un modelo mediante llamadas a la API. Consulte este documento para obtener una lista detallada de la documentación de la API.

Requisitos previos

Siga las Importación de una fórmula empaquetada mediante la API para crear un motor, que es necesario para entrenar y evaluar un modelo mediante la API.

Siga las Tutorial de autenticación de API de Experience Platform para empezar a realizar llamadas de API.

En el tutorial, ahora debe tener los siguientes valores:

  • {ACCESS_TOKEN}: el valor del token de portador específico proporcionado después de la autenticación.

  • {ORG_ID}: Las credenciales de su organización se encuentran en la integración de Adobe Experience Platform única.

  • {API_KEY}: El valor de clave de API específico que se encuentra en la integración única de Adobe Experience Platform.

  • Vínculo a una imagen Docker de un servicio inteligente

Flujo de trabajo API

Vamos a consumir las API para crear una ejecución de experimento para formación. Para este tutorial, nos centraremos en los extremos de Motores, Instancias MLI y Experimentos. El siguiente gráfico describe la relación entre los tres y también introduce la idea de una ejecución y un modelo.

NOTE
Los términos "Motor", "MLInstance", "MLService", "Experimento" y "Modelo" se denominan como términos diferentes en la interfaz de usuario. Si viene de la interfaz de usuario de, la siguiente tabla muestra las diferencias.
Término de interfaz de usuario
Término de API
Fórmula
Motor
Modelo
MLInstance
Ejecuciones de formación
Experimento
Service
MLService

Crear una instancia de MLI

La creación de una MLInstance se puede realizar mediante la siguiente solicitud. Se va a utilizar el {ENGINE_ID} que se devolvió al crear un motor desde el Importación de una fórmula empaquetada mediante la API tutorial.

Solicitud

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: {ORG_ID}' \
  -d `{JSON_PAYLOAD}`

{ACCESS_TOKEN}: el valor del token de portador específico proporcionado después de la autenticación.
{ORG_ID}: Las credenciales de su organización se encuentran en la integración de Adobe Experience Platform única.
{API_KEY}: El valor de clave de API específico que se encuentra en la integración única de Adobe Experience Platform.
{JSON_PAYLOAD}: la configuración de nuestra instancia MLI. El ejemplo que utilizamos en nuestro tutorial se muestra aquí:

{
    "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"
                }
            ]
        }
    ]
}
NOTE
En el {JSON_PAYLOAD}, definimos los parámetros utilizados para el aprendizaje y la puntuación en la tasks matriz. El {ENGINE_ID} es el ID del motor que desea utilizar y la variable tag es un parámetro opcional utilizado para identificar la instancia.

La respuesta contiene el {INSTANCE_ID} que representa la MLInstance que se crea. Se pueden crear varias instancias XML de modelo con diferentes configuraciones.

Respuesta

{
    "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}: este ID que representa el motor en el que se crea la instancia MLI.
{INSTANCE_ID}: ID que representa la instancia de MLI.

Crear un experimento

Un científico de datos utiliza un experimento para llegar a un modelo de alto rendimiento durante la formación. Varios experimentos incluyen el cambio de conjuntos de datos, funciones, parámetros de aprendizaje y hardware. El siguiente es un ejemplo de creación de un experimento.

Solicitud

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: {ORG_ID}' \
  -H 'x-api-key: {API_KEY' \
  -d `{JSON PAYLOAD}`

{ORG_ID}: Las credenciales de su organización se encuentran en la integración de Adobe Experience Platform única.
{ACCESS_TOKEN}: el valor del token de portador específico proporcionado después de la autenticación.
{API_KEY}: El valor de clave de API específico que se encuentra en la integración única de Adobe Experience Platform.
{JSON_PAYLOAD}: objeto de experimento que se crea. El ejemplo que utilizamos en nuestro tutorial se muestra aquí:

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

{INSTANCE_ID}: ID que representa la instancia de MLI.

La respuesta de la creación Experimento tiene este aspecto.

Respuesta

{
    "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}: el ID que representa el experimento que acaba de crear.
{INSTANCE_ID}: ID que representa la instancia de MLI.

Crear un experimento programado para aprendizaje

Los experimentos programados se utilizan para que no tengamos que crear cada experimento individual que se ejecuta mediante una llamada de API. En su lugar, proporcionamos todos los parámetros necesarios durante la creación del experimento y cada ejecución se creará periódicamente.

Para indicar la creación de un experimento programado, se debe añadir un template en el cuerpo de la solicitud. Entrada template, se incluyen todos los parámetros necesarios para programar ejecuciones, como tasks, que indican qué acción, y schedule, que indica el tiempo de las ejecuciones programadas.

Solicitud

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: {ORG_ID}' \
  -H 'x-api-key: {API_KEY}' \
  -d '{JSON_PAYLOAD}`

{ORG_ID}: Las credenciales de su organización se encuentran en la integración de Adobe Experience Platform única.
{ACCESS_TOKEN}: el valor del token de portador específico proporcionado después de la autenticación.
{API_KEY}: El valor de clave de API específico que se encuentra en la integración única de Adobe Experience Platform.
{JSON_PAYLOAD}: conjunto de datos que se va a publicar. El ejemplo que utilizamos en nuestro tutorial se muestra aquí:

{
    "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"
        }
    }
}

Cuando creamos un experimento, el cuerpo, {JSON_PAYLOAD}, debe contener el mlInstanceId o el mlInstanceQuery parámetro. En este ejemplo, un experimento programado invocará una ejecución cada 20 minutos, definida en la variable cron parámetro, a partir de startTime hasta que endTime.

Respuesta

{
    "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}: el ID que representa el experimento.
{INSTANCE_ID}: ID que representa la instancia de MLI.

Crear una ejecución de experimento para formación

Con una entidad Experimento creada, se puede crear y ejecutar una ejecución de formación utilizando la llamada siguiente. Necesitará el {EXPERIMENT_ID} y exponga qué mode desea almacenar en déclencheur el cuerpo de la solicitud.

Solicitud

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: {ORG_ID}' \
  -H 'x-api-key: {API_KEY}' \
  -d '{JSON_PAYLOAD}'

{EXPERIMENT_ID}: el ID correspondiente al experimento al que desea dirigirse. Esto se puede encontrar en la respuesta al crear el experimento.
{ORG_ID}: Las credenciales de su organización se encuentran en la integración de Adobe Experience Platform única.
{ACCESS_TOKEN}: el valor del token de portador específico proporcionado después de la autenticación.
{API_KEY}: El valor de clave de API específico que se encuentra en la integración única de Adobe Experience Platform.
{JSON_PAYLOAD}: para crear una ejecución de formación, debe incluir lo siguiente en el cuerpo:

{
    "mode":"Train"
}

También puede anular los parámetros de configuración incluyendo una tasks matriz:

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

Recibirá la siguiente respuesta, que le hará saber la {EXPERIMENT_RUN_ID} y la configuración en tasks.

Respuesta

{
    "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}: ID que representa la ejecución del experimento.
{EXPERIMENT_ID}: ID que representa el experimento en el que se encuentra la ejecución del experimento.

Recuperar un estado de ejecución de experimento

El estado de la ejecución del experimento se puede consultar con la variable {EXPERIMENT_RUN_ID}.

Solicitud

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: {ORG_ID}' \
  -H 'x-api-key: {API_KEY}'

{EXPERIMENT_ID}: el ID que representa el experimento.
{EXPERIMENT_RUN_ID}: ID que representa la ejecución del experimento.
{ACCESS_TOKEN}: el valor del token de portador específico proporcionado después de la autenticación.
{ORG_ID}: Las credenciales de su organización se encuentran en la integración de Adobe Experience Platform única.
{API_KEY}: El valor de clave de API específico que se encuentra en la integración única de Adobe Experience Platform.

Respuesta

La llamada de GET proporcionará el estado en el state como se muestra a continuación:

{
    "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}: ID que representa la ejecución del experimento.
{EXPERIMENT_ID}: ID que representa el experimento en el que se encuentra la ejecución del experimento.

Además de las DONE estado, otros estados incluyen:

  • PENDING
  • RUNNING
  • FAILED

Para obtener más información, los registros detallados se encuentran en la tasklogs parámetro.

Recuperar el modelo entrenado

Para obtener el modelo entrenado creado anteriormente durante el aprendizaje, realizamos la siguiente solicitud:

Solicitud

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: {ORG_ID}'

{EXPERIMENT_RUN_ID}: ID correspondiente a la ejecución del experimento que desea segmentar. Esto se puede encontrar en la respuesta al crear la ejecución del experimento.
{ACCESS_TOKEN}: el valor del token de portador específico proporcionado después de la autenticación.
{ORG_ID}: Las credenciales de su organización se encuentran en la integración de Adobe Experience Platform única.

La respuesta representa el modelo entrenado que se creó.

Respuesta

{
    "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}: ID correspondiente al modelo.
{EXPERIMENT_ID}: el ID correspondiente al experimento en el que se ejecuta el experimento.
{EXPERIMENT_RUN_ID}: ID correspondiente a la ejecución del experimento.

Detener y eliminar un experimento programado

Si desea detener la ejecución de un experimento programado antes de su endTime, esto se puede hacer consultando una solicitud del DELETE a {EXPERIMENT_ID}

Solicitud

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

{EXPERIMENT_ID}: ID correspondiente al experimento.
{ACCESS_TOKEN}: el valor del token de portador específico proporcionado después de la autenticación.
{ORG_ID}: Las credenciales de su organización se encuentran en la integración de Adobe Experience Platform única.

NOTE
La llamada de API deshabilita la creación de nuevas ejecuciones de experimentos. Sin embargo, no detendrá la ejecución de ejecuciones de experimentos que ya se estén ejecutando.

A continuación se muestra la respuesta que notifica que el experimento se ha eliminado correctamente.

Respuesta

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

Pasos siguientes

Este tutorial trata sobre cómo consumir las API para crear un motor, un experimento, ejecuciones de experimentos programadas y modelos formados. En el próximo ejercicioAdemás, realizará predicciones mediante la puntuación de un nuevo conjunto de datos utilizando el modelo con el mayor rendimiento entrenado.

recommendation-more-help
cc79fe26-64da-411e-a6b9-5b650f53e4e9