本文介绍如何确保模型的文件和工件依赖项在您的使用模型服务部署模型终结点上可用。
要求
MLflow 1.29 和更高版本
将构件与模型一起打包
如果模型在推理过程中需要文件或项目,你可以在记录模型时将其打包到模型项目中。
如果使用的是 Azure Databricks 笔记本,一种常见做法是让这些文件驻留在 Unity 目录卷中。 模型有时还会被配置为从互联网下载工件(例如 HuggingFace Tokenizers)。 如果在部署时以静态方式捕获所有必需的依赖项,则大规模的实时工作负载可以保持最佳性能。 因此,模型服务要求使用 MLflow 接口将 Unity 目录卷项目打包到模型项目本身中。 应尽可能地将随模型加载的网络项目与该模型一起打包。
使用 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"])
...
将文件和工件打包到模型工件中后,您可以将模型部署到 模型服务端点。