Пакеты настраиваемых артефактов для обслуживания моделей
В этой статье описывается, как обеспечить доступность зависимостей файлов и артефактов модели в конечной точке 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"])
...
После упаковки файлов и артефактов в артефакт модели можно обслуживать модель в конечной точке обслуживания моделей.