Zabalení vlastních artefaktů pro obsluhu modelů
Tento článek popisuje, jak zajistit dostupnost závislostí souboru a artefaktů modelu na vašem
Požadavky
MLflow 1,29 a novější
Zabalení artefaktů pomocí modelů
Pokud model během odvozování vyžaduje soubory nebo artefakty, můžete je při protokolování modelu zabalit do artefaktu modelu.
Pokud pracujete s poznámkovými bloky Azure Databricks, běžným postupem je mít tyto soubory umístěné v Unity Catalogvolumes. Modely jsou také někdy nakonfigurované pro stahování artefaktů z internetu (například HuggingFace Tokenizers). Úlohy ve velkém měřítku v reálném čase fungují nejlépe, když se v době nasazení staticky zaznamenávají všechny požadované závislosti. Z tohoto důvodu nasazení modelu vyžaduje, aby artefakty Unity Catalogvolumes byly zabaleny do artefaktu modelu pomocí rozhraní MLflow. Síťové artefakty načtené s modelem by měly být zabaleny s modelem, kdykoli je to možné.
Pomocí příkazu MLflow log_model() můžete pomocí parametru artifacts
protokolovat model a jeho závislé artefakty.
mlflow.pyfunc.log_model(
...
artifacts={'model-weights': "/Volumes/catalog/schema/volume/path/to/file", "tokenizer_cache": "./tokenizer_cache"},
...
)
V modelech PyFunc jsou cesty těchto artefaktů přístupné z objektu context
pod context.artifacts
a lze je načíst standardním způsobem pro tento typ souboru.
Například ve vlastním modelu MLflow:
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"])
...
Jakmile se soubory a artefakty zabalí do artefaktu modelu, můžete model obsluhovat do koncového bodu obsluhy modelu.