Creación y administración de runtimes del flujo de avisos en Estudio de Azure Machine Learning

El runtime del flujo de avisos proporciona los recursos informáticos necesarios para que se ejecute la aplicación, incluida una imagen de Docker que contiene todos los paquetes de dependencias necesarios. Este entorno de runtime fiable y escalable permite al flujo de avisos ejecutar eficazmente sus tareas y funciones para brindar una experiencia fluida a los usuarios.

Azure Machine Learning admite los siguientes tipos de runtime:

Tipo de entorno de ejecución Tipo de proceso subyacente Administración del ciclo de vida Personalización del entorno
Runtime automático (versión preliminar) Proceso sin servidor e Instancia de proceso Automático Personalizar fácilmente paquetes
Runtime de instancia de proceso Instancia de proceso Manual Personalización manual a través del entorno de Azure Machine Learning

Si es un nuevo usuario, se recomienda usar el runtime automático (versión preliminar). Puede personalizar fácilmente el entorno agregando paquetes en el archivo requirements.txt en flow.dag.yaml de la carpeta de flujo.

Si quiere administrar el recurso de proceso por su cuenta, puede usar la instancia de proceso como tipo de proceso en tiempo de ejecución automático o usar el entorno de ejecución de la instancia de proceso.

Permisos y roles para la administración de runtime

Para asignar un rol, es necesario tener owner o disponer de permiso Microsoft.Authorization/roleAssignments/write sobre el recurso.

Para los usuarios del runtime, asigne el rol AzureML Data Scientist en el área de trabajo (si usa una instancia de proceso como runtime) o un punto de conexión (si usa un punto de conexión en línea administrado como runtime). Para obtener más información, consulte Administración del acceso a un área de trabajo de Azure Machine Learning.

La asignación de roles puede tardar varios minutos en surtir efecto.

Permisos y roles para implementaciones

Después de implementar un flujo de avisos, se le debe asignar al punto de conexión el rol AzureML Data Scientist del área de trabajo para la inferencia correcta. Puede realizar esta operación en cualquier momento después de crear el punto de conexión.

Creación de un runtime en la interfaz de usuario

Antes de usar Estudio de Azure Machine Learning para crear un runtime, asegúrese de:

  • Tener el rol AzureML Data Scientist en el área de trabajo.
  • El almacén de datos predeterminado (por lo general, workspaceblobstore) del área de trabajo es el tipo de blob.
  • El directorio de trabajo (workspaceworkingdirectory) existe en el área de trabajo.
  • Si usa una red virtual para el flujo de avisos, comprende las consideraciones que se indican en Aislamiento de red en el flujo de avisos.

Crear un runtime automático (versión preliminar) en una página de flujo

Automático es la opción predeterminada para un runtime. Puede iniciar un runtime automático (versión preliminar) seleccionando una opción en la lista desplegable runtime de una página de flujo.

Importante

