Compartir a través de


Empaquetar artefactos personalizados para el Servicio de modelos

En este artículo se describe cómo asegurarse de que las dependencias de artefactos y archivos del modelo están disponibles en el servicio modelo con el punto de conexión de Azure Databricks .

Requisitos

MLflow 1.29 y versiones posteriores

Empaquetado de artefactos con modelos

Cuando el modelo requiere archivos o artefactos durante la inferencia, puede empaquetarlos en el artefacto del modelo al registrarlo.

Si trabaja con cuadernos de Azure Databricks, una práctica habitual es hacer que estos archivos residan en volúmenes de Catálogo de Unity. A veces, los modelos también se configuran para descargar artefactos desde Internet (como HuggingFace Tokenizers). Las cargas de trabajo en tiempo real a escala funcionan mejor cuando todas las dependencias necesarias se capturan estáticamente en tiempo de implementación. Por este motivo, Model Serving requiere que los artefactos de volúmenes de Unity Catalog se empaquetan en el propio artefacto del modelo mediante interfaces de MLflow. Los artefactos de red cargados con el modelo se deben empaquetar con el modelo siempre que sea posible.

Con el comando log_model(), de MLflow puede registrar un modelo y sus artefactos dependientes con el parámetro artifacts.

mlflow.pyfunc.log_model(
    ...
    artifacts={'model-weights': "/Volumes/catalog/schema/volume/path/to/file", "tokenizer_cache": "./tokenizer_cache"},
    ...
)

En los modelos de PyFunc, estas rutas de acceso de artefactos son accesibles desde el objeto context en context.artifacts y se pueden cargar de la manera estándar para ese tipo de archivo.

Por ejemplo, en un modelo MLflow personalizado:

class ModelPyfunc(mlflow.pyfunc.PythonModel):
    def load_context(self, context):
        self.model = torch.load(context.artifacts["model-weights"])
        self.tokenizer = transformers.BertweetTokenizer.from_pretrained("model-base", local_files_only=True, cache_dir=context.artifacts["tokenizer_cache"])
    ...

Después de empaquetar los archivos y artefactos en el artefacto del modelo, puede servir el modelo a un punto de conexión de servicio de modelos.