Packen von benutzerdefinierten Artefakten für die Modellbereitstellung
In diesem Artikel wird beschrieben, wie Sie sicherstellen, dass die Datei- und Artefaktabhängigkeiten Ihres Modells für Den Azure Databricks-Endpunkt verfügbar sind.
Anforderungen
MLflow 1.29 und höher
Packen von Artefakten mit Modellen
Wenn Ihr Modell während des Rückschlusses Dateien oder Artefakte erfordert, können Sie diese beim Protokollieren des Modells in das Modellartefakt packen.
Wenn Sie mit Azure Databricks-Notizbüchern arbeiten, empfiehlt es sich, diese Dateien in Unity-Katalogvolumes zu speichern. Modelle werden mitunter auch so konfiguriert, dass Artefakte aus dem Internet heruntergeladen werden (z. B. HuggingFace-Tokenizer). Echtzeitworkloads im großen Stil funktionieren am besten, wenn alle erforderlichen Abhängigkeiten zum Bereitstellungszeitpunkt statisch erfasst werden. Aus diesem Grund setzt Model Serving voraus, dass Unity Catalog-Volumesartefakte mithilfe von MLflow-Schnittstellen in das Modellartefakt selbst verpackt werden. Mit dem Modell geladene Netzwerkartefakte sollten nach Möglichkeit mit dem Modell gepackt werden.
Mit dem MLflow-Befehl log_model() können Sie ein Modell und seine abhängigen Artefakte mithilfe des Parameters artifacts
protokollieren.
mlflow.pyfunc.log_model(
...
artifacts={'model-weights': "/Volumes/catalog/schema/volume/path/to/file", "tokenizer_cache": "./tokenizer_cache"},
...
)
In PyFunc-Modellen ist der Zugriff auf die Pfade dieser Artefakte über das Objekt context
unter context.artifacts
möglich, und sie können auf die für diesen Dateityp übliche Weise geladen werden.
Beispielsweise in ein benutzerdefiniertes MLflow-Modell:
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"])
...
Nachdem Ihre Dateien und Artefakte in Ihrem Modellartefakt gepackt wurden, können Sie Ihr Modell einem Model Serve-Endpunkt bereitstellen.