Partilhar via


Executar pontos de extremidade em lote a partir de eventos da Grade de Eventos no armazenamento

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

A Grade de Eventos é um serviço totalmente gerenciado que você pode usar para gerenciar facilmente eventos em muitos serviços e aplicativos diferentes do Azure. O serviço simplifica a maneira como você cria aplicativos orientados a eventos e sem servidor. Este tutorial mostra como acionar o trabalho de um ponto de extremidade em lote para processar arquivos assim que eles são criados em uma conta de armazenamento. A arquitetura usa um fluxo de trabalho de aplicativo lógico para assinar esses eventos e acionar o ponto de extremidade.

O diagrama a seguir mostra a arquitetura desta solução:

Diagrama conceitual mostra os componentes para esta arquitetura.

As etapas a seguir descrevem as etapas de alto nível nesta solução:

  1. Quando um novo blob é criado em uma conta de armazenamento específica, um evento de arquivo criado é acionado.

  2. O evento é enviado para a Grade de Eventos para ser processado para todos os inscritos.

  3. O fluxo de trabalho do aplicativo lógico assina e ouve esses eventos.

    A conta de armazenamento pode conter vários ativos de dados, portanto, a filtragem de eventos é aplicada para reagir apenas a eventos que acontecem em uma pasta específica na conta de armazenamento. Se necessário, pode ser feita uma filtragem adicional, por exemplo, com base em extensões de ficheiro.

  4. O fluxo de trabalho do aplicativo lógico é acionado e executa as seguintes ações:

    1. Obtém um token de autorização para invocar pontos de extremidade em lote usando as credenciais de uma entidade de serviço.

    2. Aciona o ponto de extremidade em lote (implantação padrão) usando o arquivo recém-criado como entrada.

  5. O ponto de extremidade em lote retorna o nome do trabalho que foi criado para processar o arquivo.

Importante

Ao usar um fluxo de trabalho de aplicativo lógico que se conecta à Grade de Eventos para invocar o ponto de extremidade em lote, você gera um trabalho por cada arquivo de blob criado na conta de armazenamento. Lembre-se de que os pontos de extremidade em lote distribuem o trabalho no nível do arquivo, portanto, nenhuma paralelização acontece. Em vez disso, você usa a capacidade dos pontos de extremidade em lote para executar vários trabalhos no mesmo cluster de computação. Se você precisar executar trabalhos em pastas inteiras de forma automática, recomendamos que alterne para Invocando pontos de extremidade em lote do Azure Data Factory.

Pré-requisitos

  • Você tem um modelo implantado corretamente como um ponto de extremidade em lote. Você pode estender essa arquitetura para trabalhar com implantações de componentes de pipeline, se necessário.

  • Sua implantação em lote é executada em um cluster de computação chamado batch-cluster.

  • O aplicativo lógico que você cria se comunica com os pontos de extremidade em lote do Azure Machine Learning usando REST.

    Para obter mais informações sobre como usar a API REST para pontos de extremidade em lote, consulte Criar trabalhos e dados de entrada para pontos de extremidade em lote.

Autenticar em pontos de extremidade de lote

Os Aplicativos Lógicos do Azure podem invocar as APIs REST de pontos de extremidade em lote usando a ação HTTP . 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.

Este tutorial usa uma entidade de serviço para autenticação e interação com pontos de extremidade em lote neste cenário.

  1. Crie uma entidade de serviço seguindo Registrar um aplicativo com o Microsoft Entra ID e crie uma entidade de serviço.

  2. Crie um segredo para usar para autenticação seguindo a Opção 3: Criar um novo segredo do cliente.

  3. Certifique-se de salvar o valor secreto do cliente gerado, que aparece apenas uma vez.

  4. Certifique-se de salvar o client ID e o tenant id no painel Visão geral do aplicativo.

  5. Conceda à entidade de serviço acesso ao seu espaço de trabalho seguindo Conceder acesso. Para este exemplo, a entidade de serviço requer o seguinte:

    • Permissão no espaço de trabalho para ler implantações em lote e executar ações sobre elas.
    • Permissões para leitura/gravação em armazenamentos de dados.

Habilitar o acesso aos dados

Para indicar os dados de entrada que você deseja enviar para o trabalho de implantação, este tutorial usa URIs de nuvem fornecidos pela Grade de Eventos. Os pontos de extremidade em lote usam a identidade da computação para montar os dados, mantendo a identidade do trabalho para ler os dados montados. Portanto, você precisa atribuir uma identidade gerenciada atribuída pelo usuário ao cluster de computação e garantir que o cluster tenha acesso para montar os dados subjacentes. Para garantir o acesso aos dados, siga estes passos:

  1. Crie um recurso de identidade gerenciado:

    IDENTITY=$(az identity create  -n azureml-cpu-cluster-idn  --query id -o tsv)
    
  2. Atualize o cluster de computação para usar a identidade gerenciada que criamos:

    Nota

    Este exemplo pressupõe que você tenha um cluster de computação criado chamado cpu-cluster que é usado para a implantação padrão no ponto de extremidade.

    az ml compute update --name cpu-cluster --identity-type user_assigned --user-assigned-identities $IDENTITY
    
  3. No portal do Azure, verifique se a identidade gerenciada tem as permissões corretas para ler os dados.

    Para acessar os serviços de armazenamento, você deve ter pelo menos acesso ao Leitor de Dados de Blob de Armazenamento à conta de armazenamento. Apenas os proprietários de contas de armazenamento podem alterar o seu nível de acesso através do portal do Azure.

Criar uma aplicação lógica

  1. No portal do Azure, na home page do Azure, selecione Criar um recurso.

  2. No menu Azure Marketplace, selecione Aplicativo Lógico de Integração>.

    Captura de ecrã que mostra o menu do Azure Marketplace com opções selecionadas para Aplicação Lógica e de Integração.

  3. No painel Criar Aplicativo Lógico, na guia Noções básicas, forneça as seguintes informações sobre o recurso do aplicativo lógico.

    Property Necessário Valor Description
    Subscrição Sim <Azure-subscrição-nome> Seu nome de assinatura do Azure. Este exemplo usa Pay-As-You-Go.
    Grupo de Recursos Sim LA-TravelTime-RG O grupo de recursos do Azure onde você cria seu recurso de aplicativo lógico e recursos relacionados. Esse nome deve ser exclusivo entre regiões e pode conter apenas letras, números, hífenes (-), sublinhados (_), parênteses ((, )) e pontos (.).
    Nome Sim LA-TravelTime O nome do recurso do aplicativo lógico, que deve ser exclusivo entre regiões e pode conter apenas letras, números, hífenes (-), sublinhados (_), parênteses ()(, ) e pontos (.).

    Captura de ecrã a mostrar o portal do Azure, o painel de criação de aplicações lógicas e informações sobre o novo recurso da aplicação lógica.

  4. Antes de continuar a fazer seleções, vá para a seção Plano. Em Tipo de plano, selecione Consumo para mostrar apenas as configurações de um fluxo de trabalho de aplicativo lógico de consumo, que é executado em Aplicativos Lógicos do Azure multilocatário.

    Importante

    Para espaços de trabalho habilitados para link privado, você precisa usar o plano Standard para Aplicativos Lógicos do Azure com permitir configuração de rede privada.

    A propriedade Plan type também especifica o modelo de faturamento a ser usado.

    Tipo de plano Description
    Standard Esse tipo de aplicativo lógico é a seleção padrão e é executado em Aplicativos Lógicos do Azure de locatário único e usa o modelo de preços Padrão.
    Consumo Esse tipo de aplicativo lógico é executado em Aplicativos Lógicos do Azure globais e multilocatários e usa o modelo de preços de Consumo.
  5. Agora continue com as seguintes seleções:

    Property Necessário Valor Description
    Região Sim E.U.A. Oeste A região do datacenter do Azure para armazenar as informações do seu aplicativo. Este exemplo implanta o aplicativo lógico de exemplo na região Oeste dos EUA no Azure.
    Habilite a análise de log Sim Não Essa opção aparece e se aplica somente quando você seleciona o tipo de aplicativo Lógica de consumo . Altere essa opção somente quando quiser habilitar o log de diagnóstico. Para este tutorial, mantenha a seleção padrão.
  6. Quando terminar, selecione Rever + criar. Depois que o Azure validar as informações sobre seu recurso de aplicativo lógico, selecione Criar.

  7. Depois que o Azure implantar seu aplicativo, selecione Ir para recurso.

    O Azure abre o designer de fluxo de trabalho para seu aplicativo lógico.