El tiempo de ejecución automático está actualmente en versión preliminar pública. Esta versión preliminar se ofrece sin acuerdo de nivel de servicio y no se recomienda para las cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas. Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.

  • Seleccione Iniciar. Empiece a crear un entorno de ejecución automático (versión preliminar) mediante el entorno definido en flow.dag.yaml en la carpeta de flujo, se ejecuta en el tamaño de máquina virtual (VM) de proceso sin servidor que tiene suficiente cuota en el área de trabajo.

    Captura de pantalla del flujo de avisos con la configuración predeterminada para iniciar un tiempo de ejecución automático en una página de flujo.

  • Seleccione Inicio con la configuración avanzada. En la configuración avanzada, puede:

    • Seleccione el tipo de proceso. Puede elegir entre el proceso sin servidor y la instancia de proceso.
      • Si elige proceso sin servidor, puede establecer la siguiente configuración:

        • Personalizar el tamaño de máquina virtual que usa el runtime. Opte por la serie D de máquinas virtuales y versiones posteriores. Para más información, consulte la sección sobre series y tamaños de máquinas virtuales compatibles
        • Personalizar el tiempo de inactividad, que guarda el código eliminando el runtime automáticamente si no está en uso.
        • Incorporar la identidad administrada asignada por el usuario. El tiempo de ejecución automático usa esta identidad para extraer una imagen base, autenticar con paquetes de conexión e instalación. Asegúrese de que la identidad administrada asignada por el usuario tenga el permiso Azure Container Registry acrpull. Si no establece esta identidad, usamos la identidad de usuario de forma predeterminada.

        Captura de pantalla del flujo de avisos con la configuración avanzada mediante el proceso sin servidor para iniciar un tiempo de ejecución automático en una página de flujo.

        az ml workspace update -f workspace_update_with_multiple_UAIs.yml --subscription <subscription ID> --resource-group <resource group name> --name <workspace name>
        

        Donde el contenido de workspace_update_with_multiple_UAIs.yml es el siguiente:

        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>': {}
        

        Sugerencia

        Asegúrese de que el usuario tenga permiso para el rol Assign User Assigned Identity o Managed Identity Operator en el recurso de identidad asignado por el usuario. Las siguientes asignaciones de roles RBAC de Azure son necesarias en la identidad administrada asignada por el usuario para que el área de trabajo de Azure Machine Learning acceda a los datos de los recursos asociados al área de trabajo.

        Recurso Permiso
        Área de trabajo de Azure Machine Learning Colaborador
        Azure Storage Colaborador (plano de control) + Colaborador de datos de blobs de almacenamiento + Colaborador con privilegios de datos de archivos de almacenamiento (plano de datos, consumir borrador de flujo en el recurso compartido de archivos y los datos del blob)
        Azure Key Vault (al usar el modelo de permisos RBAC) Colaborador (plano de control) + administrador de Key Vault (plano de datos)
        Azure Key Vault (al usar el modelo de permisos de directivas de acceso) Colaborador + cualquier permiso de directiva de acceso, además de operaciones de purga
        Azure Container Registry Colaborador
        Azure Application Insights Colaborador
      • Si elige la instancia de proceso, solo puede establecer el tiempo de apagado de inactividad.

        • Dado que se ejecuta en una instancia de proceso existente, el tamaño de la máquina virtual es fijo y no puede cambiar en el lado en tiempo de ejecución.

        • La identidad que se usa para este entorno de ejecución también se define en la instancia de proceso, de forma predeterminada usa la identidad del usuario. Obtenga más información sobre cómo asignar identidad a la instancia de proceso

        • Para el tiempo de apagado de inactividad, se usa para definir el ciclo de vida del tiempo de ejecución, si el tiempo de ejecución está inactivo durante el tiempo establecido, se eliminará automáticamente. Y si tiene el apagado inactivo habilitado en la instancia de proceso, continuará

          Captura de pantalla del flujo de avisos con configuración avanzada mediante la instancia de proceso para iniciar un entorno de ejecución automático en una página de flujo.

Creación de un runtime de instancia de proceso en una página de runtime

Antes de crear un runtime de instancia de proceso, asegúrese de que una instancia de proceso esté disponible y en ejecución. Si no tiene una instancia de proceso, cree una en un área de trabajo de Azure Machine Learning.

  1. En la página que muestra los entornos de ejecución, seleccione Crear.

    Captura de pantalla de la página que muestra los tiempos de ejecución y el botón para crear un entorno de ejecución.

  2. Seleccione la instancia de proceso que desea usar como runtime.

    Captura de pantalla del cuadro para seleccionar una instancia de proceso.

    Dado que el usuario aísla las instancias de proceso, solo están disponibles sus propias instancias de proceso (o las asignadas a usted). Para más información, consulte Crear y administrar una instancia de proceso de Azure Machine Learning.

  3. Seleccione el botón Autenticar para autenticarse en la instancia de proceso. Solo debe autenticarse una vez por región en seis meses.

    Captura de pantalla del botón para autenticarse en una instancia de proceso.

  4. Decida si desea crear una aplicación personalizada o seleccionar una existente como un runtime:

    • Para crear una aplicación personalizada, en Aplicación personalizada, seleccione Nueva.

      Captura de pantalla de la opción para crear una nueva aplicación personalizada.

      Se recomienda esta opción para la mayoría de usuarios del flujo de avisos. El sistema de flujo de avisos crea una aplicación personalizada en una instancia de proceso como runtime.

      En Entorno, si desea usar el entorno predeterminado, seleccione Usar entorno predeterminado. Se recomienda esta opción para los nuevos usuarios del flujo de avisos.

      Captura de pantalla de la opción para usar un entorno predeterminado.

      Si desea instalar otros paquetes en su proyecto, deberá usar un entorno personalizado. Seleccione Usar entorno personalizado y, a continuación, elija un entorno en la lista que aparece. Para obtener información sobre cómo compilar su propio entorno personalizado, consulte Personalizar el entorno con el contexto de Docker para el runtime.

      Captura de pantalla de la opción para usar un entorno personalizado, junto con una lista de entornos.

      Nota:

      La instancia de proceso se reinicia de manera automática. Asegúrese de que no hay tareas o trabajos en ejecución, ya que el reinicio puede afectarlos.

    • Para usar una aplicación personalizada existente como runtime, en Aplicación personalizada, seleccione Existente. A continuación, seleccione una aplicación en el cuadro Aplicación personalizada.

      Esta opción está disponible si ha creado previamente una aplicación personalizada en una instancia de proceso. Obtenga más información sobre cómo crear y usar una aplicación personalizada como runtime.

      Captura de pantalla de la opción para usar una aplicación personalizada existente y el cuadro para seleccionar una aplicación.

