Freigeben über


Arbeitsbereichsübergreifendes Freigeben von Modellen

Wichtig

Databricks empfiehlt die Verwendung von Modellen in Unity Catalog, um Modelle arbeitsbereichübergreifend gemeinsam zu nutzen. Der Ansatz in diesem Artikel ist veraltet.

Azure Databricks unterstützt das Freigeben von Modellen für mehrere Arbeitsbereiche. Beispielsweise können Sie ein Modell in einem Entwicklungsarbeitsbereich entwickeln und protokollieren und dann darauf zugreifen und mit Modellen in einem separaten Produktionsarbeitsbereich vergleichen. Dies ist nützlich, wenn mehrere Teams den Zugriff auf Modelle freigeben oder Ihre Organisation über mehrere Arbeitsbereiche verfügt, um die verschiedenen Entwicklungsphasen zu bewältigen. Für die arbeitsbereichsübergreifende Modellentwicklung und -bereitstellung empfiehlt Databricks den Ansatz Code bereitstellen, bei dem der Modelltrainingscode in mehreren Umgebungen bereitgestellt wird.

In Situationen mit mehreren Arbeitsbereichen können Sie mithilfe einer Remotemodellregistrierung auf Modelle in Azure Databricks-Arbeitsbereichen zugreifen. Beispielsweise können Data Scientists mit schreibgeschütztem Zugriff auf die Produktionsmodellregistrierung zugreifen, um ihre Entwicklungsmodelle mit den aktuellen Produktionsmodellen zu vergleichen. Nachstehend sehen Sie ein Beispiel für die Einrichtung mehrerer Arbeitsbereiche.

Mehrere Arbeitsbereiche

Der Zugriff auf eine Remoteregistrierung wird mittels Token gesteuert. Jeder Benutzer oder jedes Skript, der/das Zugriff benötigt, erstellt ein persönliches Zugriffstoken in der Remoteregistrierung und kopiert dieses Token in den Geheimnis-Manager des lokalen Arbeitsbereichs. Jede API-Anforderung, die an den Remoteregistrierungs-Arbeitsbereich gesendet wird, muss das Zugriffstoken enthalten. MLflow bietet einen einfachen Mechanismus, um die Geheimnisse anzugeben, die beim Ausführen von Modellregistrierungsvorgängen verwendet werden sollen.

Hinweis

Als bewährte Methode für die Sicherheit empfiehlt Databricks, dass Sie bei der Authentifizierung mit automatisierten Tools, Systemen, Skripten und Anwendungen persönliche Zugriffstoken verwenden, die zu Dienstprinzipalen und nicht zu Benutzern des Arbeitsbereichs gehören. Informationen zum Erstellen von Token für Dienstprinzipale finden Sie unter Verwalten von Token für einen Dienstprinzipal.

Alle Client- und Fluent-API-Methoden für die Modellregistrierung werden für Remotearbeitsbereiche unterstützt.

Anforderungen

Die arbeitsbereichsübergreifende Verwendung einer Modellregistrierung erfordert den MLflow Python-Client, Version 1.11.0 oder höher.

Hinweis

Dieser Workflow wird über die MLflow-Client-Logik implementiert. Stellen Sie sicher, dass die Umgebung, in der der Client ausgeführt wird, Zugriff hat, um Netzwerkanforderungen an den Azure Databricks-Arbeitsbereich zu senden, der die Remotemodellregistrierung enthält. Eine häufige Einschränkung für den Registrierungsarbeitsbereich ist eine Liste mit zugelassenen IPs, die Verbindungen von MLflow-Clients, die in einem Cluster in einem anderen Arbeitsbereich ausgeführt werden, verweigern kann.

Einrichten des API-Tokens für eine Remoteregistrierung

  1. Erstellen Sie im Arbeitsbereich für die Modellregistrierung ein Zugriffstoken.
  2. Erstellen Sie im lokalen Arbeitsbereich Geheimnisse zum Speichern des Zugriffstokens und der Remotearbeitsbereichsinformationen:
    1. Erstellen Sie einen Geheimnisbereich: databricks secrets create-scope <scope>.
    2. Wählen Sie einen eindeutigen Namen für den Zielarbeitsbereich aus, der hier als <prefix> angezeigt wird. Erstellen Sie anschießend drei Geheimnisse:
      • databricks secrets put-secret <scope> <prefix>-host: Geben Sie den Hostnamen des Arbeitsbereichs für die Modellregistrierung ein. Beispiel: https://westus.azuredatabricks.net/ oder https://adb-5555555555555555.19.azuredatabricks.net/.
      • databricks secrets put-secret <scope> <prefix>-token: Geben Sie das Zugriffstoken aus dem Arbeitsbereich der Modellregistrierung ein.
      • databricks secrets put-secret <scope> <prefix>-workspace-id: Geben Sie die Arbeitsbereichs-ID des Featurespeicher-Arbeitsbereichs ein, der in der URL jeder beliebigen Seite zu finden ist.

