共用方式為


封裝 Model Serving 的自訂成品

本文說明如何確保模型檔案和工件依賴能在使用 Mosaic AI 模型服務的 部署過程中於 端點取得。

需求

MLflow 1.29 和更新版本

使用模型封裝成品

當您的模型在推斷期間需要檔案或成品時,您可以在記錄模型時將它們封裝到模型成品中。

如果您正在使用 Azure Databricks 筆記本,常見的作法是讓這些檔案位於 Unity Catalogvolumes中。 模型有時也會設定為從因特網下載成品(例如 HuggingFace Tokenizers)。 在部署期間靜態擷取所有必要的相依性時,大規模即時工作負載會執行最佳效能。 因此,模型提供服務要求將 Unity Catalogvolumes 構件使用 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"])
    ...

在模型成品內封裝您的檔案和成品之後,您可以將模型服務至 模型服務端點