Freigeben über


Verwenden benutzerdefinierter Python-Bibliotheken mit der Modellbereitstellung

In diesem Artikel erfahren Sie, wie Sie beim Protokollieren Ihres Modells benutzerdefinierte Bibliotheken oder Bibliotheken von einem privaten Spiegelserver einbeziehen, sodass Sie diese bei Modellimplementierungen mit Modellbereitstellung nutzen können. Sie sollten die in dieser Anleitung beschriebenen Schritte ausführen, nachdem Sie über ein trainiertes ML-Modell für die Bereitstellung verfügen, aber bevor Sie einen Azure Databricks-Modellbereitstellungsendpunkt erstellen.

Die Modellentwicklung erfordert häufig die Verwendung benutzerdefinierter Python-Bibliotheken, die Funktionen für die Vor- oder Nachverarbeitung, benutzerdefinierte Modelldefinitionen und andere freigegebene Hilfsprogramm enthalten. Darüber hinaus empfehlen viele Unternehmenssicherheitsteams die Verwendung privater PyPi-Spiegel wie Nexus oder Artifactory, um das Risiko von Angriffen auf die Lieferkette zu verringern. Azure Databricks bietet native Unterstützung für die Installation von benutzerdefinierten Bibliotheken und Bibliotheken aus einem privaten Spiegel im Azure Databricks-Arbeitsbereich.

Anforderungen

  • MLflow 1.29 oder höher

Schritt 1: Hochladen der Abhängigkeitsdatei

Databricks empfiehlt, dass Sie Ihre Abhängigkeitsdatei in Unity Catalog-Volumes hochladen. Alternativ können Sie die Abhängigkeitsdatei über die Azure Databricks-Benutzeroberfläche in Databricks File System (DBFS) hochladen.

Um sicherzustellen, dass Ihre Bibliothek für Ihr Notebook verfügbar ist, müssen Sie sie mit %pip% installieren. Mit %pip wird die Bibliothek im aktuellen Notebook installiert und die Abhängigkeit in den Cluster heruntergeladen.

Schritt 2: Protokollieren des Modells mit einer benutzerdefinierten Bibliothek

Wichtig

Die Anleitung in diesem Abschnitt ist nicht erforderlich, wenn Sie die private Bibliothek installieren, indem Sie auf einen benutzerdefinierten PyPi-Spiegel verweisen.

Nachdem Sie die Bibliothek installiert und die Python-Wheel-Datei entweder in Unity Catalog-Volumes oder DBFS hochgeladen haben, fügen Sie den folgenden Code in Ihr Skript ein. Geben Sie in extra_pip_requirements den Pfad Ihrer Abhängigkeitsdatei an.

mlflow.sklearn.log_model(model, "sklearn-model", extra_pip_requirements=["/volume/path/to/dependency.whl"])

Verwenden Sie für DBFS Folgendes:

mlflow.sklearn.log_model(model, "sklearn-model", extra_pip_requirements=["/dbfs/path/to/dependency.whl"])

Wenn Sie über eine benutzerdefinierte Bibliothek verfügen, müssen Sie beim Konfigurieren der Protokollierung alle Python-Bibliotheken angeben, die Ihrem Modell zugeordnet sind. Sie können dies mit den Parametern extra_pip_requirements oder conda_env in log_model() tun.

Wichtig

Stellen Sie bei Verwendung von DBFS sicher, dass Sie beim Protokollieren von extra_pip_requirements einen Schrägstrich (/) vor Ihren dbfs-Pfad einfügen. Weitere Informationen zu DBFS-Pfaden finden Sie unter Arbeiten mit Dateien in Azure Databricks.

from mlflow.utils.environment import _mlflow_conda_env
conda_env =  _mlflow_conda_env(
            additional_conda_deps= None,
            additional_pip_deps= ["/volumes/path/to/dependency"],
            additional_conda_channels=None,
)
mlflow.pyfunc.log_model(..., conda_env = conda_env)

Schritt 3: Aktualisieren des MLflow-Modells mit Python-Wheel-Dateien

MLflow stellt das Hilfsprogramm add_libraries_to_model() zum Protokollieren Ihres Modells mit allen Abhängigkeiten bereit, die als Python-Wheel-Dateien vorkonfiguriert sind. Dadurch werden Ihre benutzerdefinierten Bibliotheken zusammen mit dem Modell verpackt, zusätzlich zu allen anderen Bibliotheken, die als Abhängigkeiten Ihres Modells angegeben sind. Dadurch wird sichergestellt, dass die von Ihrem Modell verwendeten Bibliotheken genau die Bibliotheken sind, auf die über Ihre Trainingsumgebung zugegriffen werden kann.

Im folgenden Beispiel verweist model_uri mit der Syntax models:/<model-name>/<model-version> auf die Modellregistrierung.

Wenn Sie den Modellregistrierungs-URI verwenden, generiert dieses Hilfsprogramm eine neue Version unter Ihrem vorhandenen registrierten Modell.

import mlflow.models.utils
mlflow.models.utils.add_libraries_to_model(<model-uri>)

Schritt 4: Bereitstellen Ihres Modells

Wenn eine neue Modellversion mit den enthaltenen Paketen in der Modellregistrierung verfügbar ist, können Sie diese Modellversion einem Endpunkt mit Modellbereitstellung hinzufügen.