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