Creare un pacchetto di artefatti personalizzati per la gestione dei modelli

Questo articolo descrive come assicurarsi che le dipendenze tra file e artefatti del modello siano disponibili nel modello che gestisce con l'endpoint di Azure Databricks .

Requisiti

MLflow 1.29 e versioni successive

Creare un pacchetto di elementi con modelli

Quando il modello richiede file o artefatti durante l'inferenza, è possibile inserirli nell'artefatto del modello quando si registra il modello.

Se si lavora con i notebook di Azure Databricks, è consigliabile che questi file si trovino nei volumi di Unity Catalog. I modelli sono anche configurati per scaricare artefatti da Internet ( ad esempio HuggingFace Tokenizers). I carichi di lavoro in tempo reale su larga scala sono ottimali quando tutte le dipendenze necessarie vengono acquisite in modo statico in fase di distribuzione. Per questo motivo, Model Serving richiede che gli artefatti dei volumi del catalogo Unity vengano inseriti nell'artefatto del modello stesso usando le interfacce MLflow. Gli artefatti di rete caricati con il modello devono essere inseriti nel pacchetto con il modello quando possibile.

Con il comando MLflow log_model() è possibile registrare un modello e i relativi artefatti dipendenti con il artifacts parametro .

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

Nei modelli PyFunc questi percorsi degli artefatti sono accessibili dall'oggetto context in context.artifactse possono essere caricati nel modo standard per quel tipo di file.

Ad esempio, in un modello MLflow personalizzato:

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"])
    ...

Dopo che i file e gli artefatti vengono inseriti nel pacchetto all'interno dell'artefatto del modello, è possibile gestire il modello a un endpoint Model Serving.