Publish d’un modèle en tant que service à l’aide de Sensei Machine Learning API
Ce tutoriel décrit le processus de publication d’un modèle en tant que service à l’aide de Sensei Machine Learning API.
Commencer
Ce tutoriel nécessite une compréhension pratique de Adobe Experience Platform Data Science Workspace. Avant de commencer ce tutoriel, consultez la présentation de Data Science Workspace pour une présentation générale du service.
Pour suivre ce tutoriel, vous devez disposer d’un moteur ML, d’une instance ML et d’une expérience. Pour obtenir des instructions sur la création de ces recettes dans l’API, consultez le tutoriel sur l’ importation d’une recette empaquetée.
Enfin, avant de commencer ce tutoriel, consultez la section prise en main du guide de développement pour obtenir des informations importantes à connaître afin d’effectuer avec succès des appels vers l’API Sensei Machine Learning, 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 :
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é d’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 * * * *"
}
}'
mlInstanceId
trainingExperimentId
trainingExperimentRunId
scoringDataSetId
scoringTimeframe
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
scoringSchedule.startTime
scoringSchedule.endTime
scoringSchedule.cron
Réponse
Une réponse réussie renvoie les détails du nouveau service ML, y compris son id
unique 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 * * * *"
}
}'
mlInstanceId
trainingDataSetId
trainingTimeframe
"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
scoringTimeframe
"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
scoringSchedule.startTime
scoringSchedule.endTime
scoringSchedule.cron
Réponse
Une réponse réussie renvoie les détails du service ML nouvellement créé. Cela inclut le id
unique du service, ainsi que les 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 * * * *"
}
}'
mlInstanceId
trainingDataSetId
trainingTimeframe
"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
scoringTimeframe
"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
scoringSchedule
scoringSchedule.startTime
scoringSchedule.endTime
scoringSchedule.cron
Réponse
Une réponse réussie renvoie les détails du service ML nouvellement créé. Cela inclut le id
unique du service, ainsi que les 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 requête GET
vers /mlServices
et en fournissant l’unique id
du service ML dans le chemin.
Format d’API
GET /mlServices/{SERVICE_ID}
{SERVICE_ID}
id
unique 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"
}
Planification de la formation ou de la notation
Si vous souhaitez planifier la notation et la formation sur un service ML qui a déjà été publié, vous pouvez le faire en mettant à jour le service ML existant avec une requête PUT
sur /mlServices
.
Format d’API
PUT /mlServices/{SERVICE_ID}
{SERVICE_ID}
id
unique 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 les clés trainingSchedule
et scoringSchedule
avec leurs clés startTime
, endTime
et cron
respectives.
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 * * * *"
}
}'
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"
}