Show Menu
SUJETS×

Publication d’un modèle en tant que service (API)

Ce didacticiel porte sur le processus de publication d'un modèle en tant que service à l'aide de l'API d'apprentissage automatique Sensei.

Prise en main

Ce didacticiel nécessite une bonne compréhension d’Adobe Experience Platform Data Science Workspace. Avant de commencer ce didacticiel, veuillez consulter la présentation de Data Science Workspace pour une présentation générale du service.
Pour suivre ce didacticiel, vous devez disposer d'un moteur ML, d'une instance ML et d'une expérience. Pour connaître les étapes de création de ces recettes dans l'API, consultez le didacticiel sur l' importation d'une recette assemblée.
Enfin, avant de commencer ce tutoriel, veuillez consulter la section Prise en main du guide du développeur pour obtenir des informations importantes que vous devez connaître pour pouvoir invoquer l'API d'apprentissage automatique Sensei, y compris les en-têtes requis utilisés dans ce tutoriel :
  • {ACCESS_TOKEN}
  • {IMS_ORG}
  • {API_KEY}
Toutes les requêtes POST, PUT et PATCH nécessitent un en-tête supplémentaire :
  • Content-Type : application/json

Termes clés

Le tableau suivant décrit la terminologie utilisée dans ce tutoriel :
Terme
Définition
Instance d'apprentissage automatique (instance ML)
Instance d’un moteur Sensei pour un client particulier, contenant des données, des paramètres et un code Sensei spécifiques.
Expérience
Entité parapluie permettant d’organiser des exécutions d’expériences de formation, des exécutions d’expériences de score 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
Un cas particulier d'expériences de formation ou de notation. Les exécutions d’expériences multiples 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 d'apprentissage automatique 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 d'apprentissage automatique (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 entraînées existantes.

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

Lorsque vous publiez une expérience de formation Exécuter en tant que service ML, vous pouvez planifier la notation en fournissant des détails pour l’expérience de score Exécutez la charge utile d’une demande 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: {IMS_ORG}'
  -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 score planifiées.
scoringTimeframe
Valeur Entier représentant les minutes de filtrage des données à utiliser pour les exécutions d’expériences de score. Par exemple, une valeur de 10080 moyenne pour les données des 10 080 dernières minutes ou 168 heures sera utilisée pour chaque exécution d’expérience de score planifiée. 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 score planifiées.
scoringSchedule.startTime
Date/heure indiquant à quel moment début le score.
scoringSchedule.endTime
Date/heure indiquant à quel moment début le score.
scoringSchedule.cron
Valeur cron indiquant l’intervalle de score des 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 score 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 votre cas d'utilisation et de vos besoins spécifiques, la création d'un service ML avec une instance ML est flexible en termes de planification de la formation et de notation des exécutions d'expériences. Ce didacticiel porte sur les cas spécifiques où :
Notez qu’un service ML peut être créé à l’aide d’une instance ML sans avoir à programmer d’expériences de formation ou de notation. Ces services ML créeront des entités d'expérience ordinaires et une seule exécution d'expérience pour la formation et la notation.

Service ML avec expérience planifiée pour le score

Vous pouvez créer un service ML en publiant une instance ML avec des exécutions d'expériences planifiées pour le score, ce qui créera une entité 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 score planifiées. Assurez-vous que vous disposez des éléments mlInstanceId , trainingDataSetId et scoringDataSetId requis pour la création du service ML, qu’ils existent et qu’ils 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: {IMS_ORG}' 
  -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 d'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 Entier représentant les minutes de filtrage des données à utiliser pour l’expérience de formation. Par exemple, une valeur de "10080" moyenne pour les données des 10 080 dernières minutes ou 168 heures sera utilisée pour l’exécution de l’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 score planifiées.
scoringTimeframe
Valeur Entier représentant les minutes de filtrage des données à utiliser pour les exécutions d’expériences de score. Par exemple, une valeur de "10080" moyenne pour les données des 10 080 dernières minutes ou 168 heures sera utilisée pour chaque exécution d’expérience de score planifiée. 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 score planifiées.
scoringSchedule.startTime
Date/heure indiquant à quel moment début le score.
scoringSchedule.endTime
Date/heure indiquant à quel moment début le score.
scoringSchedule.cron
Valeur cron indiquant l’intervalle de score des exécutions d’expérience.
Réponse
Une réponse réussie renvoie les détails du nouveau service ML. Cela inclut le service unique id , ainsi que le trainingExperimentId et scoringExperimentId pour sa formation correspondante et les expériences de notation, 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 expériences planifiées pour la formation et la notation

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

Requête
curl -X POST 'https://platform-int.adobe.io/data/sensei/mlServices' 
  -H 'Authorization: Bearer {ACCESS_TOKEN}' 
  -H 'x-api-key: {API_KEY}' 
  -H 'x-gw-ims-org-id: {IMS_ORG}' 
  -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 d'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 Entier représentant les minutes de filtrage des données à utiliser pour l’expérience de formation. Par exemple, une valeur de "10080" moyenne pour les données des 10 080 dernières minutes ou 168 heures sera utilisée pour l’exécution de l’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 score planifiées.
scoringTimeframe
Valeur Entier représentant les minutes de filtrage des données à utiliser pour les exécutions d’expériences de score. Par exemple, une valeur de "10080" moyenne pour les données des 10 080 dernières minutes ou 168 heures sera utilisée pour chaque exécution d’expérience de score planifiée. 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 programmées.
scoringSchedule
Contient des détails sur les exécutions d’expériences de score planifiées.
scoringSchedule.startTime
Date/heure indiquant à quel moment début le score.
scoringSchedule.endTime
Date/heure indiquant à quel moment début le score.
scoringSchedule.cron
Valeur cron indiquant l’intervalle de score des exécutions d’expérience.
Réponse
Une réponse réussie renvoie les détails du nouveau service ML. Cela inclut le service unique id , ainsi que les trainingExperimentId et les scoringExperimentId 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 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"
}

Rechercher un service ML

Vous pouvez rechercher un service ML existant en adressant une GET demande à /mlServices et en fournissant l'unique 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: {IMS_ORG}' 
  -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"
}

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 une formation planifiée et des exécutions d'expériences de score.

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 demande le /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 d'un service ML existant en ajoutant les clés trainingSchedule et scoringSchedule avec leurs clés respectives startTime , endTime et cron .
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: {IMS_ORG}' 
  -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 * * * *"
        }
      }'

N’essayez pas de modifier les startTime 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 à replanifier 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"
}