Share via


Executar pontos de extremidade em lote do Azure Data Factory

APLICA-SE A:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)

O Big Data requer um serviço que possa orquestrar e operacionalizar processos para refinar esses enormes armazenamentos de dados brutos em insights de negócios acionáveis. O Azure Data Factory é um serviço de nuvem gerenciado criado para esses complexos projetos híbridos de extração-transformação-carga (ETL), extração-carga-transformação (ELT) e integração de dados.

O Azure Data Factory permite a criação de pipelines que podem orquestrar várias transformações de dados e gerenciá-las como uma única unidade. Os pontos de extremidade em lote são um excelente candidato para se tornar uma etapa nesse fluxo de trabalho de processamento. Neste exemplo, saiba como usar pontos de extremidade em lote nas atividades do Azure Data Factory confiando na atividade de Invocação da Web e na API REST.

Pré-requisitos

  • Este exemplo pressupõe que você tenha um modelo implantado corretamente como um ponto de extremidade em lote. Particularmente, estamos usando o classificador de condição cardíaca criado no tutorial Usando modelos MLflow em implantações em lote.

  • Um recurso do Azure Data Factory criado e configurado. Se você ainda não criou sua fábrica de dados, siga as etapas em Guia de início rápido: criar uma fábrica de dados usando o portal do Azure e o Azure Data Factory Studio para criar uma.

  • Depois de criá-lo, navegue até o data factory no portal do Azure:

    Screenshot of the home page for the Azure Data Factory, with the Open Azure Data Factory Studio tile.

  • Selecione Abrir no bloco Abrir o Azure Data Factory Studio para iniciar o aplicativo Integração de Dados em uma guia separada.

Autenticação em pontos de extremidade em lote

O Azure Data Factory pode invocar as APIs REST de pontos de extremidade em lote usando a atividade de Invocação da Web. Os pontos de extremidade em lote suportam o Microsoft Entra ID para autorização e, portanto, a solicitação feita às APIs requer um tratamento de autenticação adequado.

Você pode usar uma entidade de serviço ou uma identidade gerenciada para autenticar em pontos de extremidade de lote. Recomendamos o uso de uma identidade gerenciada, pois simplifica o uso de segredos.

  1. Você pode usar a identidade gerenciada do Azure Data Factory para se comunicar com pontos de extremidade em lote. Nesse caso, você só precisa se certificar de que seu recurso do Azure Data Factory foi implantado com uma identidade gerenciada.

  2. Se você não tiver um recurso do Azure Data Factory ou se ele já tiver sido implantado sem uma identidade gerenciada, siga as seguintes etapas para criá-lo: Identidade gerenciada para o Azure Data Factory.

    Aviso

    Observe que alterar a identidade do recurso depois de implantado não é possível no Azure Data Factory. Uma vez que o recurso é criado, você precisará recriá-lo se precisar alterar a identidade dele.

  3. Depois de implantado, conceda acesso para a identidade gerenciada do recurso que você criou ao seu espaço de trabalho do Azure Machine Learning, conforme explicado em Conceder acesso. Neste exemplo, a entidade de serviço exigirá:

    1. Permissão no espaço de trabalho para ler implantações em lote e executar ações sobre elas.
    2. Permissões para leitura/gravação em armazenamentos de dados.
    3. Permissões para ler em qualquer local na nuvem (conta de armazenamento) indicado como uma entrada de dados.

Sobre o gasoduto

Vamos criar um pipeline no Azure Data Factory que pode invocar um determinado ponto de extremidade em lote sobre alguns dados. O pipeline se comunicará com os pontos de extremidade em lote do Azure Machine Learning usando REST. Para saber mais sobre como usar a API REST de pontos de extremidade em lote, leia Criar trabalhos e dados de entrada para pontos de extremidade em lote.

O pipeline terá a seguinte aparência:

Diagram that shows th high level structure of the pipeline we are creating.

É composto pelas seguintes atividades:

  • Executar ponto de extremidade em lote: é uma atividade da Web que usa o URI do ponto de extremidade em lote para invocá-lo. Ele passa o URI de dados de entrada onde os dados estão localizados e o arquivo de saída esperado.
  • Esperar pelo trabalho: é uma atividade de loop que verifica o status do trabalho criado e aguarda sua conclusão, como Concluído ou Reprovado. Esta atividade, por sua vez, utiliza as seguintes atividades:
    • Verificar status: é uma atividade da Web que consulta o status do recurso de trabalho que foi retornado como uma resposta da atividade Run Batch-Endpoint .
    • Esperar: é uma atividade de espera que controla a frequência de sondagem do status do trabalho. Definimos um padrão de 120 (2 minutos).

O pipeline requer que os seguintes parâmetros sejam configurados:

