Compartir a través de


Usar bibliotecas personalizadas de Servicio de modelos

En este artículo, aprende a incluir bibliotecas o bibliotecas personalizadas desde un servidor reflejado privado al registrar el modelo, de modo que pueda usarlas con implementaciones de modelos del servicio de modelos. Debe completar los pasos detallados en esta guía después de tener un modelo de ML entrenado listo para implementarse, pero antes de crear un punto de conexión de servicio de modelos de Azure Databricks.

El desarrollo de modelos a menudo requiere el uso de bibliotecas personalizadas de Python que contienen funciones para preprocesamiento o postprocesamiento, definiciones de modelos personalizadas y otras utilidades compartidas. Además, muchos equipos de seguridad empresarial fomentan el uso de espejos privados de PyPi, como Nexus o Artifactory, para reducir el riesgo de ataques de cadena de suministro. Azure Databricks ofrece compatibilidad nativa para la instalación de bibliotecas personalizadas y bibliotecas desde un reflejo privado en el área de trabajo de Azure Databricks.

Requisitos

  • MLflow 1.29 o superior

Paso 1: Carga del archivo de dependencia

Databricks recomienda cargar el archivo de dependencia a los volúmenes del Catálogo de Unity. Como alternativa, puede cargarlo en el Sistema de archivos de Databricks (DBFS) mediante la interfaz de usuario de Azure Databricks.

Para asegurarse de que la biblioteca está disponible para el cuaderno, debe instalarla mediante %pip%. Mediante %pip instala la biblioteca en el cuaderno actual y descarga la dependencia en el clúster.

Paso 2: Registrar el modelo con una biblioteca personalizada

Importante

Las instrucciones de esta sección no son necesarias si instala la biblioteca privada apuntando a un reflejo personalizado de PyPi.

Después de instalar la biblioteca y cargar el archivo de rueda Python en los volúmenes del Unity Catalog o en DBFS, incluya el siguiente código en su script. En extra_pip_requirements, especifique la ruta de acceso del archivo de dependencia.

mlflow.sklearn.log_model(model, "sklearn-model", extra_pip_requirements=["/volume/path/to/dependency.whl"])

Para DBFS, use lo siguiente:

mlflow.sklearn.log_model(model, "sklearn-model", extra_pip_requirements=["/dbfs/path/to/dependency.whl"])

Si tiene una biblioteca personalizada, debe especificar todas las bibliotecas personalizadas de Python asociadas al modelo al configurar el registro. Puede hacerlo con los parámetros extra_pip_requirements o conda_env en log_model().

Importante

Si usa DBFS, asegúrese de incluir una barra diagonal, /, antes de la ruta de acceso dbfs al registrar extra_pip_requirements. Obtenga más información sobre las rutas de acceso de DBFS en Trabajar con archivos en Azure Databricks.

from mlflow.utils.environment import _mlflow_conda_env
conda_env =  _mlflow_conda_env(
            additional_conda_deps= None,
            additional_pip_deps= ["/volumes/path/to/dependency"],
            additional_conda_channels=None,
)
mlflow.pyfunc.log_model(..., conda_env = conda_env)

Paso 3: Actualización del modelo de MLflow con archivos de rueda de Python

MLflow proporciona la utilidad add_libraries_to_model() para registrar el modelo con todas sus dependencias previamente empaquetadas como archivos de rueda de Python. Esto empaqueta las bibliotecas personalizadas junto con el modelo, además de todas las demás bibliotecas que se especifican como dependencias del modelo. Esto garantiza que las bibliotecas usadas por el modelo sean exactamente las accesibles desde el entorno de entrenamiento.

En el ejemplo siguiente, model_uri hace referencia al registro de modelos mediante la sintaxis models:/<model-name>/<model-version>.

Cuando se usa el URI del registro del modelo, esta utilidad genera una nueva versión en el modelo registrado existente.

import mlflow.models.utils
mlflow.models.utils.add_libraries_to_model(<model-uri>)

Paso 4: Sirva a su modelo

Cuando hay disponible una nueva versión de modelo con los paquetes incluidos en el registro de modelos, puede agregar esta versión del modelo a un punto de conexión con el servicio de modelos.