Uso del runtime en la interfaz de usuario de creación del flujo de avisos

Al crear un flujo, puede seleccionar y cambiar el runtime en la lista desplegable Runtime de la parte superior derecha de la página de flujo.

Captura de pantalla de una página de flujo y la lista desplegable para seleccionar un entorno de ejecución.

Al realizar la evaluación, puede usar el runtime original en el flujo, o bien cambiarlo por uno más eficaz.

Captura de pantalla de los detalles del entorno de ejecución en la página del asistente para configurar una evaluación.

Uso de un entorno de ejecución para enviar una ejecución de flujo en la CLI o el SDK

Al igual que en la interfaz de usuario de creación, también puede especificar el entorno de ejecución en la CLI o el SDK al enviar una ejecución de flujo.

En el run.yml puede especificar el nombre del runtime o usar el runtime automático. Si especifica el nombre del runtime, usa el runtime con el nombre especificado. Si especifica automático, usa el runtime automático. Si no especifica el runtime, usa el runtime automático de forma predeterminada.

En caso de tiempo de ejecución automático, también puede especificar el tipo de instancia o el nombre de instancia de proceso en la parte del recurso. Si no especifica el tipo de instancia o el nombre de instancia de proceso, Azure Machine Learning elige un tipo de instancia (tamaño de máquina virtual) en función de factores como cuota, costo, rendimiento y tamaño de disco. Obtenga más información sobre Proceso sin 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 for automatic runtime.
# 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
# if omitted, it will use the automatic runtime, you can also specify the runtime name, specify automatic will also use the automatic runtime.
# runtime: <runtime_name> 


# define instance type only work for automatic runtime, will be ignored if you specify the runtime name.
resources:
  instance_type: <instance_type>
  # compute: <compute_instance_name> # use compute instance as compute type for automatic runtime

Envíe esta ejecución a través de la CLI:

pfazure run create --file run.yml

Nota:

Si usa el tiempo de ejecución automático para enviar la ejecución del flujo de mensajes, el apagado inactivo es de una hora.

Archivos de referencia fuera de la carpeta de flujo: solo runtime automático

A veces, es posible que quiera hacer referencia a un archivo requirements.txt que está fuera de la carpeta de flujo. Por ejemplo, puede tener un proyecto complejo que incluya varios flujos y comparta el mismo archivo requirements.txt. Para ello, puede agregar este campo additional_includes al flow.dag.yaml. El valor de este campo es una lista de la ruta de acceso relativa de archivo o carpeta a la carpeta de flujo. Por ejemplo, si requirements.txt está en la carpeta primaria de la carpeta de flujo, puede agregar ../requirements.txt al 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
...

Al enviar la ejecución del flujo mediante el runtime automático, el archivo requirements.txt se copia en la carpeta de flujo y lo usa para iniciar el runtime automático.

Actualización de un runtime en la interfaz de usuario

Actualización de un runtime automático (versión preliminar) en una página de flujo

En una página de flujo, puede usar las siguientes opciones para administrar un runtime automático (versión preliminar):

  • Instalar paquetes Abrir requirements.txt en la interfaz de usuario del flujo de avisos, puede agregar paquetes en él.
  • Ver paquetes instalados muestra los paquetes instalados en el runtime. Incluye los paquetes simulados mediante "bake" a la imagen base y los paquetes especifican en el archivo requirements.txt de la carpeta de flujo.
  • Con Restablecer se elimina el tiempo de ejecución actual y se crea otro con el mismo entorno. Si encuentra un problema de conflicto de paquetes, puede probar esta opción.
  • Editar abre la página de configuración del runtime, donde puede definir el lado de la máquina virtual y el tiempo de inactividad del runtime.
  • Con Detener se elimina el tiempo de ejecución actual. Si no hay ningún runtime activo en el proceso subyacente, también se elimina el recurso de proceso.

