Verwenden benutzerdefinierter Python-Bibliotheken mit der Modellbereitstellung
In diesem Artikel erfahren Sie, wie Sie benutzerdefinierte Bibliotheken oder Bibliotheken von einem privaten Spiegelserver einschließen, wenn Sie Ihr Modell protokollieren, damit Sie sie mit Mosaik AI Model Serving-Modellbereitstellungen verwenden 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.