Publish un modello come servizio utilizzando Sensei Machine Learning API
Questo esercitazione riguarda il processo di pubblicazione di un modello come servizio utilizzando .Sensei Machine Learning API
Introduzione
Questo esercitazione richiede una comprensione pratica di Adobe Experience Platform Data Science Area di lavoro. Prima di iniziare questo esercitazione, consulta la panoramica🔗 di Data Science Area di lavoro per un'introduzione di alto livello al servizio.
Per seguire con questo esercitazione, è necessario disporre di un motore ML, di un'istanza ML e di un esperimento esistenti. Per i passaggi su come crearli nell'API, consulta l'esercitazione su importazione di una ricetta in pacchetti.
Infine, prima di iniziare questo tutorial, consulta la sezione guida introduttiva della guida per gli sviluppatori per informazioni importanti che devi conoscere per effettuare correttamente chiamate all'API Sensei Machine Learning, incluse le intestazioni richieste utilizzate in questo tutorial:
{ACCESS_TOKEN}
{ORG_ID}
{API_KEY}
Tutte le richieste di POST, PUT e PATCH richiedono un’intestazione aggiuntiva:
- Content-Type: application/json
Termini chiave
Nella tabella seguente vengono illustrati alcuni termini comuni utilizzati in questo esercitazione:
Crea un servizio ML con una training Experiment Run esistente e un punteggio pianificato
Quando pubblicare un esperimento training Esegui come servizio ML, puoi programmare punteggio fornendo dettagli per l'esperimento di punteggio Esegui il payload di un richiesta POST. Ciò comporta la creazione di un'entità Esperimento pianificato per il punteggio.
Formato API
POST /mlServices
Richiesta
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
alle medie degli ultimi 10080 minuti o 168 ore. Si noti che un valore di non filtrerà i dati, tutti i dati all'interno del set di 0
dati vengono utilizzati per il punteggio.scoringSchedule
scoringSchedule.startTime
scoringSchedule.endTime
scoringSchedule.cron
Risposta
Una risposta corretta restituisce i dettagli del servizio ML appena creato, incluso il suo esperimento univoco id
e quello per il scoringExperimentId
punteggio corrispondente.
{
"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"
}
Creazione di un servizio ML da un'istanza ML esistente
A seconda del caso d'uso e dei requisiti specifici, la creazione di un servizio ML con un'istanza ML è flessibile in termini di pianificazione delle training e assegnazione di punteggi alle esecuzioni degli esperimenti. Questo esercitazione esaminerà i casi specifici in cui:
Si noti che un servizio ML può essere creato utilizzando un'istanza ML senza pianificare alcun training o valutare gli esperimenti. Tali Servizi ML creeranno entità Esperimento ordinarie e un'unica Esecuzione dell'esperimento per training e punteggio.
Servizio ML con esperimento pianificato per il punteggio ml-service-with-scheduled-experiment-for-scoring
Puoi creare un servizio ML pubblicando un'istanza ML con esecuzioni di esperimenti pianificate per il punteggio, che creerà un'entità Esperimento ordinaria per training. Viene generata una training esecuzione dell'esperimento, che verrà utilizzata per tutte le esecuzioni degli esperimenti con punteggio pianificate. Assicurati di disporre di , mlInstanceId
trainingDataSetId
e scoringDataSetId
necessari per la creazione del servizio ML, che esistano e siano valori validi.
Formato API
POST /mlServices
Richiesta
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"
medie dei dati degli ultimi 10080 minuti o 168 ore. Si noti che un valore di non filtrerà i dati, tutti i dati all'interno del set di "0"
dati vengono utilizzati per training.scoringDataSetId
scoringTimeframe
"10080"
alle medie degli ultimi 10080 minuti o 168 ore. Tieni presente che un valore di "0"
non filtrerà i dati, tutti i dati all'interno del set di dati vengono utilizzati per il punteggio.scoringSchedule
scoringSchedule.startTime
scoringSchedule.endTime
scoringSchedule.cron
Risposta
Una risposta corretta restituisce i dettagli del servizio ML appena creato. Ciò include gli esperimenti unici id
del servizio, nonché la e scoringExperimentId
per gli trainingExperimentId
esperimenti di training e punteggio corrispondenti, rispettivamente.
{
"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"
}
Servizio ML con esperimenti pianificati per training e punteggio ml-service-with-scheduled-experiments-for-training-and-scoring
Per pubblicare un'istanza ML esistente come servizio ML con training pianificate e esecuzioni di esperimenti con punteggio, è necessario fornire pianificazioni sia training che di punteggio. Quando viene creato un servizio ML di questa configurazione, vengono create anche entità Esperimento pianificate sia per training che per il punteggio. Tieni presente che le pianificazioni di training e punteggio non devono essere necessariamente uguali. Durante l’esecuzione di un processo di punteggio, verrà recuperato e utilizzato per l’esecuzione pianificata il modello addestrato più recente prodotto dalle esecuzioni pianificate degli esperimenti di apprendimento.
Formato API
POST /mlServices
Richiesta
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"
indica che i dati degli ultimi 10080 minuti o 168 ore verranno utilizzati per l’esecuzione dell’esperimento di formazione. Tieni presente che un valore di "0"
non filtrerà i dati; tutti i dati all'interno del set di dati vengono utilizzati per l'apprendimento.scoringDataSetId
scoringTimeframe
"10080"
indica che i dati degli ultimi 10080 minuti o 168 ore verranno utilizzati per ogni esecuzione di esperimento con punteggio pianificato. Si noti che un valore di non filtrerà i dati, tutti i dati all'interno del set di "0"
dati vengono utilizzati per il punteggio.trainingSchedule
scoringSchedule
scoringSchedule.startTime
scoringSchedule.endTime
scoringSchedule.cron
Risposta
In caso di esito positivo, la risposta restituisce i dettagli del servizio ML appena creato. Questo include l'univoco id
del servizio, nonché trainingExperimentId
e scoringExperimentId
dei relativi esperimenti di formazione e punteggio, rispettivamente. Nella risposta di esempio seguente, la presenza di trainingSchedule
e scoringSchedule
suggerisce che le entità esperimento per l'apprendimento e il punteggio sono esperimenti pianificati.
{
"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"
}
Cercare un servizio ML retrieving-ml-services
Per cercare un servizio ML esistente, effettuare una richiesta GET
a /mlServices
e fornire l'elemento id
univoco del servizio ML nel percorso.
Formato API
GET /mlServices/{SERVICE_ID}
{SERVICE_ID}
id
univoco del servizio ML che stai cercando.Richiesta
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}'
Risposta
Una risposta corretta restituisce i dettagli del servizio 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"
}
Pianificare training o assegnare punteggi
Se si desidera programmare punteggio e training su un servizio ML già pubblicato, è possibile farlo aggiornando il servizio ML esistente con un PUT
richiesta su /mlServices
.
Formato API
PUT /mlServices/{SERVICE_ID}
{SERVICE_ID}
id
del servizio ML che stai aggiornando.Richiesta
Di seguito richiesta pianifica la training e il punteggio per un servizio ML esistente aggiungendo le chiavi e con le trainingSchedule
rispettive startTime
chiavi , endTime
e cron
.scoringSchedule
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
processi di training e punteggio pianificati esistenti. Se è necessario modificarlo startTime
, è consigliabile pubblicare lo stesso modello e riprogrammare i processi di training e di assegnazione dei punteggi.Risposta
Una risposta corretta restituisce i dettagli del servizio ML aggiornato.
{
"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"
}