Captura de pantalla de las acciones de un entorno de ejecución automático en una página de flujo.

También puede personalizar el entorno que usa para ejecutar este flujo agregando paquetes en el archivo requirements.txt de la carpeta de flujo. Después de agregar más paquetes en este archivo, puede elegir cualquiera de estas opciones:

  • Guardar e instalar desencadena pip install -r requirements.txt en la carpeta de flujo. El proceso puede tardar unos minutos, en función de los paquetes que instale.
  • Guardar solo guarda el archivo requirements.txt. Puede instalar los paquetes más adelante.

Captura de pantalla de la opción para guardar e instalar paquetes para un entorno de ejecución automático en una página de flujo.

Nota:

Puede cambiar la ubicación e incluso el nombre de archivo de requirements.txt, pero asegúrese de cambiarlo también en el archivo de la flow.dag.yaml carpeta de flujo.

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

requirements.txt no admitía el archivo wheel local, necesita compilarlos en la imagen y actualizar la imagen base personalizada en flow.dag.yaml. Obtenga más información sobre cómo crear una imagen base personalizada

Adición de paquetes en una fuente privada en Azure DevOps

Si quiere usar una fuente privada en Azure DevOps, siga estos pasos:

  1. Asigne una identidad administrada al área de trabajo o a la instancia de proceso.

    1. Use el proceso sin servidor como tiempo de ejecución automático; necesita asignar la identidad administrada asignada por el usuario al área de trabajo.

      1. Cree una identidad administrada asignada por el usuario y agregue esta identidad en la organización de Azure DevOps. Para más información, vea Uso de entidades de servicio e identidades administradas.

        Nota:

        Si el botón Agregar usuarios no está visible, probablemente no tenga los permisos necesarios para realizar esta acción.

      2. Agregue o actualice las identidades asignadas por el usuario al área de trabajo.

        Nota:

        Asegúrese de que la identidad administrada asignada por el usuario tiene Microsoft.KeyVault/vaults/read en el almacén de claves vinculado del área de trabajo.

    2. Utilice la instancia de proceso como tiempo de ejecución automático, necesita asignar una identidad administrada asignada por el usuario a una instancia de proceso.

  2. Agregue {private} a la dirección URL de la fuente privada. Por ejemplo, si quiere instalar test_package desde test_feed en Azure DevOps, agregue -i https://{private}@{test_feed_url_in_azure_devops} en requirements.txt:

    -i https://{private}@{test_feed_url_in_azure_devops}
    test_package
    
  3. Especifique el uso de la identidad administrada asignada por el usuario en la configuración del entorno de ejecución.

    1. Si usa proceso sin servidor, especifique la identidad administrada asignada por el usuario en Iniciar la configuración avanzada si el tiempo de ejecución automático no se está ejecutando o use el botón Editar si se está ejecutando el tiempo de ejecución automático.

      Captura de pantalla que muestra el botón de alternancia para usar una identidad administrada asignada por el usuario del área de trabajo.

    2. Si usa la instancia de proceso, usará la identidad administrada asignada por el usuario que asignó a la instancia de proceso.

Nota:

Este enfoque se centra principalmente en las pruebas rápidas en la fase de desarrollo de flujo, si también desea implementar este flujo como punto de conexión, cree esta fuente privada en la imagen y actualice la personalización de la imagen base en flow.dag.yaml. Obtenga más información sobre cómo crear una imagen base personalizada

Cambio de la imagen base para el runtime automático (versión preliminar)

De forma predeterminada, usamos la imagen del flujo de avisos más reciente como imagen base. Si desea usar otra imagen base, puede crear una personalizada. A continuación, coloque la nueva imagen base en environment en el archivo flow.dag.yaml de la carpeta de flujo. Para usar la nueva imagen base, debe restablecer el runtime a través del comando reset. Este proceso tarda varios minutos a medida que extrae la nueva imagen base y vuelve a instalar los paquetes.

Captura de pantalla de acciones para personalizar un entorno para un tiempo de ejecución automático en una página de flujo.

environment:
    image: <your-custom-image>
    python_requirements_txt: requirements.txt

Actualización de un runtime de instancia de proceso en una página de runtime

Actualizamos periódicamente nuestra imagen base (mcr.microsoft.com/azureml/promptflow/promptflow-runtime) para incluir las características y correcciones de errores más recientes. Si es posible, se recomienda actualizar el runtime a la versión más reciente.

