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
- Asegúrese de cumplir los requisitos previos para crear el entorno.
- Asegúrese de que se ha conectado a su espacio de trabajo.
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.
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 archivoflow.dag.yaml
.
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.
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.