Share 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 permite gerenciar facilmente eventos em muitos serviços e aplicativos diferentes do Azure. Ele simplifica a criação de aplicativos orientados a eventos e sem servidor. Neste tutorial, aprendemos 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. Nessa arquitetura, usamos um aplicativo lógico para assinar esses eventos e acionar o ponto de extremidade.

O fluxo de trabalho tem a seguinte aparência:

Diagram displaying the different components of the architecture.

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

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

  3. Um aplicativo lógico é inscrito para ouvir esses eventos. Como a conta de armazenamento pode conter vários ativos de dados, a filtragem de eventos será aplicada para reagir apenas a eventos que acontecem em uma pasta específica dentro dela. Se necessário, pode ser feita uma filtragem adicional (por exemplo, com base em extensões de ficheiro).

  4. O Aplicativo Lógico será acionado, o que, por sua vez, irá:

    1. Ele obterá um token de autorização para invocar pontos de extremidade em lote usando as credenciais de uma entidade de serviço

    2. Ele acionará 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 retornará o nome do trabalho que foi criado para processar o arquivo.

Importante

Ao usar o Aplicativo Lógico conectado à grade de eventos para invocar o ponto de extremidade em lote, você está gerando um trabalho por cada arquivo de blob criado na conta sotrage. Lembre-se de que, como os pontos de extremidade em lote distribuem o trabalho no nível do arquivo, não haverá paralelização acontecendo. Em vez disso, você aproveitará a capacidade dos pontos de extremidade em lote de executar vários trabalhos sob o mesmo cluster de computação. Se você precisar executar trabalhos em pastas inteiras de forma automática, recomendamos alternar para Invocando pontos de extremidade em lote do Azure Data Factory.

Pré-requisitos

  • Este exemplo pressupõe que você tenha um modelo implantado corretamente como um ponto de extremidade em lote. Essa arquitetura pode perfeitamente ser estendida para trabalhar com implantações de componentes de pipeline, se necessário.
  • Este exemplo pressupõe que sua implantação em lote seja executada em um cluster de computação chamado batch-cluster.
  • O Aplicativo Lógico que estamos criando 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.

Autenticação 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 atividade 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.

Recomendamos o uso de uma entidade de serviço para autenticação e interação com pontos de extremidade em lote nesse cenário.

  1. Crie uma entidade de serviço seguindo as etapas em Registrar um aplicativo com a ID do Microsoft Entra e crie uma entidade de serviço.

  2. Crie um segredo para usar na autenticação, conforme explicado na Opção 3: Criar um novo segredo do cliente.

  3. Anote o valor secreto do cliente que é gerado. Isso só é exibido uma vez.

  4. Anote o client ID e no tenant idpainel Visão geral do aplicativo.

  5. Conceda acesso para a entidade de serviço que você criou ao seu espaço de trabalho, 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.

Habilitando o acesso aos dados

Usaremos URIs na nuvem fornecidos pela Grade de Eventos para indicar os dados de entrada a serem enviados para o trabalho de implantação. Os pontos de extremidade em lote usam a identidade da computação para montar os dados, mantendo a identidade do trabalho para lê-los uma vez montados. Portanto, precisamos atribuir uma identidade gerenciada atribuída pelo usuário ao cluster de computação para garantir que ele tenha acesso para montar os dados subjacentes. Siga estas etapas para garantir o acesso aos dados:

  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 e ele seja 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. Vá para o portal do Azure e verifique se a identidade gerenciada tem as permissões certas 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, entre com sua conta do Azure.

  2. Na home page do Azure, selecione Criar um recurso.

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

    Screenshot that shows Azure Marketplace menu with

  4. 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.

    Screenshot showing Azure portal, logic app creation pane, and info for new logic app resource.

    Propriedade 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 (-._()).
  5. 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.

    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 cobrança 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 cobrança de Consumo.

    Importante

    Para espaços de trabalho habilitados para link privado, você precisa usar o plano padrão para aplicativos lógicos com permissão de configuração de rede privada.

  6. Agora continue com as seguintes seleções:

    Propriedade 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.

    Nota: Se a sua subscrição estiver associada a um ambiente de serviço de integração, esta lista inclui esses ambientes.
    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.
  7. Quando terminar, selecione Rever + criar. Depois que o Azure validar as informações sobre seu recurso de aplicativo lógico, selecione Criar.

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

    O Azure abre o painel de seleção de modelo de fluxo de trabalho, que mostra um vídeo de introdução, gatilhos comumente usados e padrões de modelo de fluxo de trabalho.

  9. Role para baixo após as seções de vídeo e gatilhos comuns até a seção Modelos e selecione Aplicativo lógico em branco.

    Screenshot that shows the workflow template selection pane with

Configurar os parâmetros do fluxo de trabalho

Este Aplicativo Lógico usa parâmetros para armazenar informações específicas que você precisará para executar a implantação em lote.

  1. No designer de fluxo de trabalho, na barra de ferramentas, selecione a opção Parâmetros e configure-os da seguinte maneira:

    Screenshot of all the parameters required in the workflow.

  2. Para criar um parâmetro, use a opção Adicionar parâmetro :

    Screenshot showing how to add one parameter in designer.

  3. Crie os seguintes parâmetros.

    Parâmetro Description Valores de exemplo
    tenant_id ID do locatário onde o ponto de extremidade é implantado. 00000000-0000-0000-00000000
    client_id A ID do cliente da 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. https://<endpoint_name>.<region>.inference.ml.azure.com/jobs

    Importante

    endpoint_uri é o URI do ponto de extremidade que você está tentando executar. O ponto de extremidade deve ter uma implantação padrão configurada.

    Gorjeta

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

Adicionar o gatilho

Queremos acionar o Aplicativo Lógico cada vez que um novo arquivo é criado em uma determinada pasta (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 a ser processado.

  1. No designer de fluxo de trabalho, na caixa de pesquisa, selecione Interno.

  2. Na caixa de pesquisa, insira a grade de eventos e selecione o gatilho chamado Quando ocorre um evento de recurso.

  3. Configure o gatilho da seguinte maneira:

    Propriedade valor Description
    Subscrição o nome da subscrição A assinatura onde a Conta de Armazenamento do Azure é colocada.
    Tipo de Recurso Microsoft.Storage.StorageAccounts O tipo de recurso que emite os eventos.
    Nome do Recurso O nome da sua conta de armazenamento O nome da conta de armazenamento onde os arquivos serão gerados.
    Item de tipo de evento Microsoft.Storage.BlobCreated O tipo de evento.
  4. Clique em Adicionar novo parâmetro e selecione Filtro de prefixo. Adicione o valor /blobServices/default/containers/<container_name>/blobs/<path_to_data_folder>.

    Importante

    O Filtro de Prefixo permite que a Grade de Eventos notifique o fluxo de trabalho apenas quando um blob é criado no caminho específico que indicamos. Neste caso, estamos supondo que os arquivos serão criados por algum processo externo na pasta <path_to_data_folder> dentro do contêiner <container_name> 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. Consulte Filtragem de eventos para Grade de eventos para obter mais detalhes.

    O gatilho terá a seguinte aparência:

    Screenshot of the trigger activity of the Logic App.

Configurar as ações

  1. Clique em + Nova etapa.

  2. No designer de fluxo de trabalho, na caixa de pesquisa, selecione Built-in e clique em HTTP:

  3. Configure a ação da seguinte maneira:

    Propriedade valor Notas
    Método POST O método HTTP
    URI concat('https://login.microsoftonline.com/', parameters('tenant_id'), '/oauth2/token') Clique em Adicionar contexto dinâmico e, em seguida, em Expressão, para inserir esta expressão.
    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') Clique em Adicionar contexto dinâmico e, em seguida, em Expressão, para inserir esta expressão.

    A ação terá a seguinte aparência:

    Screenshot of the authorize activity of the Logic App.

  4. Clique em + Nova etapa.

  5. No designer de fluxo de trabalho, na caixa de pesquisa, selecione Built-in e clique em HTTP:

  6. Configure a ação da seguinte maneira:

    Propriedade valor Notas
    Método POST O método HTTP
    URI endpoint_uri Clique em Adicionar contexto dinâmico e selecione-o em .parameters
    Cabeçalhos Content-Type com valor application/json
    Cabeçalhos Authorization com valor concat('Bearer ', body('Authorize')['access_token']) Clique em Adicionar contexto dinâmico e, em seguida, em Expressão, para inserir esta expressão.
  7. No parâmetro Body, clique em Add dynamic context, depois em Expression, 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. Saiba mais sobre como estruturar a entrada em chamadas REST em Criar trabalhos e dados de entrada para pontos de extremidade em lote (REST).

    A ação terá a seguinte aparência:

    Screenshot of the invoke activity of the Logic App.

    Nota

    Observe que essa última ação acionará o trabalho em lote, mas não aguardará sua conclusão. As Aplicações Lógicas do Azure não foram concebidas para aplicações 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.

  8. Clique em Guardar.

  9. O Aplicativo Lógico está pronto para ser executado e será acionado automaticamente sempre que um novo arquivo for criado no caminho indicado. Você notará que o aplicativo recebeu o evento com sucesso verificando o histórico de execução dele:

    Screenshot of the invoke history of the Logic App.

Próximos passos