Sdílet prostřednictvím


Zabalení vlastních artefaktů pro obsluhu modelů

Tento článek popisuje, jak zajistit dostupnost závislostí souboru a artefaktů modelu na vašem Nasazení modelů pomocí koncového bodu služby model rozhraní Mosaic AI.

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.artifactsa 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.