Preparar e implementar novamente um modelo de machine learning

APLICA-SE A:Aplica-se a.O 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.

A nova preparação é uma forma de garantir que os modelos de machine learning se mantêm precisos e com base nos dados mais relevantes disponíveis. Este artigo mostra como voltar a preparar e implementar um modelo de machine learning como um novo serviço Web no Studio (clássico). Se quiser voltar a preparar um serviço Web clássico, veja este artigo de procedimentos.

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

Irá seguir estes passos para voltar a preparar e implementar um novo serviço Web de machine learning:

  1. Implementar um serviço Web de nova preparação
  2. Preparar um novo modelo com o seu serviço Web de nova preparação
  3. Atualizar a experimentação preditiva existente para utilizar 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.

Implementar o serviço Web de nova preparação

Um serviço Web de nova preparação permite-lhe voltar a preparar o modelo com um novo conjunto de parâmetros, como novos dados, e guardá-lo para mais tarde. Quando liga uma Saída do Serviço Web a um Modelo de Preparação, a experimentação de preparação produz um novo modelo para utilizar.

Utilize os seguintes passos para implementar um serviço Web de nova preparação:

  1. Ligue um módulo de Entrada do Serviço Web à entrada de dados. Normalmente, quer garantir que os dados de entrada são processados da mesma forma que os dados de preparação originais.

  2. Ligue um módulo de Saída do Serviço Web à saída do Modelo de Preparação.

  3. Se tiver um módulo Avaliar Modelo , pode ligar um módulo de Saída do Serviço Web para produzir os resultados da avaliação

  4. Execute a sua experimentação.

    Depois de executar a experimentação, o fluxo de trabalho resultante deve ser semelhante à imagem seguinte:

    Fluxo de trabalho resultante

    Agora, vai implementar a experimentação de preparação como um serviço Web de nova preparação que produz um modelo preparado e resultados de avaliação de modelos.

  5. Na parte inferior da tela de experimentação, clique em Configurar Serviço Web

  6. Selecione Implementar Serviço Web [Novo]. O portal dos Serviços Web do Machine Learning é aberto na página Implementar Serviço Web .

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

  8. Selecione Implementar.

Preparar novamente o modelo

Neste exemplo, estamos a utilizar C# para criar a aplicação de nova preparação. Também pode utilizar código de exemplo Python ou R para realizar esta tarefa.

Utilize os seguintes passos para chamar as APIs de nova preparação:

  1. Crie uma aplicação de consola C# no Visual Studio: New>Project>Visual C#>Windows Classic Desktop>Console App (.NET Framework).
  2. Inicie sessão no portal dos Serviços Web do Machine Learning.
  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 secção Código de Exemplo , clique em Batch.
  6. Copie o código C# de exemplo para a execução em lote e cole-o no ficheiro Program.cs. Certifique-se de que o espaço de nomes 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, poderá ter de instalar a biblioteca de cliente dos serviços de Armazenamento do Azure.

A seguinte captura de ecrã mostra a página Consumir no portal dos Serviços Web do Machine Learning.

Consumir página

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 secção Informações de consumo básico 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 ficheiro de uma unidade local (por exemplo, "C:\temp\CensusInput.csv") para o Armazenamento do Azure, processa-o e escreve os resultados novamente 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-a.
  3. Na lista de contas de armazenamento, selecione uma para armazenar o modelo preparado novamente.
  4. Na coluna de navegação esquerda, clique em Chaves de acesso.
  5. Copie e guarde a Chave de Acesso Primária.
  6. Na coluna de navegação esquerda, clique em Blobs.
  7. Selecione um contentor existente ou crie um novo e guarde o nome.

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

Também tem de garantir que o ficheiro de entrada está disponível na localização que especificar no código.

Especificar a localização de saída

Quando especificar a localização de saída no Payload do Pedido, a extensão do ficheiro especificado em RelativeLocation tem de 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)*/
        }
    },

Eis um exemplo de nova preparação de saída:

Retraining output (Voltar a preparar a saída)

Avaliar os resultados da nova preparação

Quando executa a aplicação, o resultado inclui o URL e o token de assinaturas de acesso partilhado que são necessários para aceder aos resultados da avaliação.

Pode ver os resultados de desempenho do modelo preparado novamente ao combinar BaseLocation, RelativeLocation e SasBlobToken nos resultados de saída para output2 e colar o URL completo na barra de endereço do browser.

Examine os resultados para determinar se o modelo preparado recentemente tem um melhor desempenho do que o existente.

Guarde BaseLocation, RelativeLocation e SasBlobToken nos resultados de saída.

Atualizar a experimentação preditiva

Iniciar sessão no Azure Resource Manager

Primeiro, inicie sessão na sua conta do Azure a partir do ambiente do PowerShell com o cmdlet Connect-AzAccount .

Obter o objeto Definição do Serviço Web

Em seguida, obtenha o objeto Definição do Serviço Web ao chamar 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 apresentar os serviços Web na sua subscrição. Localize o serviço Web e, em seguida, observe o ID do serviço Web. O nome do grupo de recursos é o quarto elemento no ID, logo após o elemento resourceGroups . No exemplo seguinte, 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 : {}

Em alternativa, para determinar o nome do grupo de recursos de um serviço Web existente, inicie sessão no portal dos Serviços Web do Machine Learning. Selecione o serviço Web. O nome do grupo de recursos é o quinto elemento do URL do serviço Web, logo após o elemento resourceGroups . No exemplo seguinte, 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 Definição do Serviço Web como JSON

Para modificar a definição do modelo preparado para utilizar o modelo preparado recentemente, primeiro tem de utilizar o cmdlet Export-AzMlWebService para exportá-lo para um ficheiro de formato JSON.

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

Atualizar a referência para o blob ilearner

Nos recursos, localize o [modelo preparado], atualize o valor do URI no nó locationInfo com o URI do blob ilearner. O URI é gerado ao combinar a BaseLocation e a RelativeLocation a partir do resultado da chamada de nova preparação do 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

Utilize o cmdlet Import-AzMlWebService para converter novamente o ficheiro JSON modificado num objeto Definição de Serviço Web que pode utilizar para atualizar a experimentação predicativa.

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

Atualizar o serviço Web

Por fim, utilize o cmdlet Update-AzMlWebService para atualizar a experimentação preditiva.

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

Passos seguintes

Para saber mais sobre como gerir serviços Web ou controlar várias execuções de experimentações, consulte os seguintes artigos: