Partilhar via


Gerenciar sessão de computação de fluxo de prompt no estúdio de Aprendizado de Máquina do Azure

Uma sessão de computação de fluxo de prompt fornece recursos de computação necessários para a execução do aplicativo, incluindo uma imagem do Docker que contém todos os pacotes de dependência necessários. Esse ambiente confiável e escalável permite um fluxo rápido para executar eficientemente suas tarefas e funções para uma experiência de usuário perfeita.

Permissões e funções para gerenciamento de sessão de computação

Para atribuir funções, você precisa ter owner permissão ou Microsoft.Authorization/roleAssignments/write permissão no recurso.

Para usuários da sessão de computação, atribua a AzureML Data Scientist função no espaço de trabalho. Para saber mais, consulte Gerenciar o acesso a um espaço de trabalho do Azure Machine Learning.

A atribuição de função pode levar vários minutos para entrar em vigor.

Iniciar uma sessão de computação em estúdio

Antes de usar o estúdio do Azure Machine Learning para iniciar uma sessão de computação, certifique-se de que:

  • Você tem a AzureML Data Scientist função no espaço de trabalho.
  • O armazenamento de dados padrão (geralmente workspaceblobstore) em seu espaço de trabalho é o tipo de blob.
  • O diretório de trabalho (workspaceworkingdirectory) existe no espaço de trabalho.
  • Se você usar uma rede virtual para fluxo de prompt, compreenderá as considerações em Isolamento de rede no fluxo de prompt.

Iniciar uma sessão de computação em uma página de fluxo

Um fluxo liga-se a uma sessão de computação. Você pode iniciar uma sessão de computação em uma página de fluxo.

  • Selecione Iniciar. Inicie uma sessão de computação usando o ambiente definido na flow.dag.yaml pasta de fluxo, ela é executada no tamanho da máquina virtual (VM) da computação sem servidor que você tem cota suficiente no espaço de trabalho.

    Captura de tela do fluxo de prompt com as configurações padrão para iniciar uma sessão de computação em uma página de fluxo.

  • Selecione Iniciar com configurações avançadas. Nas configurações avançadas, você pode:

    • Selecione o tipo de computação. Você pode escolher entre computação sem servidor e instância de computação.
      • Se você escolher computação sem servidor, poderá definir as seguintes configurações:

        • Personalize o tamanho da VM que a sessão de computação usa. Opte por VM série D e superior. Para obter mais informações, consulte a seção sobre séries e tamanhos de VM suportados
        • Personalize o tempo ocioso, que exclui a sessão de computação automaticamente se ela não estiver em uso por um tempo.
        • Defina a identidade gerenciada atribuída pelo usuário. A sessão de computação usa essa identidade para extrair uma imagem base, autenticar com conexão e instalar pacotes. Verifique se a identidade gerenciada atribuída pelo usuário tem permissão suficiente. Se você não definir essa identidade, usaremos a identidade do usuário por padrão.

        Captura de tela do fluxo de prompt com configurações avançadas usando computação sem servidor para iniciar uma sessão de computação em uma página de fluxo.

        az ml workspace update -f workspace_update_with_multiple_UAIs.yml --subscription <subscription ID> --resource-group <resource group name> --name <workspace name>
        

        Em que o conteúdo do workspace_update_with_multiple_UAIs.yml é o seguinte:

        identity:
           type: system_assigned, user_assigned
           user_assigned_identities:
            '/subscriptions/<subscription_id>/resourcegroups/<resource_group_name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<uai_name>': {}
            '<UAI resource ID 2>': {}
        

        Gorjeta

        As seguintes atribuições de função do RBAC do Azure são necessárias em sua identidade gerenciada atribuída pelo usuário para seu espaço de trabalho do Azure Machine Learning acessar dados nos recursos associados ao espaço de trabalho.

        Recurso Permissão
        Área de trabalho do Azure Machine Learning Contribuinte
        Armazenamento do Azure Colaborador (plano de controle) + Contribuidor de dados de Blob de armazenamento + Colaborador privilegiado de dados de arquivo de armazenamento (plano de dados, consumir rascunho de fluxo em compartilhamento de arquivos e dados em blob)
        Azure Key Vault (ao usar o modelo de permissão de políticas de acesso) Colaborador + quaisquer permissões de política de acesso além das operações de limpeza, este é o modo padrão para o Cofre de Chaves do Azure vinculado.
        Azure Key Vault (ao usar o modelo de permissão RBAC) Colaborador (plano de controlo) + Administrador do Cofre de Chaves (plano de dados)
        Registo de Contentores do Azure Contribuinte
        Azure Application Insights Contribuinte

        Nota

        O remetente do trabalho precisa ter assign permissão sobre a identidade gerenciada atribuída ao usuário, você pode atribuir Managed Identity Operator função, pois toda vez que criar sessão de computação sem servidor, ele atribuirá a identidade gerenciada atribuída ao usuário para computar.

      • Se você escolher instância de computação como tipo de computação, só poderá definir o tempo de desligamento ocioso.

        • Como está sendo executado em uma instância de computação existente, o tamanho da VM é fixo e não pode ser alterado no lado da sessão.

        • A identidade usada para esta sessão também é definida na instância de computação, por padrão ela usa a identidade do usuário. Saiba mais sobre como atribuir identidade à instância de computação

        • Para o tempo de desligamento ocioso, ele é usado para definir o ciclo de vida da sessão de computação, se a sessão estiver ociosa pelo tempo definido, ela será excluída automaticamente. E se você tiver o desligamento ocioso habilitado na instância de computação, ele terá efeito a partir do nível de computação.

          Captura de tela do fluxo de prompt com configurações avançadas usando instância de computação para iniciar uma sessão de computação em uma página de fluxo.

        • Saiba mais sobre como criar e gerenciar instâncias de computação

Usar uma sessão de computação para enviar uma execução de fluxo na CLI/SDK

Além do studio, você também pode especificar a sessão de computação em CLI/SDK ao enviar uma execução de fluxo.

Você também pode especificar o tipo de instância ou o nome da instância de computação na parte do recurso. Se você não especificar o tipo de instância ou o nome da instância de computação, o Aprendizado de Máquina do Azure escolhe um tipo de instância (tamanho da VM) com base em fatores como cota, custo, desempenho e tamanho do disco. Saiba mais sobre computação sem servidor.

$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Run.schema.json
flow: <path_to_flow>
data: <path_to_flow>/data.jsonl

# specify identity used by serverless compute.
# default value
# identity:
#   type: user_identity 

# use workspace first UAI
# identity:
#   type: managed
  
# use specified client_id's UAI
# identity:
#   type: managed
#   client_id: xxx

column_mapping:
  url: ${data.url}

# define cloud resource

resources:
  instance_type: <instance_type> # serverless compute type
  # compute: <compute_instance_name> # use compute instance as compute type

Envie esta execução via CLI:

pfazure run create --file run.yml

Nota

O desligamento ocioso é de uma hora se você estiver usando CLI/SDK para enviar uma execução de fluxo. Você pode ir para a página de computação para liberar a computação.

Arquivos de referência fora da pasta de fluxo

Às vezes, você pode querer fazer referência a um requirements.txt arquivo que está fora da pasta de fluxo. Por exemplo, você pode ter um projeto complexo que inclui vários fluxos e eles compartilham o mesmo requirements.txt arquivo. Para fazer isso, você pode adicionar este campo additional_includes ao flow.dag.yaml. O valor deste campo é uma lista do caminho relativo do arquivo/pasta para a pasta de fluxo. Por exemplo, se requirements.txt estiver na pasta pai da pasta de fluxo, você poderá adicioná-lo ../requirements.txt ao additional_includes campo.

inputs:
  question:
    type: string
outputs:
  output:
    type: string
    reference: ${answer_the_question_with_context.output}
environment:
  python_requirements_txt: requirements.txt
additional_includes:
  - ../requirements.txt
...

O requirements.txt arquivo é copiado para a pasta de fluxo e use-o para iniciar sua sessão de computação.

Atualizar uma sessão de computação na página de fluxo do estúdio

Em uma página de fluxo, você pode usar as seguintes opções para gerenciar uma sessão de computação:

  • Altere as configurações da sessão de computação, altere as configurações de computação como o tamanho da VM e a identidade gerenciada atribuída pelo usuário para computação sem servidor, se você estiver usando uma instância de computação, poderá alterar para usar outra instância. Você também pode alterar
  • também pode alterar a identidade gerenciada atribuída pelo usuário para computação sem servidor. Se você alterar o tamanho da VM, a sessão de computação será redefinida com o novo tamanho da VM. Se
  • Instalar pacotes a partir de requirements.txt Abrir requirements.txt na interface do usuário de fluxo de prompt, você pode adicionar pacotes nele.
  • Exibir pacotes instalados mostra os pacotes instalados na sessão de computação. Ele inclui os pacotes instalados na imagem base e os pacotes especificados no requirements.txt arquivo na pasta de fluxo.
  • Redefinir sessão de computação exclui a sessão de computação atual e cria uma nova com o mesmo ambiente. Se você encontrar um problema de conflito de pacote, você pode tentar esta opção.
  • Parar sessão de computação exclui a sessão de computação atual. Se não houver nenhuma sessão de computação ativa na computação subjacente, o recurso de computação sem servidor também será excluído.

Captura de tela de ações para uma sessão de computação em uma página de fluxo.

Você também pode personalizar o ambiente que você usa para executar esse fluxo adicionando pacotes no requirements.txt arquivo na pasta de fluxo. Depois de adicionar mais pacotes neste arquivo, você pode escolher uma destas opções:

  • Salve e instale gatilhos pip install -r requirements.txt na pasta de fluxo. O processo pode levar alguns minutos, dependendo dos pacotes que você instala.
  • Salvar apenas salva o requirements.txt arquivo. Você mesmo pode instalar os pacotes mais tarde.

Captura de tela da opção para salvar e instalar pacotes para uma sessão de computação em uma página de fluxo.

Nota

Você pode alterar o local e até mesmo o nome do arquivo do , mas certifique-se de requirements.txtalterá-lo também no flow.dag.yaml arquivo na pasta de fluxo.

Não fixe a versão de promptflow e promptflow-tools no requirements.txt, porque já os incluímos na imagem base da sessão.

requirements.txt não suportará arquivos de roda local. Construa-os em sua imagem e atualize a imagem base personalizada no flow.dag.yaml. Saiba mais sobre como criar uma imagem base personalizada.

Adicionar pacotes em um feed privado no Azure DevOps

Se você quiser usar um feed privado no Azure DevOps, siga estas etapas:

  1. Atribua identidade gerenciada ao espaço de trabalho ou à instância de computação.

    1. Use a computação sem servidor como sessão de computação, você precisa atribuir identidade gerenciada atribuída pelo usuário ao espaço de trabalho.

      1. Crie uma identidade gerenciada atribuída pelo usuário e adicione essa identidade na organização do Azure DevOps. Para saber mais, consulte Usar entidades de serviço e identidades gerenciadas.

        Nota

        Se o botão Adicionar usuários não estiver visível, você provavelmente não terá as permissões necessárias para executar essa ação.

      2. Adicione ou atualize identidades atribuídas pelo usuário a um espaço de trabalho.

        Nota

        Certifique-se de que a identidade gerenciada atribuída pelo usuário tenha Microsoft.KeyVault/vaults/read no keyvault vinculado ao espaço de trabalho.

    2. Use a instância de computação como sessão de computação, você precisa atribuir uma identidade gerenciada atribuída pelo usuário a uma instância de computação.

  2. Adicione {private} ao URL do seu feed privado. Por exemplo, se você quiser instalar test_package a partir do test_feed Azure DevOps, adicione -i https://{private}@{test_feed_url_in_azure_devops} requirements.txt:

    -i https://{private}@{test_feed_url_in_azure_devops}
    test_package
    
  3. Especifique usando a identidade gerenciada atribuída pelo usuário na configuração da sessão de computação.

    1. Se você estiver usando computação sem servidor, especifique a identidade gerenciada atribuída pelo usuário em Iniciar com configurações avançadas se a sessão de computação não estiver em execução ou use o botão Alterar configurações da sessão de computação se a sessão de computação estiver em execução.

      Captura de tela que mostra a alternância para usar uma identidade gerenciada atribuída pelo usuário ao espaço de trabalho.

    2. Se você estiver usando a instância de computação, ela usará a identidade gerenciada atribuída pelo usuário que você atribuiu à instância de computação.

Nota

Essa abordagem se concentra principalmente em testes rápidos na fase de desenvolvimento de fluxo, se você também quiser implantar esse fluxo como ponto final, crie este feed privado em sua imagem e atualize a imagem base personalizada no flow.dag.yaml. Saiba mais sobre como criar uma imagem de base personalizada