Configurar os parâmetros do fluxo de trabalho

Esse fluxo de trabalho de aplicativo lógico usa parâmetros para armazenar informações específicas de que você precisa para executar a implantação em lote.

  1. Na barra de ferramentas do designer de fluxo de trabalho, selecione Parâmetros.

    A captura de tela mostra o painel Parâmetros para definir os parâmetros necessários para o fluxo de trabalho.

  2. No painel Parâmetros, selecione Criar parâmetro e forneça as seguintes informações sobre cada parâmetro a ser criado:

    Gorjeta

    Use os valores configurados em Autenticação em pontos de extremidade em lote.

    Nome do parâmetro Description Valores de exemplo
    tenant_id O ID do locatário onde o ponto de extremidade é implantado. 00000000-0000-0000-00000000
    client_id A ID do cliente para a entidade de serviço usada para invocar o ponto de extremidade. 00000000-0000-0000-00000000
    client_secret O segredo do cliente da entidade de serviço usado para invocar o ponto de extremidade. ABCDEFGhijkLMNOPQRstUVwz
    endpoint_uri O URI de pontuação do ponto final.

    Importante: Este URI é para o ponto de extremidade que você deseja executar. O ponto de extremidade deve ter uma implantação padrão configurada.
    https://<endpoint_name>.<region>.inference.ml.azure.com/jobs

    O exemplo a seguir mostra um parâmetro de exemplo:

    A captura de tela mostra como adicionar um parâmetro no designer.

    Para obter mais informações, consulte Criar parâmetros entre ambientes para entradas de fluxo de trabalho em Aplicativos Lógicos do Azure.

Adicionar o gatilho

Queremos acionar o fluxo de trabalho do aplicativo lógico sempre que um novo arquivo é criado em uma pasta específica (ativo de dados) de uma conta de armazenamento. O aplicativo lógico usa as informações do evento para invocar o ponto de extremidade em lote e passar o arquivo específico para processar.

  1. No designer de fluxo de trabalho, siga estas etapas gerais para adicionar um gatilho de Grade de Eventos chamado Quando ocorre um evento de recurso.

  2. Na caixa de informações de ligação, selecione o tipo de autenticação a utilizar e, em seguida, selecione Iniciar sessão.

  3. Na caixa de gatilho, forneça as seguintes informações:

    Property valor Description
    Tipo de Recurso Microsoft.Storage.StorageAccounts O tipo de recurso que emite os eventos.
    Subscrição o nome da subscrição A assinatura da conta de armazenamento.
    Nome do Recurso O nome da sua conta de armazenamento O nome da conta de armazenamento onde os arquivos são gerados.
    Item de tipo de evento Microsoft.Storage.BlobCreated O tipo de evento.
  4. Na lista Parâmetros avançados, selecione Filtro de prefixo e forneça o seguinte valor:

    /blobServices/default/containers/<container-name>/blobs/<path-to-data-folder>

    Importante

    A propriedade Filtro de Prefixo permite que a Grade de Eventos notifique o fluxo de trabalho somente quando um blob é criado no caminho específico que indicamos. Nesse caso, assumimos que os arquivos são criados por algum processo externo na pasta especificada por <path-to-data-folder> dentro do< container-name>, que está na conta de armazenamento selecionada. Configure esse parâmetro para corresponder ao local dos seus dados. Caso contrário, o evento será disparado para qualquer arquivo criado em qualquer local da conta de armazenamento. Para obter mais informações, consulte Filtragem de eventos para grade de eventos.

    O exemplo a seguir mostra como o gatilho aparece:

    Captura de tela da atividade de gatilho do aplicativo lógico.

