Publier un modèle en tant que service à l’aide de la méthode Sensei Machine Learning API

Ce tutoriel décrit le processus de publication d’un modèle en tant que service à l’aide de la fonction Sensei Machine Learning API.

Prise en main

Ce tutoriel nécessite une compréhension pratique de Adobe Experience Platform Data Science Workspace. Avant de commencer ce tutoriel, veuillez consulter la section Présentation de Data Science Workspace pour une présentation de haut niveau du service.

Pour suivre ce tutoriel, vous devez disposer d’un moteur ML, d’une instance ML et d’une expérience. Pour savoir comment créer ces éléments dans l’API, consultez le tutoriel sur importation d’une recette empaquetée.

Enfin, avant de commencer ce tutoriel, consultez la section prise en main de la section du guide de développement pour obtenir des informations importantes à connaître afin d’effectuer avec succès des appels à la fonction Sensei Machine Learning API, y compris les en-têtes requis utilisés tout au long de ce tutoriel :

  • {ACCESS_TOKEN}
  • {ORG_ID}
  • {API_KEY}

Toutes les requêtes POST, PUT et PATCH requièrent un en-tête supplémentaire :

  • Content-Type: application/json

Termes clés

Le tableau suivant présente la terminologie courante utilisée dans ce tutoriel :

Terme
Définition
Instance de machine learning (instance ML)
Une instance d’une Sensei Moteur pour un client spécifique, contenant des données, des paramètres et des Sensei code.
Expérience
Entité parapluie permettant d’organiser des exécutions d’expériences de formation ou de notation ou les deux.
Expérience planifiée
Terme décrivant l’automatisation des exécutions d’expériences de formation ou de notation, régies par un calendrier défini par l’utilisateur.
Exécution de l’expérience
Une instance particulière d’expériences de formation ou de notation. Les exécutions d’expériences multiples provenant d’une expérience particulière peuvent différer des valeurs de jeu de données utilisées pour la formation ou la notation.
Modèle formé
Un modèle de machine learning créé par le processus d’expérimentation et d’ingénierie de caractéristiques avant d’arriver à un modèle validé, évalué et finalisé.
Modèle publié
Un modèle finalisé et versionné est arrivé après la formation, la validation et l’évaluation.
Service de machine learning (service ML)
Une instance ML déployée en tant que service pour prendre en charge les demandes de formation et de notation à la demande à l’aide d’un point de terminaison API. Un service ML peut également être créé à l’aide d’exécutions d’expériences formées existantes.

Création d’un service ML avec une exécution d’expérience de formation existante et une notation planifiée

Lorsque vous publiez une exécution d’expérience de formation en tant que service ML, vous pouvez planifier la notation en fournissant des détails sur l’exécution de l’expérience de notation dans le payload d’une requête de POST. Cela entraîne la création d’une entité Expérience planifiée pour la notation.

Format d’API

POST /mlServices

Requête

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 * * * *"
        }
      }'
Propriété
Description
mlInstanceId
Identification d’instance ML existante, l’exécution d’expérience de formation utilisée pour créer le service ML doit correspondre à cette instance ML particulière.
trainingExperimentId
Identification de l’expérience correspondant à l’identification de l’instance ML.
trainingExperimentRunId
Exécution d’une expérience de formation spécifique à utiliser pour la publication du service ML.
scoringDataSetId
Identification faisant référence au jeu de données spécifique à utiliser pour les exécutions d’expériences de notation planifiées.
scoringTimeframe
Valeur entière représentant les minutes pour la filtration des données à utiliser pour les exécutions d’expérience de notation. Par exemple, une valeur de 10080 signifie que les données des dernières 10 080 minutes ou 168 heures seront utilisées pour chaque exécution des expériences de notation planifiées. Notez qu’une valeur de 0 ne filtre pas les données, toutes les données du jeu de données sont utilisées pour la notation.
scoringSchedule
Contient des détails sur les exécutions d’expériences de notation planifiées.
scoringSchedule.startTime
Date et heure indiquant à quel moment commencer la notation.
scoringSchedule.endTime
Date et heure indiquant à quel moment commencer la notation.
scoringSchedule.cron
Valeur de cron indiquant l’intervalle par lequel noter les exécutions d’expérience.