Alterar a imagem base da sessão de computação

Por padrão, usamos a imagem base de fluxo de prompt mais recente. Se você quiser usar uma imagem base diferente, você pode criar uma personalizada.

  • No estúdio, você pode alterar a imagem base nas configurações de imagem base em configurações de sessão de computação.

Captura de tela da alteração da imagem base de uma sessão de computação em uma página de fluxo.

  • Você também pode especificar a nova imagem base no environment flow.dag.yaml arquivo na pasta de fluxo.

    Captura de tela de ações para personalizar uma imagem base para uma sessão de computação em uma página de fluxo.

    environment:
        image: <your-custom-image>
        python_requirements_txt: requirements.txt
    

Para usar a nova imagem base, você precisa redefinir a sessão de computação. Esse processo leva vários minutos, pois extrai a nova imagem base e reinstala pacotes.

Gerenciar instância sem servidor usada pela sessão de computação

Ao usar a computação sem servidor como uma sessão de computação, você pode gerenciar a instância sem servidor. Exiba a instância sem servidor na guia Lista de sessões de computação na página de computação.

Captura de tela da lista de instância sem servidor.

Você também pode acessar fluxos e execuções em execução na computação na guia Fluxos ativos e execuções . À medida que a exclusão, a instância afeta o fluxo e é executada nele.

Captura de tela da página de detalhes de computação da instância sem servidor.

Relação entre sessão de computação, recurso de computação, fluxo e usuário

  • Um único usuário pode ter vários recursos de computação (sem servidor ou instância de computação). Devido a diferentes necessidades, um único usuário pode ter vários recursos de computação. Por exemplo, um usuário pode ter vários recursos de computação com tamanho de VM diferente ou identidade gerenciada atribuída pelo usuário diferente.
  • Um recurso de computação só pode ser usado por um único usuário. Um recurso de computação é usado como caixa de desenvolvimento privada de um único usuário. Vários usuários não podem compartilhar os mesmos recursos de computação.
  • Um recurso de computação pode hospedar várias sessões de computação. Uma sessão de computação é um contêiner executado em um recurso de computação subjacente. Por exemplo, a criação de fluxo de prompt não precisa de muitos recursos de computação, portanto, um único recurso de computação pode hospedar várias sessões de computação do mesmo usuário.
  • Uma sessão de computação pertence apenas a um único recurso de computação de cada vez. Mas você pode excluir ou interromper uma sessão de computação e realocá-la para outro recurso de computação.
  • Um fluxo só pode ter uma sessão de computação. Cada fluxo é independente e define a imagem base e os pacotes python necessários na pasta flow para a sessão de computação.

Alternar o tempo de execução para a sessão de computação

As sessões de computação têm as seguintes vantagens em relação aos tempos de execução da instância de computação:

  • Gerencie automaticamente o ciclo de vida da sessão e a computação subjacente. Você não precisa mais criá-los e gerenciá-los manualmente.
  • Personalize facilmente os pacotes adicionando pacotes no requirements.txt arquivo na pasta de fluxo, em vez de criar um ambiente personalizado.

Alterne um tempo de execução de instância de computação para uma sessão de computação usando as seguintes etapas:

  • Prepare seu requirements.txt arquivo na pasta de fluxo. Certifique-se de que não fixa a versão de promptflow e promptflow-tools no requirements.txt, porque já os incluímos na imagem base. A sessão de computação instala os pacotes no requirements.txt arquivo quando é iniciada.
  • Se você criar um ambiente personalizado para criar um tempo de execução da instância de computação, poderá obter a imagem da página de detalhes do ambiente e especificá-la no flow.dag.yaml arquivo na pasta de fluxo. Para saber mais, consulte Alterar a imagem base da sessão de computação. Verifique se você ou o usuário relacionado atribuído à identidade gerenciada no espaço de trabalho tem acr pull permissão para a imagem.

Captura de tela da localização da imagem na página de detalhes do ambiente.

  • Para o recurso de computação, você pode continuar a usar a instância de computação existente se quiser gerenciar manualmente o ciclo de vida ou pode tentar computação sem servidor cujo ciclo de vida é gerenciado pelo sistema.

Próximos passos