Configurar as ações

  1. No gatilho Quando ocorre um evento de recurso, siga estas etapas gerais para adicionar a ação HTTP. Renomeie a ação para Autorizar.

  2. Na ação Autorizar, forneça as seguintes informações:

    Property valor Notas
    Método POST O método HTTP
    URI concat('https://login.microsoftonline.com/', parameters('tenant_id'), '/oauth2/token') Para inserir essa expressão, selecione dentro da caixa URI . Nas opções exibidas, selecione o editor de expressões (ícone de fórmula).
    Cabeçalhos Content-Type com valor application/x-www-form-urlencoded
    Corpo concat('grant_type=client_credentials&client_id=', parameters('client_id'), '&client_secret=', parameters('client_secret'), '&resource=https://ml.azure.com') Para inserir essa expressão, selecione dentro da caixa Corpo . Nas opções exibidas, selecione o editor de expressões (ícone de fórmula).

    O exemplo a seguir mostra um exemplo de ação Authorization :

    A captura de tela mostra o exemplo de ação Autorizar no fluxo de trabalho do aplicativo lógico.

  3. Na ação Autorizar, adicione outra ação HTTP e renomeie o título para Invocar.

  4. Na ação Invocar, forneça as seguintes informações:

    Property valor Notas
    Método POST O método HTTP
    URI endpoint_uri Selecione dentro da caixa URI e, em seguida, em Parâmetros, selecione endpoint_uri.
    Cabeçalhos Content-Type com valor application/json
    Cabeçalhos Authorization com valor concat('Bearer ', body('Authorize')['access_token']) Para inserir essa expressão, selecione dentro da caixa Cabeçalhos . Nas opções exibidas, selecione o editor de expressões (ícone de fórmula).
  5. Selecione dentro da caixa Corpo e, nas opções exibidas, selecione o editor de expressões (ícone de fórmula) para inserir a seguinte expressão:

    replace('{
     "properties": {
       "InputData": {
         "mnistinput": {
            "JobInputType" : "UriFile",
            "Uri" : "<JOB_INPUT_URI>"
         }
       }
      }
    }', '<JOB_INPUT_URI>', triggerBody()?[0]['data']['url'])
    

    Gorjeta

    A carga útil anterior corresponde a uma implantação de modelo. Se você estiver trabalhando com uma implantação de componente de pipeline, adapte o formato de acordo com as expectativas das entradas do pipeline. Para obter mais informações sobre como estruturar a entrada em chamadas REST, consulte Criar trabalhos e dados de entrada para pontos de extremidade em lote (REST).

    O exemplo a seguir mostra um exemplo de ação Invoke :

    A captura de tela mostra a ação Invoke de exemplo no fluxo de trabalho do aplicativo lógico.

    Nota

    A ação Invocar dispara o trabalho em lote, mas a ação não aguardará sua conclusão. Por padrão, os Aplicativos Lógicos do Azure não estão configurados para aplicativos de longa execução. Se você precisar aguardar a conclusão do trabalho, recomendamos alternar para Executar pontos de extremidade em lote do Azure Data Factory.

  6. Quando tiver terminado, guarde o fluxo de trabalho.

    O fluxo de trabalho do aplicativo lógico está pronto para ser executado e é acionado automaticamente sempre que um novo arquivo é criado no caminho indicado.

  7. Para confirmar que o aplicativo recebeu um evento com êxito, verifique o histórico de execuções do aplicativo:

    A captura de tela mostra o histórico de execução do fluxo de trabalho do aplicativo lógico.

Próximos passos