Partilhar via


Retreinar e implantar um modelo de aprendizado de máquina

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

Importante

O suporte para o Estúdio de ML (clássico) terminará a 31 de agosto de 2024. Recomendamos a transição para o Azure Machine Learning até essa data.

A partir de 1 de dezembro de 2021, não poderá criar novos recursos do Estúdio de ML (clássico). Até 31 de agosto de 2024, pode continuar a utilizar os recursos existentes do Estúdio de ML (clássico).

A documentação do Estúdio de ML (clássico) está a ser descontinuada e poderá não ser atualizada no futuro.

O retreinamento é uma maneira de garantir que os modelos de aprendizado de máquina permaneçam precisos e baseados nos dados mais relevantes disponíveis. Este artigo mostra como treinar novamente e implantar um modelo de aprendizado de máquina como um novo serviço Web no Studio (clássico). Se você está procurando treinar novamente um serviço Web clássico, veja este artigo de instruções.

Este artigo pressupõe que você já tenha um serviço Web preditivo implantado. Se você ainda não tiver um serviço Web preditivo, saiba como implantar um serviço Web 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 de reciclagem
  2. Treine um novo modelo usando seu serviço Web de reciclagem
  3. Atualize seu experimento preditivo existente para usar o novo modelo

Nota

Recomendamos que utilize o módulo do Azure Az PowerShell para interagir com o Azure. Veja Instalar o Azure PowerShell para começar. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Implantar o serviço Web de reciclagem

Um serviço Web de reciclagem permite treinar novamente seu modelo com um novo conjunto de parâmetros, como novos dados, e salvá-lo para mais tarde. Quando você conecta uma saída de serviço Web a um modelo de trem, o experimento de treinamento gera um novo modelo para você usar.

Use as seguintes etapas para implantar um serviço Web de reciclagem:

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

  2. Conecte um módulo de saída de serviço Web à saída do seu modelo de trem.

  3. Se você tiver um módulo Avaliar modelo , poderá conectar um módulo de saída de serviço Web para gerar os resultados da avaliação

  4. Execute seu experimento.

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

    Fluxo de trabalho resultante

    Agora, você implanta o experimento de treinamento como um serviço Web de retreinamento que produz um modelo treinado e resultados de avaliação de 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 de Aprendizado de Máquina é aberto na página Implantar Serviço Web .

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

  8. Selecione Implementar.

Retreinar o modelo

Neste exemplo, estamos usando C# para criar o aplicativo de retreinamento. Você também pode usar Python ou código de exemplo R para realizar essa tarefa.

Use as seguintes etapas para chamar as APIs de retreinamento:

  1. Crie um aplicativo de console C# no Visual Studio: Novo>Projeto>Visual C#>Windows Classic Desktop>Console App (.NET Framework).
  2. Entre no portal de Serviços Web de Aprendizado de Máquina.
  3. Clique no serviço Web com o qual está a trabalhar.
  4. Clique em Consumir.
  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 para execução em lote e cole-o no arquivo Program.cs. Certifique-se de que o namespace permanece intacto.

Adicione o pacote NuGet Microsoft.AspNet.WebApi.Client, conforme especificado nos comentários. Para adicionar a referência a Microsoft.WindowsAzure.Storage.dll, talvez seja necessário instalar a biblioteca de cliente para serviços de Armazenamento do Azure.

A captura de tela a seguir mostra a página Consumir no portal de Serviços Web de Aprendizado de Máquina.

Página Consumir

Atualizar a declaração apikey

Localize a declaração 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 apikey.

Atualizar as informações do Armazenamento do Azure

O código de exemplo BES carrega um arquivo de uma unidade local (por exemplo, "C:\temp\CensusInput.csv") no Armazenamento do Azure, processa-o e grava os resultados no Armazenamento do Azure.

  1. Iniciar sessão no portal do Azure
  2. Na coluna de navegação esquerda, clique em Mais serviços, procure contas de armazenamento e selecione-o.
  3. Na lista de contas de armazenamento, selecione uma para armazenar o modelo retreinado novamente.
  4. Na coluna de navegação esquerda, clique em Teclas 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 do 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

Quando você especifica o local de saída em Request Payload, a extensão do arquivo especificada em RelativeLocation deve ser especificada 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)*/
        }
    },

Aqui está um exemplo de resultados de reciclagem:

Produção de reciclagem

Avaliar os resultados da reciclagem

Quando você executa o aplicativo, a saída inclui a URL e o token de assinaturas de acesso compartilhado que são necessários para acessar os resultados da avaliação.

Você pode ver os resultados de desempenho do modelo retreinado 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 um desempenho melhor do que o existente.

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

Atualizar o experimento preditivo

Entrar no Azure Resource Manager

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

Obter o objeto Web Service Definition

Em seguida, obtenha o objeto Web Service Definition 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 quaisquer parâmetros para exibir os serviços Web em sua assinatura. Localize o serviço Web e, em seguida, examine seu ID de serviço 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 de Aprendizado de Máquina. 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 Web Service Definition como JSON

Para modificar a definição do modelo treinado para usar o modelo recém-treinado, você deve primeiro 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], atualize o valor de uri no nó locationInfo com o URI do blob ilearner. O URI é gerado pela combinação de BaseLocation e RelativeLocation a partir da saída da chamada de reciclagem 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"
        }
    }
},

Importar o JSON para um objeto de definição de serviço Web

Use o cmdlet Import-AzMlWebService para converter o arquivo JSON modificado novamente em um objeto Web Service Definition que você pode usar para atualizar o experimento predicativo.

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

Atualizar o serviço Web

Por fim, 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óximos passos

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