Personalización del entorno para runtime

Personalizar el entorno con el contexto de Docker para el runtime

Esta sección asume que tiene conocimientos de Docker y los entornos de Azure Machine Learning.

Paso 1: Preparación del contexto de Docker

Crear carpeta de image_build

En su entorno local, cree una carpeta que contenga los siguientes archivos, la estructura de la carpeta debe tener este aspecto:

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

Defina los paquetes necesarios en requirements.txt

Opcional: agregue paquetes en el repositorio pypi privado.

Use el siguiente comando para descargar los paquetes en local: pip wheel <package_name> --index-url=<private pypi> --wheel-dir <local path to save packages>

Abra el archivo requirements.txt y añada los paquetes adicionales y la versión específica. Por ejemplo:

###### 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 obtener más información sobre cómo estructurar el archivo requirements.txt, consulte Formato de archivo de requisitos en la documentación de pip.

Nota:

No ancle la versión de promptflow y promptflow-tools en requirements.txt, porque ya las incluimos en la imagen base del runtime.

Defina el Dockerfile

Cree un Dockerfile y agregue el siguiente contenido, después guarde el archivo:

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

Nota

Esta imagen de Docker debe compilarse a partir de la imagen base de flujo de solicitudes que es mcr.microsoft.com/azureml/promptflow/promptflow-runtime:<newest_version>. Si es posible, utilice la última versión de la imagen de base.

Paso 2: Crear un entorno personalizado de Azure Machine Learning

Defina su entorno en environment.yaml

En su equipo local, puede utilizar la CLI (v2) para crear un entorno personalizado basado en su imagen de 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 el archivo environment.yaml y agregue el siguiente contenido. Sustituya el marcador de posición <environment_name> por el nombre del entorno que desee.

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

Crear un entorno

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

Nota:

La creación de la imagen de entorno puede tardar varios minutos.

Vaya a la página de interfaz de usuario de su área de trabajo, después vaya a la página de entorno y localice el entorno personalizado que ha creado. Ahora puede usarlo para crear un entorno de ejecución de instancia de proceso en el flujo de avisos. Para saber más, consulte Crear instancia de cálculo en tiempo de ejecución en la interfaz de usuario.

También puede encontrar la imagen en la página de detalles del entorno y usarla como imagen base en tiempo de ejecución automático (versión preliminar) en el archivo flow.dag.yaml en la carpeta de flujo de avisos. Esta imagen también se usará para compilar el entorno para la implementación de flujo desde la interfaz de usuario.

Captura de pantalla del nombre de la imagen en la página de detalles del entorno.

Para más información sobre la CLI de entornos, consulte Administración de entornos.

Personalización del entorno con la carpeta de flujo para tiempo de ejecución automático (versión preliminar)

En el archivo flow.dag.yaml de la carpeta de flujo de avisos, puede usar la sección environment que podemos definir el entorno para el flujo. Incluye dos partes:

  • imagen: que es la imagen base para el flujo, si se omite, usa la versión más reciente de la imagen base del flujo de avisos mcr.microsoft.com/azureml/promptflow/promptflow-runtime:<newest_version>. Si desea personalizar el entorno, puede usar la imagen que ha creado en la sección anterior.
  • También puede especificar paquetes requirements.txt, tanto el tiempo de ejecución automático como la implementación de flujo desde la interfaz de usuario usarán el entorno definido en el archivo flow.dag.yaml.

Captura de pantalla del entorno de personalización del runtime automático en la página de flujo.

Si desea usar fuentes privados en Azure devops, consulte Agregar paquetes en fuente privado en Azure devops.

Creación de una aplicación personalizada en la instancia de proceso que se puede usar como tiempo de ejecución de instancia de proceso de flujo de avisos

Un entorno de ejecución de instancia de proceso es una aplicación personalizada que se ejecuta en una instancia de proceso. Puede crear una aplicación personalizada en una instancia de proceso y luego utilizarla como runtime de flujo de avisos. Para crear una aplicación personalizada con este fin, debe especificar las siguientes propiedades:

UI SDK Nota
Imagen de Docker ImageSettings.reference Imagen utilizada para crear esta aplicación personalizada
Puerto de destino EndpointsSettings.target Puerto en el que desea acceder a la aplicación, el puerto dentro del contenedor
puerto publicado EndpointsSettings.published Puerto donde se ejecuta su aplicación en la imagen, el puerto expuesto públicamente

Creación de una aplicación personalizada como tiempo de ejecución de instancia de proceso de flujo de avisos a través del 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:

Cambie newest_version, compute_instance_name y instance_type por su propio valor.

Crear una aplicación personalizada como runtime de instancia de proceso mediante una plantilla de Azure Resource Manager

Puede usar esta plantilla de Azure Resource Manager para crear una instancia de proceso con una aplicación personalizada.

Implementación en Azure

Para más información, vea Plantilla de Azure Resource Manager para la aplicación personalizada como runtime de flujo de avisos en la instancia de proceso.

Crear una aplicación personalizada como tiempo de ejecución de instancia de proceso de flujo de avisos a través de la interfaz de usuario de la instancia de proceso

Siga este documento para añadir una aplicación personalizada.

Captura de pantalla de un proceso que muestra aplicaciones personalizadas.

Pasos siguientes