Treinar novamente e implantar um modelo de machine learningRetrain and deploy a machine learning model

O novo treinamento é uma maneira de garantir que os modelos de machine learning fiquem precisos e baseados nos dados disponíveis mais relevantes.Retraining is one way to ensure machine learning models stay accurate and based on the most relevant data available. Este artigo mostra como treinar novamente e implantar um modelo de machine learning como um novo serviço Web no Studio.This article shows how to retrain and deploy a machine learning model as a new web service in Studio. Se você estiver buscando readaptar um serviço Web clássico, exiba este artigo de instruções.If you're looking to retrain a classic web service, view this how-to article.

Este artigo pressupõe que você já tem um serviço Web preditivo implantado.This article assumes you already have a predictive web service deployed. Se você ainda não tiver um serviço Web preditivo, saiba como implantar um serviço Web do Studio aqui.If you don't already have a predictive web service, learn how to deploy a Studio web service here.

Você seguirá estas etapas para treinar novamente e implantar um novo serviço Web de aprendizado de máquina:You'll follow these steps to retrain and deploy a machine learning new web service:

  1. Implantar um serviço Web do novo treinamentoDeploy a retraining web service
  2. Treinar um novo modelo usando o serviço Web do novo treinamentoTrain a new model using your retraining web service
  3. Atualizar o teste preditivo existente para usar o novo modeloUpdate your existing predictive experiment to use the new model

Observação

Este artigo foi atualizado para usar o novo módulo Az do Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Você ainda pode usar o módulo AzureRM, que continuará a receber as correções de bugs até pelo menos dezembro de 2020.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Para saber mais sobre o novo módulo Az e a compatibilidade com o AzureRM, confira Apresentação do novo módulo Az do Azure PowerShell.To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Para obter instruções de instalação do módulo Az, confira Instalar o Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

Implantar o serviço Web de readaptaçãoDeploy the retraining web service

Um serviço Web de novo treinamento permite você treinar seu modelo novamente com um novo conjunto de parâmetros, como novos dados, bem como salvá-lo para uso posterior.A retraining web service lets you retrain your model with a new set of parameters, like new data, and save it for later. Quando você conecta uma Saída do Serviço Web em um Modelo de treinamento, o teste de treinamento gera um novo modelo para uso.When you connect a Web Service Output to a Train Model, the training experiment outputs a new model for you to use.

Use as etapas a seguir para implantar um serviço Web de novo treinamento:Use the following steps to deploy a retraining web service:

  1. Conecte um módulo Entrada do Serviço Web à sua entrada de dados.Connect a Web Service Input module to your data input. Normalmente, você quer garantir que os dados de entrada sejam processados da mesma forma que os dados de treinamento originais.Typically, you want to ensure that your input data is processed in the same way as your original training data.

  2. Conecte um módulo Saída do Serviço Web à saída do seu Modelo de Treinamento.Connect a Web Service Output module to the output of your Train Model.

  3. Se você tiver um módulo Modelo de Avaliação, será possível conectar um módulo Saída do Serviço Web à saída dos resultados da avaliaçãoIf you have an Evaluate Model module, you can connect a Web Service Output module to output the evaluation results

  4. Execute seu experimento.Run your experiment.

    Depois de executar o experimento, o fluxo de trabalho resultante deve ser semelhante à seguinte imagem:After running your experiment, the resulting workflow should be similar to the following image:

    Fluxo de trabalho resultante

    Agora, implante o teste de treinamento como um serviço Web de novo treinamento que gera um modelo treinado e os resultados de avaliação do modelo.Now, you deploy the training experiment as a retraining web service that outputs a trained model and model evaluation results.

  5. Na parte inferior da tela do experimento, clique em Configurar serviço WebAt the bottom of the experiment canvas, click Set Up Web Service

  6. Selecione Implantar Serviço Web [Novo] .Select Deploy Web Service [New]. O portal dos Serviços Web do Azure Machine Learning abre a página Implantar Serviço Web.The Azure Machine Learning Web Services portal opens to the Deploy Web Service page.

  7. Digite um nome para seu serviço Web e escolha um plano de pagamento.Type a name for your web service and choose a payment plan.

  8. Selecione Implantar.Select Deploy.

