Compartilhar via


Treinar novamente e implantar um modelo de machine learning

APLICA-SE A: Aplica-se a.Machine Learning Studio (clássico) Não se aplica a.Azure Machine Learning

Importante

O suporte para o Machine Learning Studio (clássico) terminará em 31 de agosto de 2024. É recomendável fazer a transição para o Azure Machine Learning até essa data.

A partir de 1º de dezembro de 2021, você não poderá criar recursos do Machine Learning Studio (clássico). Até 31 de agosto de 2024, você pode continuar usando os recursos existentes do Machine Learning Studio (clássico).

A documentação do ML Studio (clássico) está sendo desativada e pode não ser atualizada no futuro.

O novo treinamento é uma maneira de garantir que os modelos de machine learning fiquem precisos e baseados nos dados disponíveis mais relevantes. Este artigo mostra como treinar novamente e implantar um modelo de machine learning como um novo serviço Web no Studio (clássico). Se você estiver buscando readaptar um serviço Web clássico, exiba este artigo de instruções.

Este artigo pressupõe que você já tem um serviço Web preditivo implantado. Se você ainda não tiver um serviço Web preditivo, saiba como implantar um serviço Web do Studio (clássico) aqui.

Você seguirá estas etapas para treinar novamente e implantar um novo serviço Web de aprendizado de máquina:

  1. Implantar um serviço Web do novo treinamento
  2. Treinar um novo modelo usando o serviço Web do novo treinamento
  3. Atualizar o teste preditivo existente para usar o novo modelo

Observação

Recomendamos que você use o módulo Az PowerShell do Azure para interagir com o Azure. Confira Instalar o Azure PowerShell para começar. Para saber como migrar para o módulo Az PowerShell, confira Migrar o Azure PowerShell do AzureRM para o Az.

Implantar o serviço Web de readaptação

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. Quando você conecta uma Saída do Serviço Web a um Modelo de treinamento, o teste de treinamento gera um novo modelo para uso.

Use as etapas a seguir para implantar um serviço Web de novo treinamento:

  1. Conecte um módulo Entrada do Serviço Web à sua entrada de dados. Normalmente, você quer garantir que os dados de entrada sejam processados da mesma forma que os dados de treinamento originais.

  2. Conecte um módulo Saída do Serviço Web à saída do seu Modelo de Treinamento.

  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ção

  4. Execute seu experimento.

    Depois de executar o experimento, o fluxo de trabalho resultante deve ser semelhante à seguinte imagem:

    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.

  5. Na parte inferior da tela do experimento, clique em Configurar serviço Web

  6. Selecione Implantar Serviço Web [Novo]. O portal de Serviços Web do Machine Learning abre a página Implantar Serviço Web.

  7. Digite um nome para seu serviço Web e escolha um plano de pagamento.

  8. Selecione Implantar.

Treinar o modelo novamente

Para este exemplo, estamos usando C# para criar o aplicativo de readaptação. Você também pode usar o código de exemplo em Python ou R para realizar essa tarefa.

Use as etapas a seguir para chamar as APIs de novo treinamento:

  1. Crie um aplicativo de console C# no Visual Studio: Novo>Projeto>Visual C#>Área de Trabalho Clássica do Windows>Aplicativo de Console (.NET Framework).
  2. Entre no portal de Serviços Web do Machine Learning.
  3. Clique no serviço Web com o qual você está trabalhando.
  4. Clique em Consumo.
  5. Na parte inferior da página Consumir, na seção Código de Exemplo, clique em Lote.
  6. Copie o código C# de exemplo da execução em lotes e cole-o no arquivo Program.cs. Verifique se o namespace permanece intacto.

Adicione o pacote NuGet Microsoft.AspNet.WebApi.Client como especificado nos comentários. 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.

A captura de tela a seguir mostra a página Consumir no portal de Serviços Web do Machine Learning.

Página Consumir

Atualizar a declaração da apikey

Localize a declaração da apikey:

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.

Atualize as informações do Armazenamento do Azure

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.

  1. Entrar no portal do Azure
  2. Na coluna de navegação esquerda, clique em Mais serviços, pesquise Contas de armazenamento e selecione.
  3. Na lista de contas de armazenamento, selecione uma para armazenar o modelo recuperado.
  4. Na coluna de navegação à esquerda, clique em Chaves de acesso.
  5. Copie e salve a Chave de Acesso Primária.
  6. Na coluna de navegação à esquerda, clique em Blobs.
  7. Selecione um contêiner existente ou crie um novo e salve o nome.

Localize as declarações StorageAccountName, StorageAccountKey e StorageContainerName e atualize os valores salvos no 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.

Especificar o local de saída

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.

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:

Saída da readaptação

Avaliar os resultados da readaptação

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.

É 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.

Examine os resultados para determinar se o modelo recém-treinado tem desempenho melhor do que o existente.

Salve BaseLocation, RelativeLocation e SasBlobToken dos resultados de saída.

Atualizar o teste preditivo

Entre no Azure Resource Manager

Primeiro, entre em sua conta do Azure de dentro do ambiente do PowerShell usando o cmdlet Connect-AzAccount.

Obter o objeto de definição do serviço Web

Em seguida, obtenha o objeto de definição do serviço Web chamando o cmdlet Get-AzMlWebService.

$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. Localize o serviço Web e examine sua ID de serviço da Web. O nome do grupo de recursos é o quarto elemento na ID, logo após o elemento resourceGroups . No exemplo a seguir, o nome do grupo de recursos é 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, entre no portal de Serviços Web do Machine Learning. Selecione o serviço Web. O nome do grupo de recursos é o quinto elemento da URL do serviço Web, logo após o elemento resourceGroups . No exemplo a seguir, o nome do grupo de recursos é 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 JSON

Para modificar a definição para o modelo treinado usar o modelo treinado recentemente, primeiro você deve usar o cmdlet Export-AzMlWebService para exportá-lo para um arquivo no formato JSON.

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

Atualizar a referência ao blob ilearner

Nos ativos, localize o [modelo treinado] e atualize o valor uri no nó locationInfo com o URI do blob ilearner. O URI é gerado combinando BaseLocation e RelativeLocation na saída da chamada de readaptação BES.

"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 Web

Use o cmdlet Import-AzMlWebService para converter o arquivo JSON modificado novamente em um objeto de Definição de Serviço Web que você pode usar para atualizar o experimento preditivo.

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

Atualizar o serviço Web

Finalmente, use o cmdlet Update-AzMlWebService para atualizar o experimento preditivo.

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

Próximas etapas

Para saber mais sobre como gerenciar serviços Web ou acompanhar várias execuções de testes, confira os seguintes artigos: