Share via


Personalizar o ambiente para tempo de execução

Personalizar o ambiente com contexto docker para tempo de execução

Esta seção pressupõe que você tenha conhecimento dos ambientes Docker e Azure Machine Learning.

Etapa 1: Preparar o contexto do docker

Criar image_build pasta

Em seu ambiente local, criar uma pasta contém os seguintes arquivos, a estrutura de pastas deve ter esta aparência:

|--image_build
|  |--requirements.txt
|  |--Dockerfile
|  |--environment.yaml

Defina seus pacotes necessários em requirements.txt

Opcional: Adicione pacotes no repositório pypi privado.

Usando o seguinte comando para baixar seus pacotes para o local: pip wheel <package_name> --index-url=<private pypi> --wheel-dir <local path to save packages>

Abra o requirements.txt arquivo e adicione seus pacotes extras e versão específica nele. Por exemplo:

###### Requirements with Version Specifiers ######
langchain == 0.0.149        # Version Matching. Must be version 0.0.149
keyring >= 4.1.1            # Minimum version 4.1.1
coverage != 3.5             # Version Exclusion. Anything except version 3.5
Mopidy-Dirble ~= 1.1        # Compatible release. Same as >= 1.1, == 1.*
<path_to_local_package>     # reference to local pip wheel package

Para obter mais informações sobre como estruturar o requirements.txt arquivo, consulte Formato de arquivo de requisitos na documentação do pip.

Nota

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

Defina o Dockerfile

Crie um Dockerfile e adicione o seguinte conteúdo e, em seguida, salve o arquivo:

FROM <Base_image>
COPY ./* ./
RUN pip install -r requirements.txt

Nota

Esta imagem do docker deve ser construída a partir da imagem base do fluxo de prompt que é mcr.microsoft.com/azureml/promptflow/promptflow-runtime:<newest_version>. Se possível, use a versão mais recente da imagem base.

Etapa 2: Criar um ambiente personalizado do Azure Machine Learning

Defina seu ambiente em environment.yaml

Em sua computação local, você pode usar a CLI (v2) para criar um ambiente personalizado com base na imagem do docker.

Nota

az login # if not already authenticated

az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>

Abra o environment.yaml arquivo e adicione o seguinte conteúdo. Substitua o espaço reservado environment_name> pelo nome do <ambiente desejado.

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: <environment_name>
build:
  path: .

Criar um ambiente

cd image_build
az ml environment create -f environment.yaml --subscription <sub-id> -g <resource-group> -w <workspace>

Nota

A criação da imagem do ambiente pode levar vários minutos.

Vá para a página da interface do usuário do espaço de trabalho, vá para a página do ambiente e localize o ambiente personalizado que você criou. Agora você pode usá-lo para criar um tempo de execução de instância de computação em seu fluxo de prompt. Para saber mais, consulte Criar tempo de execução de instância de computação na interface do usuário.

Você também pode encontrar a imagem na página de detalhes do ambiente e usá-la como imagem base em tempo de execução automático (visualização) no flow.dag.yaml arquivo na pasta de fluxo de prompt. Esta imagem também será usada para criar um ambiente para implantação de fluxo a partir da interface do usuário.

Captura de tela do nome da imagem na página de detalhes do ambiente.

Para saber mais sobre a CLI do ambiente, consulte Gerenciar ambientes.

Personalizar ambiente com pasta de fluxo para tempo de execução automático (visualização)

No flow.dag.yaml arquivo na pasta de fluxo de prompt, você pode usar environment a seção podemos definir o ambiente para o fluxo. Inclui duas partes:

  • Imagem: que é a imagem base para o fluxo, se omitida, ela usa a versão mais recente da imagem mcr.microsoft.com/azureml/promptflow/promptflow-runtime:<newest_version>base do fluxo de prompt. Se você quiser personalizar o ambiente, você pode usar a imagem que você criou na seção anterior.
  • Você também pode especificar pacotes requirements.txt, Tanto o tempo de execução automático quanto a implantação de fluxo da interface do usuário usarão o ambiente definido no flow.dag.yaml arquivo.

Captura de tela do ambiente personalizado para tempo de execução automático na página de fluxo.

Se você quiser usar feeds privados em devops do Azure, consulte Adicionar pacotes em feeds privados em devops do Azure.

Crie um aplicativo personalizado na instância de computação que possa ser usado como tempo de execução da instância de computação de fluxo de prompt

Um tempo de execução de instância de computação é um aplicativo personalizado que é executado em uma instância de computação. Você pode criar um aplicativo personalizado em uma instância de computação e, em seguida, usá-lo como um tempo de execução de fluxo de prompt. Para criar um aplicativo personalizado para essa finalidade, você precisa especificar as seguintes propriedades:

IU SDK Nota
Imagem do Docker ImageSettings.referência Imagem usada para criar este aplicativo personalizado
Porta de destino Pontos de extremidadeConfigurações.target Porta onde você deseja acessar o aplicativo, a porta dentro do contêiner
porta publicada EndpointsSettings.published Porta onde seu aplicativo está sendo executado na imagem, a porta exposta publicamente

Crie um aplicativo personalizado como tempo de execução da instância de computação de fluxo de prompt via SDK v2

import os
from azure.ai.ml import MLClient
from azure.ai.ml.entities import ComputeInstance, CustomApplications, EndpointsSettings, ImageSettings, VolumeSettings, WorkspaceConnection
from azure.identity import DefaultAzureCredential, InteractiveBrowserCredential

try:
    credential = DefaultAzureCredential()
    # Check if given credential can get token successfully.
    credential.get_token("https://management.azure.com/.default")
except Exception as ex:
    # Fall back to InteractiveBrowserCredential in case DefaultAzureCredential not work
    credential = InteractiveBrowserCredential()

ml_client = MLClient.from_config(credential=credential)

image = ImageSettings(reference='mcr.microsoft.com/azureml/promptflow/promptflow-runtime-stable:<newest_version>') 
endpoints = [EndpointsSettings(published=8081, target=8080)]

app = CustomApplications(name='promptflow-runtime',endpoints=endpoints,bind_mounts=[],image=image,environment_variables={}) 

ci_basic_name = "<compute_instance_name>"
ci_basic = ComputeInstance(name=ci_basic_name, size="<instance_type>",custom_applications=[app]) 

ml_client.begin_create_or_update(ci_basic)

Nota

Mude newest_version, compute_instance_name e instance_type para o seu próprio valor.

Criar aplicativo personalizado como tempo de execução da instância de computação por meio do modelo do Azure Resource Manager

Você pode usar esse modelo do Azure Resource Manager para criar instância de computação com aplicativo personalizado.

Implementar no Azure

Para saber mais, consulte Modelo do Azure Resource Manager para aplicativo personalizado como tempo de execução de fluxo de prompt na instância de computação.

Crie um aplicativo personalizado como tempo de execução da instância de computação de fluxo de prompt por meio da interface do usuário da instância de computação

Siga este documento para adicionar um aplicativo personalizado.

Captura de tela da computação mostrando aplicativos personalizados.

Próximos passos