Actualización de flujos de trabajo de ML a modelos de destino en Unity Catalog

En este artículo se explica cómo migrar y actualizar flujos de trabajo de ML a modelos de destino en Unity Catalog.

Requisitos

Antes de empezar, asegúrese de cumplir los requisitos en Requisitos. En concreto, asegúrese de que los usuarios o entidades de seguridad usados para ejecutar los flujos de trabajo de entrenamiento, implementación e inferencia del modelo tienen los privilegios necesarios en un modelo registrado en el Unity Catalog:

  • Entrenamiento: Propiedad del modelo registrado (necesario para crear nuevas versiones del modelo), además de privilegiosUSE CATALOG y USE SCHEMA en el catálogo y el esquema envolventes.
  • Implementación: Propiedad del modelo registrado (necesario para crear nuevas versiones del modelo), además de privilegiosUSE CATALOG y USE SCHEMA en el catálogo y el esquema envolventes.
  • Inferencia: EXECUTE privilegio en el modelo registrado (necesario para leer y realizar la inferencia con versiones del modelo), además USE CATALOG de los privilegios "USE SCHEMA" en el catálogo y el esquema envolventes.

Creación de flujos de trabajo, implementación y entrenamiento paralelos

Para actualizar los flujos de trabajo de entrenamiento e inferencia de modelos a Unity Catalog, Databricks recomienda un enfoque incremental en el que se crea una canalización de entrenamiento, implementación e inferencia paralelas que aprovechan los modelos en El catálogo de Unity. Cuando esté familiarizado con los resultados mediante el catálogo de Unity, puede cambiar a los consumidores de nivel inferior para leer la salida de inferencia por lotes o aumentar el tráfico enrutado a los modelos en el catálogo de Unity en los puntos de conexión de servicio.

Flujo de trabajo de entrenamiento de modelo

Clone el flujo de trabajo de entrenamiento del modelo. A continuación, asegúrese de que:

  1. El clúster de flujo de trabajo tiene acceso al Unity Catalog y cumple los requisitos descritos en Requisitos.
  2. La entidad de seguridad que ejecuta el flujo de trabajo tiene los permisos necesarios en un modelo registrado en el Unity Catalog.

A continuación, modifique el código de entrenamiento del modelo en el flujo de trabajo clonado. Es posible que tenga que clonar el cuaderno ejecutado por el flujo de trabajo o crear y tener como destino una nueva rama de git en el flujo de trabajo clonado. Siga estos pasos para instalar la versión necesaria de MLflow, configurar el cliente para que tenga como destino en el Unity Catalog en el código de entrenamiento y actualizar el código de entrenamiento del modelo para registrar modelos en el Unity Catalog.

Flujo de trabajo de implementación de modelos

Clone el flujo de trabajo de implementación de modelo, siguiendo pasos similares que en Flujo de trabajo de entrenamiento del modelo para actualizar su configuración de proceso para habilitar el acceso al Unity Catalog.

Asegúrese de que la entidad de seguridad que posee el flujo de trabajo clonado tiene los permisos necesarios. Si tiene lógica de validación de modelos en el flujo de trabajo de implementación, actualícela para cargar las versiones del modelo desde UC. Use alias para administrar los lanzamientos de modelos de producción.

Flujo de trabajo de inferencia de modelos

Flujo de trabajo de inferencia por lotes

Siga los pasos similares que se indican en Flujo de trabajo de entrenamiento del modelo para clonar el flujo de trabajo de inferencia por lotes y actualizar su configuración de proceso para habilitar el acceso al Unity Catalog. Asegúrese de que la entidad de seguridad que ejecuta el trabajo de inferencia por lotes clonada tiene los permisos necesarios para cargar el modelo para la inferencia.

Flujo de trabajo de servicio de modelos

Si usa Databricks Model Serving, no es necesario clonar el punto de conexión existente. En su lugar, puede aprovechar la característica de división de tráfico para enrutar una pequeña fracción del tráfico a los modelos en Unity Catalog.

En primer lugar, asegúrese de que la entidad de seguridad que posee el punto de conexión de servicio del modelo tiene los permisos necesarios para cargar el modelo para la inferencia. A continuación, actualice el flujo de trabajo de implementación de modelo clonado para asignar un pequeño porcentaje de tráfico a las versiones del modelo en el Unity Catalog.

Promover un modelo entre entornos

Databricks recomienda implementar canalizaciones de ML como código. Esto elimina la necesidad de promover modelos entre entornos, ya que todos los modelos de producción se pueden producir a través de flujos de trabajo de entrenamiento automatizados en un entorno de producción.

Sin embargo, en algunos casos, puede ser demasiado caro volver a entrenar modelos en entornos. En estos escenarios, puede copiar versiones de modelo en modelos registrados en Unity Catalog para promoverlas entre entornos.

Necesita los siguientes privilegios para ejecutar el código de ejemplo siguiente:

  • USE CATALOG en los catálogostaging y prod.
  • USE SCHEMA en los esquemas staging.ml_team y prod.ml_team.
  • EXECUTEactivadostaging.ml_team.fraud_detection.

Además, debe ser el propietario del modelo registrado prod.ml_team.fraud_detection.

El siguiente fragmento de código usa la copy_model_versionAPI de cliente de MLflow, disponible en MLflow 2.8.0 y versiones posteriores.

import mlflow
mlflow.set_registry_uri("databricks-uc")

client = mlflow.tracking.MlflowClient()
src_model_name = "staging.ml_team.fraud_detection"
src_model_version = "1"
src_model_uri = f"models:/{src_model_name}/{src_model_version}"
dst_model_name = "prod.ml_team.fraud_detection"
copied_model_version = client.copy_model_version(src_model_uri, dst_model_name)

Una vez que la versión del modelo se encuentra en el entorno de producción, puede realizar cualquier validación previa a la implementación necesaria. A continuación, puede marcar la versión del modelo para la implementación mediante alias.

client = mlflow.tracking.MlflowClient()
client.set_registered_model_alias(name="prod.ml_team.fraud_detection", alias="Champion", version=copied_model_version.version)

En el ejemplo anterior, solo los usuarios que pueden leer desde el staging.ml_team.fraud_detection modelo registrado y escribir en el prod.ml_team.fraud_detection modelo registrado pueden promover modelos de ensayo al entorno de producción. Los mismos usuarios también pueden usar alias para administrar qué versiones de modelo se implementan en el entorno de producción. No es necesario configurar ninguna otra regla o directiva para regular la promoción y la implementación de modelos.

Puede personalizar este flujo para promover la versión del modelo en varios entornos que coincidan con la configuración, como dev, qa, y prod. El control de acceso es aplicado según lo configurado en cada entorno.

Usar webhooks de trabajo para la aprobación manual de la implementación de modelo

Databricks recomienda automatizar la implementación de modelos si es posible, mediante comprobaciones y pruebas adecuadas durante el proceso de implementación del modelo. Sin embargo, si necesita realizar aprobaciones manuales para implementar modelos de producción, puede usar webhooks de trabajo para llamar a sistemas externos de CI/CD para solicitar la aprobación manual para implementar un modelo, después de que el trabajo de entrenamiento del modelo se complete correctamente. Una vez proporcionada la aprobación manual, el sistema de CI/CD puede implementar la versión del modelo para atender el tráfico, por ejemplo estableciendo el alias "Champion" en él.