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.