Publicar 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 Espaço de trabalho de ciência de dados da Adobe Experience Platform. Antes de iniciar este tutorial, reveja o Visão geral do Espaço de trabalho de ciência de dados para obter uma introdução de alto nível 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.
Por fim, antes de iniciar este tutorial, revise o introdução seção do guia do desenvolvedor para obter informações importantes que você precisa saber para fazer chamadas com êxito para o Sensei Machine Learning API, 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 os dados dos últimos 10080 minutos ou 168 horas serão usados para cada Execução de experimento de pontuação programada. Observe que um valor de 0
não filtrarão os dados, todos os dados no conjunto de dados serão usados para pontuação.scoringSchedule
scoringSchedule.startTime
scoringSchedule.endTime
scoringSchedule.cron
Resposta
Uma resposta bem-sucedida retorna os detalhes do Serviço de ML recém-criado, incluindo seu id
e a variável 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 o mlInstanceId
, trainingDataSetId
, e scoringDataSetId
necessários para a criação do Serviço ML, e que 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 10080 minutos ou 168 horas serão usados para a Execução de experimento de treinamento. Observe que um valor de "0"
não filtrarão os dados, todos os dados no conjunto de dados serão usados para treinamento.scoringDataSetId
scoringTimeframe
"10080"
significa que os dados dos últimos 10080 minutos ou 168 horas serão usados para cada Execução de experimento de pontuação programada. Observe que um valor de "0"
não filtrarão os dados, todos os dados no conjunto de dados serã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 a configuração exclusiva do id
, bem como a trainingExperimentId
e 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 10080 minutos ou 168 horas serão usados para a Execução de experimento de treinamento. Observe que um valor de "0"
não filtrarão os dados, todos os dados no conjunto de dados serão usados para treinamento.scoringDataSetId
scoringTimeframe
"10080"
significa que os dados dos últimos 10080 minutos ou 168 horas serão usados para cada Execução de experimento de pontuação programada. Observe que um valor de "0"
não filtrarão os dados, todos os dados no conjunto de dados serã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 a configuração exclusiva do id
, bem como a trainingExperimentId
e scoringExperimentId
de seus Experimentos de treinamento e pontuação correspondentes, respectivamente. No exemplo de resposta abaixo, a presença de trainingSchedule
e scoringSchedule
A sugere que as entidades de Experimento para treinamento e pontuação sejam Experimentos programados.
{
"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 de ML existente fazendo uma GET
solicitação para /mlServices
e fornecendo a id
do Serviço ML no caminho.
Formato da API
GET /mlServices/{SERVICE_ID}
{SERVICE_ID}
id
do Serviço ML que você está procurando.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 programar a pontuação e o treinamento em um Serviço de ML que já foi publicado, é possível fazer isso atualizando o Serviço de ML existente com um PUT
solicitação em /mlServices
.
Formato da API
PUT /mlServices/{SERVICE_ID}
{SERVICE_ID}
id
do Serviço ML que você está atualizando.Solicitação
A solicitação a seguir programa o treinamento e a pontuação de um Serviço ML existente adicionando o trainingSchedule
e scoringSchedule
chaves com seus respectivos startTime
, endTime
, e cron
chaves.
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 programados existentes e trabalhos de pontuação. Se a variável startTime
deve ser modificado, considere a publicação do mesmo Modelo e a reprogramação de treinamentos e trabalhos de 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"
}