Gerenciar uma sessão de computação do prompt flow no Estúdio do Azure Machine Learning
Uma sessão de computação do prompt flow fornece os recursos computacionais que são necessários para executar o aplicativo, incluindo uma imagem do Docker que contém todos os pacotes de dependência necessários. Esse ambiente confiável e escalonável permite que o prompt flow execute suas tarefas e funções com eficiência, garantindo uma experiência contínua.
Permissões e funções para gerenciamento de sessão de computação
Para atribuir funções, você precisa ter a permissão owner
ou Microsoft.Authorization/roleAssignments/write
no recurso.
Para usuários da sessão de computação, atribua a função de AzureML Data Scientist
no workspace. Para saber mais, confira Gerenciar o acesso a um workspace 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 no estúdio
Antes de usar o Estúdio do Azure Machine Learning para iniciar uma sessão de computação, verifique se:
- Você tem a função
AzureML Data Scientist
no workspace. - O armazenamento de dados padrão (geralmente
workspaceblobstore
) no seu workspace é do tipo blob. - O diretório de trabalho (
workspaceworkingdirectory
) existe no workspace. - Se você usar uma rede virtual para o prompt flow, compreenda as considerações sobre o Isolamento de rede no prompt flow.
Iniciar uma sessão de computação em uma página de fluxo
Um fluxo é associado 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 em
flow.dag.yaml
na pasta do fluxo. Ele é executado no tamanho da VM (máquina virtual) da computação sem servidor que você tem cota suficiente no workspace.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 escolher computação sem servidor, você poderá definir as seguintes configurações:
- Personalizar o tamanho da VM que a sessão de computação usa. Escolha VM da série D ou superiores. Para saber mais, confira a seção em Tamanhos e séries de VM compatíveis
- Personalize o tempo ocioso, o que exclui a sessão de computação automaticamente se não for usada por um período.
- Definir a identidade gerenciada atribuída pelo usuário. A sessão de computação usa essa identidade para efetuar pull de uma imagem base, autenticar-se com conexão e instalar pacotes. A identidade gerenciada atribuída pelo usuário deve ter permissão suficiente. Se você não definir essa identidade, usaremos a identidade do usuário por padrão.
- Você pode usar o comando da CLI a seguir para atribuir a identidade gerenciada atribuída pelo usuário ao workspace. Saiba mais sobre como criar e atualizar identidades atribuídas pelo usuário em um workspace.
az ml workspace update -f workspace_update_with_multiple_UAIs.yml --subscription <subscription ID> --resource-group <resource group name> --name <workspace name>
Onde o conteúdo de 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>': {}
Dica
As atribuições de função RBAC do Azure a seguir são necessárias na sua identidade gerenciada atribuída pelo usuário para que o workspace do Azure Machine Learning acesse os dados nos recursos associados ao workspace.
Recurso Permissão Workspace do Azure Machine Learning Colaborador Armazenamento do Azure Colaborador (painel de controle) + Colaborador de Dados de Blob de Armazenamento + Colaborador Privilegiado de Dados de Arquivo de Armazenamento (plano de dados, rascunho de fluxo de consumo em compartilhamento de arquivos e dados no blob) Azure Key Vault (quando o modelo de permissão de políticas de acesso é usado) Colaborador + quaisquer permissões de política de acesso além das operações de limpeza, isto é modo padrão para o Azure Key Vault vinculado. Azure Key Vault (quando o modelo de permissão RBAC é usado) Colaborador (painel de controle) + Administrador do Cofre de chaves (plano de dados) Registro de Contêiner do Azure Colaborador Azure Application Insights Colaborador Observação
A pessoa que envia o trabalho precisa ter a permissão
assign
na identidade gerenciada atribuída pelo usuário. Você pode atribuir a funçãoManaged Identity Operator
, já que sempre que você criar uma sessão de computação sem servidor uma identidade gerenciada atribuída pelo usuário será atribuída à computação.Se escolher a instância de computação como o tipo de computação, você só poderá definir o tempo de desligamento ocioso.
Como ele está em execução 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 essa 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, ela é usada para definir o ciclo de vida da sessão de computação. Se a sessão estiver ociosa pelo tempo definido, ele é excluída automaticamente. E se você habilitou o desligamento ocioso na instância de computação, ele funcionará no nível da computação.
Saiba mais sobre como criar e gerenciar uma instância de computação
- Selecione o tipo de computação. Você pode escolher entre computação sem servidor e instância de computação.
Usar uma sessão de computação para enviar uma execução de fluxo na CLI/SDK
Além do estúdio, você também pode especificar a sessão de computação na 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 Azure Machine Learning escolherá 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
Enviar essa execução via CLI:
pfazure run create --file run.yml
Observação
O desligamento ocioso é de uma hora se estiver usando a CLI/SDK para enviar uma execução de fluxo. Você pode ir para a página de computação para lançar uma computação.
Arquivos de referência fora da pasta do fluxo
Às vezes, você pode querer fazer referência a um arquivo requirements.txt
que esteja fora da pasta de fluxo. Por exemplo, você pode ter um projeto complexo que inclui vários fluxos e eles compartilham o mesmo arquivo requirements.txt
. Para fazer isso, você pode adicionar esse campo additional_includes
ao flow.dag.yaml
. O valor desse 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á adicionar ../requirements.txt
ao campo additional_includes
.
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 arquivo requirements.txt
é copiado para a pasta de fluxo. 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:
- Alterar configurações de sessão de computação: você pode mudar configurações de computação como tamanho de VM e identidade gerenciada atribuída pelo usuário para computação sem servidor. Se estiver usando uma instância de computação, você pode alterar para usar outra instância. Você também pode mudar
- também pode mudar 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 de VM. Se você
- Instalar pacotes de requirements.txt Abra
requirements.txt
na interface do usuário do prompt flow e você poderá adicionar pacotes a ele. - Exibir pacotes instalados mostra os pacotes que estão instalados na sessão de computação. Ele inclui os pacotes instalados na imagem base e os pacotes especificados no arquivo
requirements.txt
na pasta do 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 pacotes, poderá tentar essa opção.
- Interromper 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.
Você também pode personalizar o ambiente usado para executar esse fluxo adicionando pacotes no arquivo requirements.txt
na pasta de fluxo. Depois de adicionar mais pacotes neste arquivo, você pode escolher uma destas opções:
- Salvar e instalar aciona
pip install -r requirements.txt
na pasta de fluxo. O processo pode levar alguns minutos, dependendo dos pacotes instalados. - Somente salvar apenas salva o arquivo
requirements.txt
. Você pode instalar os pacotes mais tarde por conta própria.
Observação
Você pode alterar o local e até mesmo o nome do arquivo requirements.txt
, mas não se esqueça de alterá-lo no arquivo flow.dag.yaml
na pasta de fluxo.
Não fixe a versão de promptflow
e promptflow-tools
em requirements.txt
, porque já os incluímos na imagem base da sessão.
requirements.txt
não dá suporte a arquivos wheel. Compile-os em sua imagem e atualize a imagem base personalizada em flow.dag.yaml
. Saiba mais sobre como criar uma imagem de base personalizada.
Adicionar pacotes em um feed privado no Azure DevOps
Se quiser usar um feed privado no Azure DevOps, siga estas etapas:
Atribua a identidade gerenciada ao workspace ou à instância de computação.
Use a computação sem servidor como sessão de computação. Você precisa atribuir a identidade gerenciada atribuída pelo usuário ao workspace.
Crie uma identidade gerenciada atribuída pelo usuário e adicione-a na organização do Azure DevOps. Para saber mais, confira Usar entidades de serviço e identidades gerenciadas.
Observação
Se o botão Adicionar Usuários não estiver visível, é provável que você não tenha as permissões necessárias para executar essa ação.
Adicione ou atualize as identidades atribuídas pelo usuário a um workspace.
Observação
Verifique se a identidade gerenciada atribuída pelo usuário
Microsoft.KeyVault/vaults/read
no cofre de chaves vinculado do workspace.
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.
Adicione
{private}
à URL do feed privado. Por exemplo, se você quiser instalartest_package
detest_feed
no Azure DevOps, adicione-i https://{private}@{test_feed_url_in_azure_devops}
norequirements.txt
:-i https://{private}@{test_feed_url_in_azure_devops} test_package
Especifique o uso da identidade gerenciada atribuída pelo usuário na configuração de sessão de computação.
Se você estiver usando a 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 de sessão de computação se a sessão de computação estiver em execução.
Se você estiver usando a instância de computação, ela usa a identidade gerenciada atribuída pelo usuário que você atribuiu à instância de computação.
Observação
Essa abordagem concentra-se principalmente em testes rápidos na fase de desenvolvimento de fluxo, se você também quiser implantar esse fluxo como ponto de extremidade, crie este feed privado em sua imagem e atualize a imagem base personalizada em flow.dag.yaml
. Saiba mais sobre como criar imagem de base personalizada
Alterar a imagem base da sessão de computação
Por padrão, usamos a imagem base do prompt flow mais recente. Se você quiser usar uma imagem base diferente, poderá 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.
Você também pode especificar a nova imagem base em
environment
no arquivoflow.dag.yaml
na pasta 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 alguns minutos, pois puxa a nova imagem base e reinstala os pacotes.
Gerenciar a 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. Veja a instância sem servidor na guia lista de sessão de computação na página de computação.
Você também pode acessar fluxos e execuções em execução na computação na guia Fluxos e execuções ativos. À medida que a exclusão da instância afeta o fluxo e é executada nele.
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 necessidades diferentes, 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 diferentes tamanhos de VM ou diferentes identidades gerenciadas atribuídas pelo usuário.
- Um recurso de computação só pode ser usado por um único usuário. Um recurso de computação é usado como uma caixa de desenvolvimento privado 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 em execução em um recurso de computação subjacente. Por exemplo, a criação do prompt flow 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 a 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 é autossuficiente e define a imagem base e os pacotes Python necessários na pasta do fluxo da sessão de computação.
Alternar runtime para sessão de computação
As sessões de computação têm as seguintes vantagens com relação aos runtimes da instância de computação:
- Gerencia automaticamente o ciclo de vida da sessão e da computação subjacente. Você não precisa mais criá-los e gerenciá-los manualmente.
- Personalize pacotes com facilidade adicionando pacotes ao arquivo de
requirements.txt
na pasta de fluxo, em vez de criar um ambiente personalizado.
Alterne um runtime de instância de computação para uma sessão de computação usando as seguintes etapas:
- Prepare seu arquivo de
requirements.txt
na pasta de fluxo. Certifique-se de que você não fixou a versão depromptflow
epromptflow-tools
emrequirements.txt
, pois já as incluímos na imagem base. A sessão de computação instala os pacotes no arquivorequirements.txt
quando ele é iniciado. - Se você criar um ambiente personalizado para criar o runtime da instância de computação, você também pode obter a imagem da página de detalhes do ambiente e especificá-la no arquivo
flow.dag.yaml
na pasta do fluxo. Para saber mais, consulte Alterar a imagem base da sessão de computação. Verifique se você ou a identidade gerenciada atribuída pelo usuário relacionado no workspace tem a permissãoacr pull
para a imagem.
- 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 tentar a computação sem servidor, cujo ciclo de vida é gerenciado pelo sistema.