Dela via


Paketera anpassade artefakter för modellservering

Den här artikeln beskriver hur du ser till att modellens fil- och artefaktberoenden är tillgängliga på din modell som betjänar med Azure Databricks-slutpunkten .

Krav

MLflow 1.29 och senare

Paketera artefakter med modeller

När din modell kräver filer eller artefakter under slutsatsdragningen kan du paketera dem i modellartefakten när du loggar modellen.

Om du arbetar med Azure Databricks-notebook-filer är det vanligt att dessa filer finns i Unity Catalog-volymer. Modeller är också ibland konfigurerade för att ladda ned artefakter från Internet (till exempel HuggingFace Tokenizers). Realtidsarbetsbelastningar i stor skala presterar bäst när alla nödvändiga beroenden registreras statiskt vid distributionen. Därför kräver modellservering att Unity Catalog-volymer som artefakter paketeras i själva modellartefakten med hjälp av MLflow-gränssnitt. Nätverksartefakter som läses in med modellen ska paketeras med modellen när det är möjligt.

Med MLflow-kommandot log_model() kan du logga en modell och dess beroende artefakter med parametern artifacts .

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

I PyFunc-modeller är dessa artefakters sökvägar tillgängliga från context objektet under context.artifacts, och de kan läsas in på standardsättet för den filtypen.

Till exempel i en anpassad MLflow-modell:

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

När dina filer och artefakter har paketerats i din modellartefakt kan du hantera din modell till en modellserverslutpunkt.