Treinar o modelo novamenteRetrain the model

Para este exemplo, estamos usando C# para criar o aplicativo de readaptação.For this example, we're using C# to create the retraining application. Você também pode usar o código de exemplo em Python ou R para realizar essa tarefa.You can also use Python or R sample code to accomplish this task.

Use as etapas a seguir para chamar as APIs de novo treinamento:Use the following steps to call the retraining APIs:

  1. No Visual Studio, crie um aplicativo de console C#: Novo > Projeto > Visual C# > Área de Trabalho Clássica do Windows > Aplicativo do Console (.NET Framework) .Create a C# console application in Visual Studio: New > Project > Visual C# > Windows Classic Desktop > Console App (.NET Framework).
  2. Entre no portal de Serviços Web do Machine Learning.Sign in to the Machine Learning Web Services portal.
  3. Clique no serviço Web com o qual você está trabalhando.Click the web service that you're working with.
  4. Clique em Consumo.Click Consume.
  5. Na parte inferior da página Consumir, na seção Código de Exemplo, clique em Lote.At the bottom of the Consume page, in the Sample Code section, click Batch.
  6. Copie o código C# de exemplo da execução em lotes e cole-o no arquivo Program.cs.Copy the sample C# code for batch execution and paste it into the Program.cs file. Verifique se o namespace permanece intacto.Make sure that the namespace remains intact.

Adicione o pacote NuGet Microsoft.AspNet.WebApi.Client como especificado nos comentários.Add the NuGet package Microsoft.AspNet.WebApi.Client, as specified in the comments. Para adicionar a referência a Microsoft.WindowsAzure.Storage.dll, é necessário instalar a biblioteca de clientes para os serviços de Armazenamento do Azure.To add the reference to Microsoft.WindowsAzure.Storage.dll, you might need to install the client library for Azure Storage services.

A captura de tela a seguir mostra a página Consumir no portal de Serviços Web do Azure Machine Learning.The following screenshot shows the Consume page in the Azure Machine Learning Web Services portal.

Página Consumir

Atualizar a declaração da apikeyUpdate the apikey declaration

Localize a declaração da apikey:Locate the apikey declaration:

const string apiKey = "abc123"; // Replace this with the API key for the web service

Na seção Informações básicas de consumo da página Consumir, localize a chave primária e copie-a para a declaração da apikey.In the Basic consumption info section of the Consume page, locate the primary key, and copy it to the apikey declaration.

Atualize as informações do Armazenamento do AzureUpdate the Azure Storage information

O código de exemplo de BES carrega um arquivo de uma unidade local (por exemplo, "C:\temp\CensusInput.csv") para o armazenamento do Azure, processa-o e grava os resultados de volta no armazenamento do Azure.The BES sample code uploads a file from a local drive (for example, "C:\temp\CensusInput.csv") to Azure Storage, processes it, and writes the results back to Azure Storage.

  1. Entrar no portal do AzureSign into the Azure portal
  2. Na coluna de navegação esquerda, clique em Mais serviços, pesquise Contas de armazenamento e selecione.In the left navigation column, click More services, search for Storage accounts, and select it.
  3. Na lista de contas de armazenamento, selecione uma para armazenar o modelo recuperado.From the list of storage accounts, select one to store the retrained model.
  4. Na coluna de navegação à esquerda, clique em Chaves de acesso.In the left navigation column, click Access keys.
  5. Copie e salve a Chave de Acesso Primária.Copy and save the Primary Access Key.
  6. Na coluna de navegação à esquerda, clique em Blobs.In the left navigation column, click Blobs.
  7. Selecione um contêiner existente ou crie um novo e salve o nome.Select an existing container, or create a new one and save the name.