Cada vez que abra la página de detalles del runtime, se comprobará si hay nuevas versiones del mismo. Si hay nuevas versiones disponibles, aparece una notificación en la parte superior de la página. También puede comprobar manualmente la versión más reciente seleccionando el botón Comprobar versión.

Captura de pantalla de la página para obtener detalles en tiempo de ejecución, con el botón para comprobar la versión en tiempo de ejecución.

Para obtener la mejor experiencia y rendimiento, intente mantener actualizado el runtime. En la página para obtener detalles del runtime, seleccione el botón Actualizar. En el panel Editar runtime de la instancia de proceso, puede actualizar el entorno para el runtime. Si selecciona Usar entorno predeterminado, el sistema intenta actualizar el runtime a la versión más reciente.

Captura de pantalla del panel para editar un entorno de ejecución de instancia de proceso y la opción para usar el entorno predeterminado.

Si selecciona Usar entorno personalizado, primero debe recompilar el entorno mediante la imagen de flujo de avisos más reciente. A continuación, actualice el runtime con el nuevo entorno personalizado.

Relación entre runtime, recurso de proceso, flujo y usuario

  • Un solo usuario puede tener varios recursos de proceso (instancia sin servidor o de proceso). En función de las distintas necesidades del cliente, permitimos que un mismo usuario tenga varios recursos de proceso. Por ejemplo, un usuario puede tener varios recursos de proceso con un tamaño de máquina virtual diferente.
  • Un mismo usuario solo puede usar un recurso de proceso. El recurso de proceso es el modelo como cuadro de desarrollo privado de un solo usuario, por lo que no se permiten varios recursos de proceso compartidos por varios usuarios. En el caso de AI Studio, diferentes usuarios pueden unirse a diferentes proyectos y los datos y otros recursos deben estar aislados, por lo que no permitimos que varios usuarios compartan los mismos recursos de proceso.
  • Un recurso de proceso puede hospedar varios runtime. El runtime es un contenedor que se ejecuta en un recurso de proceso subyacente, como en el caso común, la creación de flujos de avisos no necesitaba demasiados recursos de proceso, permitimos que un único recurso de proceso hospede varios runtime desde el mismo usuario.
  • Un runtime solo pertenece a un único recurso de proceso al mismo tiempo. Pero puede eliminar o detener el runtime y reasignarlo a otro recurso de proceso.
  • En runtime automático, un flujo solo tiene un runtime, ya que se espera que cada flujo sea independiente, defina la imagen base y el paquete de Python necesario en la carpeta de flujo. En el runtime de la instancia de proceso, puede ejecutar un flujo diferente en el mismo runtime de instancia de proceso, pero debe asegurarse de que los paquetes y la imagen sean compatibles.

Cambio de entorno de ejecución de instancia de proceso a entorno de ejecución automático (versión preliminar)

El entorno de ejecución automático (versión preliminar) tiene las siguientes ventajas con respecto al entorno de ejecución de instancia de proceso:

  • Administre automáticamente el ciclo de vida del entorno de ejecución y el proceso subyacente. Ya no es necesario crearlos y administrarlos manualmente.
  • Personalice fácilmente los paquetes agregando paquetes en el archivo requirements.txt de la carpeta de flujos, en lugar de crear un entorno personalizado.

Se recomienda cambiar al entorno de ejecución automático (versión preliminar) si usa el entorno de ejecución de instancia de proceso. Puede cambiarlo a un entorno de ejecución automático (versión preliminar) mediante los pasos siguientes:

  • Prepare el archivo requirements.txt de la carpeta de flujos. Asegúrese de no anclar la versión de promptflow y promptflow-tools en requirements.txt, porque ya se han incluido en la imagen base del entorno de ejecución. El entorno de ejecución automático (versión preliminar) instalará los paquetes en el archivo requirements.txt cuando se inicie.
  • Si crea un entorno personalizado para crear el entorno de ejecución de instancia de proceso, también puede usar la imagen de la página de detalles del entorno y especificarla en el archivo flow.dag.yaml de la carpeta de flujos. Para más información, consulte Cambio de la imagen base para el entorno de ejecución automático (versión preliminar). Asegúrese de que tiene el permiso acr pull para la imagen.

Captura de pantalla de la búsqueda de la imagen en la página de detalles del entorno.

  • En el caso del recurso de proceso, puede seguir usando la instancia de proceso existente si desea administrar manualmente el ciclo de vida del recurso de proceso o puede probar el proceso sin servidor que administra el sistema.

Pasos siguientes