Parâmetro Descrição Valores de exemplo
endpoint_uri O URI de pontuação do ponto de extremidade https://<endpoint_name>.<region>.inference.ml.azure.com/jobs
poll_interval O número de segundos a aguardar antes de verificar o status do trabalho para conclusão. O padrão é 120. 120
endpoint_input_uri Os dados de entrada do ponto de extremidade. Vários tipos de entrada de dados são suportados. Certifique-se de que a identidade de gerenciamento que você está usando para executar o trabalho tenha acesso ao local subjacente. Alternativamente, se estiver usando armazenamentos de dados, certifique-se de que as credenciais estejam indicadas lá. azureml://datastores/.../paths/.../data/
endpoint_input_type O tipo de dados de entrada que você está fornecendo. Atualmente, os pontos de extremidade em lote suportam pastas () e Arquivo (UriFolderUriFile). O padrão é UriFolder. UriFolder
endpoint_output_uri O arquivo de dados de saída do ponto de extremidade. Ele deve ser um caminho para um arquivo de saída em um Repositório de Dados anexado ao espaço de trabalho do Aprendizado de Máquina. Não há suporte para outro tipo de URIs. Você pode usar o armazenamento de dados padrão do Azure Machine Learning, chamado workspaceblobstore. azureml://datastores/workspaceblobstore/paths/batch/predictions.csv

Aviso

Lembre-se de que esse deve ser o caminho para um arquivo que endpoint_output_uri ainda não existe. Caso contrário, o trabalho falhará com o erro o caminho já existe.

Passos

Para criar esse pipeline em seu Azure Data Factory existente e invocar pontos de extremidade em lote, siga estas etapas:

  1. Verifique se a computação em que o ponto de extremidade em lote está sendo executado tem permissões para montar os dados que o Azure Data Factory está fornecendo como entrada. Observe que o acesso ainda é concedido pela identidade que invoca o ponto de extremidade (neste caso, o Azure Data Factory). No entanto, a computação em que o ponto de extremidade em lote é executado precisa ter permissão para montar a conta de armazenamento fornecida pelo Azure Data Factory. Consulte Acesso a serviços de armazenamento para obter detalhes.

  2. Abra o Azure Data Factory Studio e, em Recursos de Fábrica, clique no sinal de adição.

  3. Selecione Importação de pipeline do modelo de pipeline>

  4. Ser-lhe-á pedido para selecionar um zip ficheiro. Usa o modelo a seguir se estiver usando identidades gerenciadas ou o seguinte se estiver usando uma entidade de serviço.

  5. Uma visualização do pipeline aparecerá no portal. Clique em Usar este modelo.

  6. O pipeline será criado para você com o nome Run-BatchEndpoint.

  7. Configure os parâmetros da implantação em lote que você está usando:

Aviso

Certifique-se de que seu ponto de extremidade em lote tenha uma implantação padrão configurada antes de enviar um trabalho para ele. O pipeline criado invocará o ponto de extremidade e, portanto, uma implantação padrão precisa ser criada e configurada.

Gorjeta

Para melhor reutilização, use o pipeline criado como um modelo e chame-o de dentro de outros pipelines do Azure Data Factory aproveitando a atividade do pipeline Executar. Nesse caso, não configure os parâmetros no pipeline interno, mas passe-os como parâmetros do pipeline externo, conforme mostrado na imagem a seguir:

Screenshot of the pipeline parameters expected for the resulting pipeline when invoked from another pipeline.

  1. Seu pipeline está pronto para ser usado.

Limitações

Ao chamar implantações em lote do Azure Machine Learning, considere as seguintes limitações:

Introdução de dados

  • Apenas armazenamentos de dados do Azure Machine Learning ou Contas de Armazenamento do Azure (Azure Blob Storage, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2) são suportados como entradas. Se os dados de entrada estiverem em outra fonte, use a atividade Cópia do Azure Data Factory antes da execução do trabalho em lote para coletar os dados em um repositório compatível.
  • Os trabalhos de ponto de extremidade em lote não exploram pastas aninhadas e, portanto, não podem funcionar com estruturas de pastas aninhadas. Se seus dados estiverem distribuídos em várias pastas, observe que você terá que achatar a estrutura.
  • Certifique-se de que o script de pontuação fornecido na implantação possa lidar com os dados conforme se espera que sejam alimentados no trabalho. Se o modelo for MLflow, leia a limitação em termos do tipo de arquivo suportado pelo momento em Usando modelos MLflow em implantações em lote.

Saídas de dados

  • Apenas armazenamentos de dados registrados do Azure Machine Learning são suportados no momento. Recomendamos que você registre a conta de armazenamento que seu Azure Data Factory está usando como um Repositório de Dados no Azure Machine Learning. Dessa forma, você será capaz de escrever de volta para a mesma conta de armazenamento de onde você está lendo.
  • Apenas as Contas de Armazenamento de Blob do Azure têm suporte para saídas. Por exemplo, o Azure Data Lake Storage Gen2 não é suportado como saída em trabalhos de implantação em lote. Se você precisar enviar os dados para um local/coletor diferente, use a atividade de Cópia do Azure Data Factory após a execução do trabalho em lote.

Próximos passos