Angeben einer Remoteregistrierung

Sie können auf der Grundlage von Geheimnisbereich und Namenspräfix, die Sie für den Registrierungsarbeitsbereich erstellt haben, einen Registrierungs-URI mit dem folgenden Format erstellen:

registry_uri = f'databricks://<scope>:<prefix>'

Sie können den URI verwenden, um eine Remoteregistrierung für Fluent-API-Methoden anzugeben, indem Sie zunächst Folgendes aufrufen:

mlflow.set_registry_uri(registry_uri)

Sie können sie auch explizit angeben, wenn Sie eine MlflowClient instanziieren möchten:

client = MlflowClient(registry_uri=registry_uri)

Die folgenden Workflows zeigen Beispiele für beide Vorgehensweisen.

Registrieren eines Modells in der Remoteregistrierung

Eine Möglichkeit zum Registrieren eines Modells ist die Verwendung der mlflow.register_model-API:

mlflow.set_registry_uri(registry_uri)
mlflow.register_model(model_uri=f'runs:/<run-id>/<artifact-path>', name=model_name)

Beispiele für andere Modellregistrierungsmethoden sind im Notebook am Ende dieser Seite angegeben.

Hinweis

Beim Registrieren eines Modells in einem Remotearbeitsbereich wird eine temporäre Kopie der Modellartefakte in DBFS im Remotearbeitsbereich erstellt. Sie können diese Kopie löschen, sobald sich die Modellversion im Status READY befindet. Die temporären Dateien befinden sich im Ordner /dbfs/databricks/mlflow/tmp-external-source/<run-id>.

Sie können auch eine tracking_uri angeben, die auf einen MLflow-Nachverfolgungsdienst in einem anderen Arbeitsbereich verweist, ähnlich wie bei registry_uri. Das bedeutet, dass Sie eine Ausführung in einem Remotearbeitsbereich starten und das Modell dazu im aktuellen oder einem anderen Remotearbeitsbereich registrieren können.

Verwenden eines Modells aus der Remoteregistrierung

Sie können eine Modellversion in einer Remoteregistrierung mit mlflow.<flavor>.load_model-Methoden laden und verwenden. Dazu legen Sie zuerst den Registrierungs-URI fest:

mlflow.set_registry_uri(registry_uri)
model = mlflow.pyfunc.load_model(f'models:/<model-name>/Staging')
model.predict(...)

Alternativ können Sie die Remoteregistrierung explizit im models:/-URI angeben:

model = mlflow.pyfunc.load_model(f'models://<scope>:<prefix>@databricks/<model-name>/Staging')
model.predict(...)

Andere Hilfsmethoden für den Zugriff auf die Modelldateien werden ebenfalls unterstützt, z. B.:

client.get_latest_versions(model_name)
client.get_model_version_download_uri(model_name, version)

Verwalten eines Modells in der Remoteregistrierung

Sie können jede Aktion für Modelle in der Remoteregistrierung ausführen, sofern Sie über die erforderlichen Berechtigungen verfügen. Wenn Sie beispielsweise über KANN VERWALTEN-Berechtigungen für ein Modell verfügen, können Sie eine Modellversionsphase ändern oder das Modell mithilfe von MlflowClient-Methoden löschen:

client = MlflowClient(tracking_uri=None, registry_uri=registry_uri)
client.transition_model_version_stage(model_name, version, 'Archived')
client.delete_registered_model(model_name)

Notebookbeispiel: Remotemodellregistrierung

Das folgende Notebook gilt für Arbeitsbereiche, die für Unity Catalog nicht aktiviert sind. Es wird gezeigt, wie Sie Modelle aus dem aktuellen Arbeitsbereich auf dem MLflow-Nachverfolgungsserver protokollieren und die Modelle in der Modellregistrierung in einem anderen Arbeitsbereich registrieren. Databricks empfiehlt die Verwendung von Modellen in Unity Catalog, um Modelle arbeitsbereichübergreifend gemeinsam zu nutzen.

Beispielnotebook für die Remotemodellregistrierung

Notebook abrufen