Localize as declarações StorageAccountName, StorageAccountKey e StorageContainerName e atualize os valores salvos no portal.Locate the StorageAccountName, StorageAccountKey, and StorageContainerName declarations, and update the values that you saved from the portal.

const string StorageAccountName = "mystorageacct"; // Replace this with your Azure storage account name
const string StorageAccountKey = "a_storage_account_key"; // Replace this with your Azure Storage key
const string StorageContainerName = "mycontainer"; // Replace this with your Azure Storage container name

Você também deve garantir que o arquivo de entrada esteja disponível no local especificado no código.You also must ensure that the input file is available at the location that you specify in the code.

Especificar o local de saídaSpecify the output location

Ao especificar o local de saída no Conteúdo de Solicitação, a extensão do arquivo especificada em RelativeLocation deve ser definida como ilearner.When you specify the output location in the Request Payload, the extension of the file that is specified in RelativeLocation must be specified as ilearner.

Outputs = new Dictionary<string, AzureBlobDataReference>() {
    {
        "output1",
        new AzureBlobDataReference()
        {
            ConnectionString = storageConnectionString,
            RelativeLocation = string.Format("{0}/output1results.ilearner", StorageContainerName) /*Replace this with the location you want to use for your output file and a valid file extension (usually .csv for scoring results or .ilearner for trained models)*/
        }
    },

Confira um exemplo de saída de novo treinamento:Here is an example of retraining output:

Saída da readaptação

Avaliar os resultados da readaptaçãoEvaluate the retraining results

Quando você executa o aplicativo, a saída inclui URL e os tokens de assinaturas de acesso compartilhados necessários para acessar os resultados da avaliação.When you run the application, the output includes the URL and shared access signatures token that are necessary to access the evaluation results.

É possível ver os resultados do desempenho do modelo treinado novamente combinando BaseLocation, RelativeLocation e SasBlobToken dos resultados de saída para output2 e colando a URL completa na barra de endereço do navegador.You can see the performance results of the retrained model by combining the BaseLocation, RelativeLocation, and SasBlobToken from the output results for output2 and pasting the complete URL into the browser address bar.

Examine os resultados para determinar se o modelo recém-treinado tem desempenho melhor do que o existente.Examine the results to determine if the newly trained model performs better than the existing one.

Salve BaseLocation, RelativeLocation e SasBlobToken dos resultados de saída.Save the BaseLocation, RelativeLocation, and SasBlobToken from the output results.

Atualizar o teste preditivoUpdate the predictive experiment

Entre no Azure Resource ManagerSign in to Azure Resource Manager

Primeiro, entre sua conta do Azure no ambiente do PowerShell usando o AzAccount Connect cmdlet.First, sign in to your Azure account from within the PowerShell environment by using the Connect-AzAccount cmdlet.

Obter o objeto de definição do serviço WebGet the Web Service Definition object

Em seguida, obtenha o objeto de definição do serviço Web chamando o Get-AzMlWebService cmdlet.Next, get the Web Service Definition object by calling the Get-AzMlWebService cmdlet.

$wsd = Get-AzMlWebService -Name 'RetrainSamplePre.2016.8.17.0.3.51.237' -ResourceGroupName 'Default-MachineLearning-SouthCentralUS'

Para determinar o nome do grupo de recursos de um serviço web existente, execute o cmdlet Get-AzMlWebService sem parâmetros para exibir os serviços web em sua assinatura.To determine the resource group name of an existing web service, run the Get-AzMlWebService cmdlet without any parameters to display the web services in your subscription. Localize o serviço Web e examine sua ID de serviço da Web.Locate the web service, and then look at its web service ID. O nome do grupo de recursos é o quarto elemento na ID, logo após o elemento resourceGroups .The name of the resource group is the fourth element in the ID, just after the resourceGroups element. No exemplo a seguir, o nome do grupo de recursos é Default-MachineLearning-SouthCentralUS.In the following example, the resource group name is Default-MachineLearning-SouthCentralUS.

Properties : Microsoft.Azure.Management.MachineLearning.WebServices.Models.WebServicePropertiesForGraph
Id : /subscriptions/<subscription ID>/resourceGroups/Default-MachineLearning-SouthCentralUS/providers/Microsoft.MachineLearning/webServices/RetrainSamplePre.2016.8.17.0.3.51.237
Name : RetrainSamplePre.2016.8.17.0.3.51.237
Location : South Central US
Type : Microsoft.MachineLearning/webServices
Tags : {}

Como alternativa, para determinar o nome do grupo de recursos de um serviço Web existente, faça logon no portal de Serviços Web do Azure Machine Learning.Alternatively, to determine the resource group name of an existing web service, sign in to the Azure Machine Learning Web Services portal. Selecione o serviço Web.Select the web service. O nome do grupo de recursos é o quinto elemento da URL do serviço Web, logo após o elemento resourceGroups .The resource group name is the fifth element of the URL of the web service, just after the resourceGroups element. No exemplo a seguir, o nome do grupo de recursos é Default-MachineLearning-SouthCentralUS.In the following example, the resource group name is Default-MachineLearning-SouthCentralUS.

https://services.azureml.net/subscriptions/<subscription ID>/resourceGroups/Default-MachineLearning-SouthCentralUS/providers/Microsoft.MachineLearning/webServices/RetrainSamplePre.2016.8.17.0.3.51.237

Exportar o objeto de Definição do Serviço Web como JSONExport the Web Service Definition object as JSON

Para modificar a definição do modelo treinado usar o modelo treinado recentemente, primeiro você deve usar o AzMlWebService exportação cmdlet exportá-lo em um arquivo de formato JSON.To modify the definition of the trained model to use the newly trained model, you must first use the Export-AzMlWebService cmdlet to export it to a JSON-format file.

Export-AzMlWebService -WebService $wsd -OutputFile "C:\temp\mlservice_export.json"

Atualizar a referência ao blob ilearnerUpdate the reference to the ilearner blob

Nos ativos, localize o [modelo treinado] e atualize o valor uri no nó locationInfo com o URI do blob ilearner.In the assets, locate the [trained model], update the uri value in the locationInfo node with the URI of the ilearner blob. O URI é gerado combinando BaseLocation e RelativeLocation na saída da chamada de readaptação BES.The URI is generated by combining the BaseLocation and the RelativeLocation from the output of the BES retraining call.

 "asset3": {
    "name": "Retrain Sample [trained model]",
    "type": "Resource",
    "locationInfo": {
      "uri": "https://mltestaccount.blob.core.windows.net/azuremlassetscontainer/baca7bca650f46218633552c0bcbba0e.ilearner"
    },
    "outputPorts": {
      "Results dataset": {
        "type": "Dataset"
      }
    }
  },

Importe o JSON em um objeto de Definição do Serviço WebImport the JSON into a Web Service Definition object

Use o importação AzMlWebService cmdlet para converter o arquivo JSON modificado novamente em um objeto de definição do serviço Web que você pode usar para atualizar o teste de previsão.Use the Import-AzMlWebService cmdlet to convert the modified JSON file back into a Web Service Definition object that you can use to update the predicative experiment.

$wsd = Import-AzMlWebService -InputFile "C:\temp\mlservice_export.json"

Atualizar o serviço WebUpdate the web service

Por fim, use o AzMlWebService atualização cmdlet para atualizar o teste preditivo.Finally, use the Update-AzMlWebService cmdlet to update the predictive experiment.

Update-AzMlWebService -Name 'RetrainSamplePre.2016.8.17.0.3.51.237' -ResourceGroupName 'Default-MachineLearning-SouthCentralUS'

Próximas etapasNext steps

Para saber mais sobre como gerenciar serviços Web ou acompanhar várias execuções de testes, confira os seguintes artigos:To learn more about how to manage web services or keep track of multiple experiments runs, see the following articles: