Coletar dados de modelos em produção

APLICA-SE A:azureml do SDK do Python v1

Este artigo mostra como coletar dados de um modelo do Azure Machine Learning implantado em um cluster do AKS (Serviço de Kubernetes do Azure). Os dados coletados são armazenados no Armazenamento de Blobs do Azure.

Quando a coleção estiver habilitada, os dados coletados ajudarão você a:

Limitações

  • O recurso de coleta de dados do modelo só pode funcionar com a imagem do Ubuntu 18.04.

Importante

A partir de 10/03/2023, a imagem do Ubuntu 18.04 foi preterida. O suporte para imagens do Ubuntu 18.04 será descartado a partir de janeiro de 2023, quando chegar ao EOL em 30 de abril de 2023.

O recurso MDC é incompatível com qualquer outra imagem que não seja o Ubuntu 18.04, que não estará disponível depois que a imagem do Ubuntu 18.04 for preterida.

Mais informações que você pode consultar:

Observação

O recurso de coleta de dados está atualmente em versão prévia, todos os recursos de versão prévia não são recomendados para cargas de trabalho de produção.

O que é coletado e para onde vai

Os dados a seguir podem ser coletados:

  • Dados de entrada de modelo de serviços Web implantados em um cluster do AKS. Áudio de voz, imagens e vídeos não são coletados.

  • Predições de modelo usando dados de entrada de produção.

Observação

A pré-agregação e os pré-cálculos nesses dados não fazem parte do serviço de coleta no momento.

A saída é salva no Armazenamento de Blobs. Uma vez que os dados são adicionados ao Armazenamento de Blobs, você pode selecionar sua ferramenta predileta para executar a análise.

O caminho para os dados de saída no blob segue esta sintaxe:

/modeldata/<subscriptionid>/<resourcegroup>/<workspace>/<webservice>/<model>/<version>/<designation>/<year>/<month>/<day>/data.csv
# example: /modeldata/1a2b3c4d-5e6f-7g8h-9i10-j11k12l13m14/myresourcegrp/myWorkspace/aks-w-collv9/best_model/10/inputs/2018/12/31/data.csv

Observação

Em versões do SDK do Azure Machine Learning para Python anteriores à versão 0.1.0a16, o argumento designation é chamado de identifier. Se você desenvolveu seu código com uma versão anterior, precisa atualizá-lo adequadamente.

Pré-requisitos

Habilitar coleta de dados

Você pode habilitar a coleta de dados independentemente do modelo implantado por meio do Azure Machine Learning ou de outras ferramentas.

Para habilitar a coleta de dados, faça o seguinte:

  1. Abra o arquivo de pontuação.

  2. Adicione o seguinte código na parte superior do arquivo:

    from azureml.monitoring import ModelDataCollector
    
  3. Declare suas variáveis de coleta de dados na sua função init:

    global inputs_dc, prediction_dc
    inputs_dc = ModelDataCollector("best_model", designation="inputs", feature_names=["feat1", "feat2", "feat3", "feat4", "feat5", "feat6"])
    prediction_dc = ModelDataCollector("best_model", designation="predictions", feature_names=["prediction1", "prediction2"])
    

    CorrelationId é um parâmetro opcional. Você não precisará usá-lo se o seu modelo não exigir. O uso de CorrelationId ajuda a mapear mais facilmente com outros dados, como LoanNumber ou CustomerID.

    O parâmetro Identifier é usado posteriormente para criar a estrutura de pastas em seu blob. Você pode usá-lo para diferenciar os dados brutos dos dados processados.

  4. Adicione as seguintes linhas de código à função run(input_df):

    data = np.array(data)
    result = model.predict(data)
    inputs_dc.collect(data) #this call is saving our input data into Azure Blob
    prediction_dc.collect(result) #this call is saving our prediction data into Azure Blob
    
  5. A coleta de dados não é definida automaticamente como true quando você implanta um serviço no AKS. Atualize seu arquivo de configuração, como no seguinte exemplo:

    aks_config = AksWebservice.deploy_configuration(collect_model_data=True)
    

    Você também pode habilitar o Application Insights para o monitoramento de serviço alterando esta configuração:

    aks_config = AksWebservice.deploy_configuration(collect_model_data=True, enable_app_insights=True)
    
  6. Para criar uma nova imagem e implantar o modelo de machine learning, consulte Implantar modelos de machine learning no Azure.

  7. Adicione o pacote pip "Azure-Monitoring" às dependências Conda do ambiente do serviço Web:

  env = Environment('webserviceenv')
  env.python.conda_dependencies = CondaDependencies.create(conda_packages=['numpy'],pip_packages=['azureml-defaults','azureml-monitoring','inference-schema[numpy-support]'])