Réponse

Une réponse réussie renvoie les détails du nouveau service ML, y compris son unique id et le scoringExperimentId pour son expérience de notation correspondante.

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

Création d’un service ML à partir d’une instance ML existante

En fonction de vos besoins et de votre cas d’utilisation spécifique, la création d’un service ML avec une instance ML est flexible en termes de planification des exécutions d’expériences de formation et de notation. Ce tutoriel décrit les cas spécifiques où :

Notez qu’un service ML peut être créé à l’aide d’une instance ML sans planifier d’expériences de formation ou de notation. Ces services ML créent des entités d’expérience ordinaires et une seule exécution d’expérience pour la formation et la notation.

Service ML avec une expérience planifiée pour la notation ml-service-with-scheduled-experiment-for-scoring

Vous pouvez créer un service ML en publiant une instance ML avec des exécutions d’expériences planifiées pour la notation, ce qui créera une entité d’expérience ordinaire pour la formation. Une exécution d’expérience de formation est générée et sera utilisée pour toutes les exécutions d’expériences de notation planifiées. Assurez-vous que vous disposez des valeurs mlInstanceId, trainingDataSetId et scoringDataSetId requises pour la création du service ML, qu’elles existent et qu’elles sont des valeurs valides.

Format d’API

POST /mlServices

Requête

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 * * * *"
        }
      }'
Clé JSON
Description
mlInstanceId
Identification de l’instance ML existante, représentant l’instance ML utilisée pour créer le service ML.
trainingDataSetId
Identification faisant référence au jeu de données spécifique à utiliser pour l’expérience de formation.
trainingTimeframe
Valeur entière représentant les minutes pour la filtration des données à utiliser pour les expériences de formation. Par exemple, une valeur de "10080" signifie que les données des dernières 10 080 minutes ou 168 heures seront utilisées pour l’exécution d’expérience de formation. Notez qu’une valeur de "0" ne filtre pas les données, toutes les données du jeu de données sont utilisées pour la formation.
scoringDataSetId
Identification faisant référence au jeu de données spécifique à utiliser pour les exécutions d’expériences de notation planifiées.
scoringTimeframe
Valeur entière représentant les minutes pour la filtration des données à utiliser pour les exécutions d’expérience de notation. Par exemple, une valeur de "10080" signifie que les données des dernières 10 080 minutes ou 168 heures seront utilisées pour chaque exécution des expériences de notation planifiées. Notez qu’une valeur de "0" ne filtre pas les données, toutes les données du jeu de données sont utilisées pour la notation.
scoringSchedule
Contient des détails sur les exécutions d’expériences de notation planifiées.
scoringSchedule.startTime
Date et heure indiquant à quel moment commencer la notation.
scoringSchedule.endTime
Date et heure indiquant à quel moment commencer la notation.
scoringSchedule.cron
Valeur de cron indiquant l’intervalle par lequel noter les exécutions d’expérience.

Réponse

Une réponse réussie renvoie les détails du service ML nouvellement créé. Cela inclut l’unique id, ainsi que la variable trainingExperimentId et scoringExperimentId pour ses expériences de formation et de notation correspondantes, respectivement.

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

Service ML avec des expériences planifiées pour la formation et la notation ml-service-with-scheduled-experiments-for-training-and-scoring

Pour publier une instance ML existante en tant que service ML avec des exécutions d’expériences de formation et de notation planifiées, vous devez fournir des calendriers de formation et de notation. Lorsqu’un service ML de cette configuration est créé, des entités d’expérience planifiées pour la formation et la notation sont également créées. Notez que les calendriers de formation et de notation ne doivent pas nécessairement être les mêmes. Au cours de l’exécution d’une tâche de notation, le dernier modèle formé produit par les exécutions d’expériences de formation programmée est récupéré et utilisé pour l’exécution de notation planifiée.

Format d’API

POST /mlServices

Requête

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 * * * *"
        }
      }'
Clé JSON
Description
mlInstanceId
Identification de l’instance ML existante, représentant l’instance ML utilisée pour créer le service ML.
trainingDataSetId
Identification faisant référence au jeu de données spécifique à utiliser pour l’expérience de formation.
trainingTimeframe
Valeur entière représentant les minutes pour la filtration des données à utiliser pour les expériences de formation. Par exemple, une valeur de "10080" signifie que les données des dernières 10 080 minutes ou 168 heures seront utilisées pour l’exécution d’expérience de formation. Notez qu’une valeur de "0" ne filtre pas les données, toutes les données du jeu de données sont utilisées pour la formation.
scoringDataSetId
Identification faisant référence au jeu de données spécifique à utiliser pour les exécutions d’expériences de notation planifiées.
scoringTimeframe
Valeur entière représentant les minutes pour la filtration des données à utiliser pour les exécutions d’expérience de notation. Par exemple, une valeur de "10080" signifie que les données des dernières 10 080 minutes ou 168 heures seront utilisées pour chaque exécution des expériences de notation planifiées. Notez qu’une valeur de "0" ne filtre pas les données, toutes les données du jeu de données sont utilisées pour la notation.
trainingSchedule
Contient des détails sur les exécutions d’expériences de formation planifiées.
scoringSchedule
Contient des détails sur les exécutions d’expériences de notation planifiées.
scoringSchedule.startTime
Date et heure indiquant à quel moment commencer la notation.
scoringSchedule.endTime
Date et heure indiquant à quel moment commencer la notation.
scoringSchedule.cron
Valeur de cron indiquant l’intervalle par lequel noter les exécutions d’expérience.

Réponse

Une réponse réussie renvoie les détails du service ML nouvellement créé. Cela inclut l’unique id, ainsi que la variable trainingExperimentId et scoringExperimentId de ses expériences de formation et de notation correspondantes, respectivement. Dans l’exemple de réponse ci-dessous, la présence de trainingSchedule et scoringSchedule suggère que les entités d’expérience pour la formation et la notation sont des expériences planifiées.

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

Recherche d’un service ML retrieving-ml-services

Vous pouvez rechercher un service ML existant en effectuant une GET de /mlServices et en fournissant les id du service ML dans le chemin.

Format d’API

GET /mlServices/{SERVICE_ID}
Paramètre
Description
{SERVICE_ID}
L’unique id du service ML que vous recherchez.

Requête

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}'

Réponse

Une réponse réussie renvoie les détails du service 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"
}
NOTE
La récupération de différents services ML peut renvoyer une réponse avec plus ou moins de paires clé-valeur. La réponse ci-dessus est une représentation d’un service ML avec des exécutions d’expériences de notation et de formation planifiées.

Planification de la formation ou de la notation

Si vous souhaitez planifier la notation et la formation sur un service ML déjà publié, vous pouvez le faire en mettant à jour le service ML existant avec une PUT requête sur /mlServices.

Format d’API

PUT /mlServices/{SERVICE_ID}
Paramètre
Description
{SERVICE_ID}
L’unique id du service ML que vous mettez à jour.

Requête

La requête suivante planifie la formation et la notation pour un service ML existant en ajoutant la variable trainingSchedule et scoringSchedule clés avec leurs startTime, endTime, et cron clés.

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 * * * *"
        }
      }'
WARNING
Ne tentez pas de modifier la variable startTime sur les tâches de formation et de notation planifiées existantes. Si le modèle startTime doit être modifié, pensez à publier le même modèle et à reprogrammer les tâches de formation et de notation.

Réponse

Une réponse réussie renvoie les détails du service ML mis à jour.

{
  "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"
}
recommendation-more-help
cc79fe26-64da-411e-a6b9-5b650f53e4e9