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 distribueringsmodell med Mosaic AI Model Serving slutpunkt.
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 Notebook-filer i Azure Databricks ä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 Model Serving att artefakter från Unity Catalog-volymer 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.