Desativar coleta de dados

Você pode parar de coletar dados a qualquer momento. Use o Python para desabilitar a coleta de dados.

## replace <service_name> with the name of the web service
<service_name>.update(collect_model_data=False)

Validar e analisar os dados

Você pode escolher uma ferramenta de sua preferência para analisar os dados coletados em seu Armazenamento de Blobs.

Acessar rapidamente os dados de blobs

  1. Entre no Portal do Azure.

  2. Abra seu workspace.

  3. Selecione Armazenamento.

    Selecionar a opção Armazenamento

  4. Siga o caminho para os dados de saída do blob com esta sintaxe:

    /modeldata/<subscriptionid>/<resourcegroup>/<workspace>/<webservice>/<model>/<version>/<designation>/<year>/<month>/<day>/data.csv
    # example: /modeldata/1a2b3c4d-5e6f-7g8h-9i10-j11k12l13m14/myresourcegrp/myWorkspace/aks-w-collv9/best_model/10/inputs/2018/12/31/data.csv
    

Analisar dados de modelo usando o Power BI

  1. Baixe e abra o Power BI Desktop.

  2. Selecione Obter Dados e clique em Armazenamento de Blobs do Azure.

    Configuração de blobs do Power BI

  3. Adicione o nome da sua conta de armazenamento e insira sua chave de armazenamento. Você pode encontrar essas informações selecionando Configurações>Chaves de acesso em seu blob.

  4. Selecione o contêiner de dados do modelo e selecione Editar.

    Navegador do Power BI

  5. No editor de consultas, clique na coluna Nome e adicione sua conta de armazenamento.

  6. Insira seu caminho do modelo para o filtro. Se você quiser apenas examinar arquivos de um ano ou mês específico, basta expandir o caminho do filtro. Por exemplo, para procurar apenas dados de março, use este caminho de filtro:

    /modeldata/<subscriptionid>/<resourcegroupname>/<workspacename>/<webservicename>/<modelname>/<modelversion>/<designation>/<year>/3

  7. Filtre os dados relevantes para você com base no Nome. Se você armazenou previsões e entradas, precisa criar uma consulta para cada.

  8. Selecione as setas duplas para baixo ao lado do título de coluna de Conteúdo para combinar os arquivos.

    Conteúdo do Power BI

  9. Selecione OK. Os dados são pré-carregados.

    Combinar arquivos no Power BI

  10. Selecione Fechar e Aplicar.

  11. Se você adicionou entradas e previsões, suas tabelas são automaticamente ordenadas por valores de RequestId.

  12. Comece a criar relatórios personalizados em seus dados de modelo.

Analisar dados de modelo com o Azure Databricks

  1. Crie um workspace do Azure Databricks.

  2. Vá para seu workspace do Databricks.

  3. No seu workspace do Databricks, selecione Carregar Dados.

    Selecionar a opção Carregar Dados do Databricks

  4. Selecione Criar Tabela e Outras Fontes de Dados>Armazenamento de Blobs do Azure>Criar Tabela no Notebook.

    Criação de tabela no Databricks

  5. Atualize o local dos seus dados. Veja um exemplo:

    file_location = "wasbs://mycontainer@storageaccountname.blob.core.windows.net/modeldata/1a2b3c4d-5e6f-7g8h-9i10-j11k12l13m14/myresourcegrp/myWorkspace/aks-w-collv9/best_model/10/inputs/2018/*/*/data.csv" 
    file_type = "csv"
    

    Configuração do Databricks

  6. Siga as etapas no modelo para exibir e analisar seus dados.

Próximas etapas

Detectar descompasso de dados nos dados coletados.