Пакеты настраиваемых артефактов для обслуживания моделей

В этой статье описано, как обеспечить доступность зависимостей файлов и артефактов вашей модели в конечной точке Развертывание моделей с помощью обслуживания моделей.

Требования

MLflow 1.29 и выше

Упакуйте артефакты вместе с моделями

Если для модели требуются файлы или артефакты во время вывода, их можно упаковить в артефакт модели при регистрации модели.

Если вы работаете с записными книжками Azure Databricks, рекомендуется размещать эти файлы в томах каталога Unity . Модели также иногда настраиваются для скачивания артефактов из Интернета (таких как HuggingFace Tokenizers). Нагрузки реального времени при масштабировании работают наиболее эффективно, когда все необходимые зависимости статически определены на этапе развертывания. По этой причине обслуживание моделей требует, чтобы артефакты из объемов каталога Unity упаковывались в сам артефакт модели с помощью интерфейсов MLflow. Сетевые артефакты, загружаемые вместе с моделью, следует по возможности включать в пакет с моделью.

С помощью команды MLflow log_model() можно сохранить модель и зависящие от неё артефакты с помощью параметра artifacts.

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

В моделях PyFunc пути этих артефактов доступны из context объекта в разделе context.artifacts, и их можно загрузить стандартным способом для этого типа файла.

Например, в пользовательской модели 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"])
    ...

После упаковки файлов и артефактов в артефакт модели можно обслуживать модель в конечной точке обслуживания моделей.