Publish um modelo como um serviço usando o Sensei Machine Learning API
Este tutorial aborda o processo de publicação de um modelo como um serviço usando o Sensei Machine Learning API.
Introdução
Este tutorial requer uma compreensão funcional do Adobe Experience Platform Data Science Workspace. Antes de começar este tutorial, revise a visão geral do Data Science Workspace para obter uma introdução geral ao serviço.
Para seguir este tutorial, você deve ter um Mecanismo ML, uma Instância ML e um Experimento existentes. Para obter etapas sobre como criá-los na API, consulte o tutorial sobre importação de uma fórmula em pacote.
Finalmente, antes de iniciar este tutorial, revise a seção introdução do guia do desenvolvedor para obter informações importantes que você precisa saber para fazer chamadas com êxito para a API Sensei Machine Learning, incluindo os cabeçalhos necessários usados neste tutorial:
{ACCESS_TOKEN}
{ORG_ID}
{API_KEY}
Todas as solicitações de POST, PUT e PATCH exigem um cabeçalho adicional:
- Tipo de conteúdo: application/json
Termos principais
A tabela a seguir descreve algumas terminologias comuns usadas neste tutorial:
Criar um serviço de ML com uma execução de experimento de treinamento existente e pontuação programada
Ao publicar uma Execução de experimento de treinamento como um Serviço ML, você pode agendar a pontuação fornecendo detalhes para a Execução de experimento de pontuação da carga de uma solicitação POST. Isso resulta na criação de uma entidade de Experimento agendada para pontuação.
Formato da API
POST /mlServices
Solicitação
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
significa que dados dos últimos 10.080 minutos ou 168 horas serão usados para cada Execução de experimento de pontuação agendada. Observe que um valor de 0
não filtrará dados, todos os dados no conjunto de dados são usados para pontuação.scoringSchedule
scoringSchedule.startTime
scoringSchedule.endTime
scoringSchedule.cron
Resposta
Uma resposta bem-sucedida retorna os detalhes do Serviço ML recém-criado, incluindo seu id
exclusivo e o scoringExperimentId
para seu Experimento de pontuação correspondente.
{
"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"
}
Criando um Serviço de ML a partir de uma Instância de ML existente
Dependendo do caso de uso e dos requisitos específicos, a criação de um Serviço de ML com uma Instância de ML é flexível em termos de agendamento de treinamento e pontuação de Execuções de experimento. Este tutorial abordará os casos específicos em que:
Observe que um Serviço de ML pode ser criado usando uma Instância de ML sem programar nenhum treinamento ou experimento de pontuação. Esses Serviços de ML criarão entidades de Experimento comuns e uma única Execução de experimento para treinamento e pontuação.
Serviço de ML com experimento agendado para pontuação ml-service-with-scheduled-experiment-for-scoring
Você pode criar um Serviço de ML publicando uma Instância de ML com Execuções de experimento programadas para pontuação, o que criará uma entidade de experimento comum para treinamento. Uma Execução de experimento de treinamento é gerada e será usada para todas as Execuções de experimento de pontuação programadas. Verifique se você tem os mlInstanceId
, trainingDataSetId
e scoringDataSetId
necessários para a criação do Serviço ML, e se eles existem e são valores válidos.
Formato da API
POST /mlServices
Solicitação
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"
significa que dados dos últimos 10.080 minutos ou 168 horas serão usados para a Execução de experimento de treinamento. Observe que um valor de "0"
não filtrará os dados, todos os dados no conjunto de dados são usados para treinamento.scoringDataSetId
scoringTimeframe
"10080"
significa que dados dos últimos 10.080 minutos ou 168 horas serão usados para cada Execução de experimento de pontuação agendada. Observe que um valor de "0"
não filtrará dados, todos os dados no conjunto de dados são usados para pontuação.scoringSchedule
scoringSchedule.startTime
scoringSchedule.endTime
scoringSchedule.cron
Resposta
Uma resposta bem-sucedida retorna os detalhes do Serviço ML recém-criado. Isso inclui o id
exclusivo do serviço, bem como o trainingExperimentId
e o scoringExperimentId
para seus Experimentos de treinamento e pontuação correspondentes, respectivamente.
{
"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"
}
Serviço de ML com experimentos programados para treinamento e pontuação ml-service-with-scheduled-experiments-for-training-and-scoring
Para publicar uma Instância de ML existente como um Serviço de ML com treinamentos programados e execuções de experimento de pontuação, é necessário fornecer programações de treinamento e pontuação. Quando um Serviço de ML dessa configuração é criado, entidades de Experimento programadas para treinamento e pontuação também são criadas. Observe que as programações de treinamento e pontuação não precisam ser iguais. Durante a execução de um trabalho de pontuação, o modelo treinado mais recente produzido pelas Execuções de experimento de treinamento programado será buscado e usado para a execução de pontuação programada.
Formato da API
POST /mlServices
Solicitação
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"
significa que dados dos últimos 10.080 minutos ou 168 horas serão usados para a Execução de experimento de treinamento. Observe que um valor de "0"
não filtrará os dados, todos os dados no conjunto de dados são usados para treinamento.scoringDataSetId
scoringTimeframe
"10080"
significa que dados dos últimos 10.080 minutos ou 168 horas serão usados para cada Execução de experimento de pontuação agendada. Observe que um valor de "0"
não filtrará dados, todos os dados no conjunto de dados são usados para pontuação.trainingSchedule
scoringSchedule
scoringSchedule.startTime
scoringSchedule.endTime
scoringSchedule.cron
Resposta
Uma resposta bem-sucedida retorna os detalhes do Serviço ML recém-criado. Isso inclui o id
exclusivo do serviço, bem como o trainingExperimentId
e scoringExperimentId
de seus Experimentos de treinamento e pontuação correspondentes, respectivamente. Na resposta de exemplo abaixo, a presença de trainingSchedule
e scoringSchedule
sugere que as entidades de Experimento para treinamento e pontuação são Experimentos agendados.
{
"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"
}
Pesquisar um serviço de ML retrieving-ml-services
Você pode pesquisar um Serviço ML existente fazendo uma solicitação GET
para /mlServices
e fornecendo o id
exclusivo do Serviço ML no caminho.
Formato da API
GET /mlServices/{SERVICE_ID}
{SERVICE_ID}
id
exclusivo do Serviço ML que você está pesquisando.Solicitação
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}'
Resposta
Uma resposta bem-sucedida retorna os detalhes do Serviço 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"
}
Agendar treinamento ou pontuação
Se você quiser agendar a pontuação e o treinamento em um Serviço ML que já foi publicado, atualize o Serviço ML existente com uma solicitação PUT
em /mlServices
.
Formato da API
PUT /mlServices/{SERVICE_ID}
{SERVICE_ID}
id
exclusivo do Serviço ML que você está atualizando.Solicitação
A solicitação a seguir agenda o treinamento e a pontuação para um Serviço ML existente adicionando as chaves trainingSchedule
e scoringSchedule
com suas respectivas chaves startTime
, endTime
e 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: {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
em treinamentos e trabalhos de pontuação programados existentes. Se o startTime
deve ser modificado, considere publicar o mesmo Modelo e reagendar trabalhos de treinamento e pontuação.Resposta
Uma resposta bem-sucedida retorna os detalhes do Serviço ML atualizado.
{
"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"
}