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
- Certifique-se de atender aos pré-requisitos para a criação do ambiente.
- Verifique se você se conectou ao seu espaço de trabalho.
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.
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 noflow.dag.yaml
arquivo.
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.
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.