Поделиться через


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

В этой статье описывается, как обеспечить доступность зависимостей файлов и артефактов модели в конечной точке Azure Databricks .

Требования

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"])
    ...

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