共用方式為


跨工作區共用模型

重要

Databricks 建議使用 Unity 目錄中 的模型,跨工作區共用模型。 本文中的方法已被取代。

Azure Databricks 支援跨多個工作區共用模型。 例如,您可以在開發工作區中開發和記錄模型,然後存取並比較與個別生產工作區中的模型。 當多個小組共用模型的存取權,或當貴組織有多個工作區來處理不同開發階段時,這非常有用。 針對跨工作區模型開發和部署,Databricks 建議 部署程式代碼 方法,其中模型定型程式代碼會部署到多個環境。

在多工作區的情況下,您可以使用遠端模型登錄來存取跨 Azure Databricks 工作區的模型。 例如,數據科學家可以使用唯讀存取來存取生產模型登錄,以比較其開發中模型與目前的生產模型。 以下顯示多工作區設定的範例。

多個工作區

遠端登錄的存取是由令牌所控制。 每位需要存取 權的使用者或腳本都會在遠端登錄中建立個人存取令牌 ,並將 該令牌複製到其本機工作區的秘密管理員 中。 傳送至遠端登錄工作區的每個 API 要求都必須包含存取令牌;MLflow 提供簡單的機制,指定執行模型登錄作業時要使用的秘密。

注意

作為安全性最佳做法,當您使用自動化工具、系統、腳本和應用程式進行驗證時,Databricks 建議您使用屬於 服務主體 的個人存取令牌,而不是工作區使用者。 若要建立服務主體的令牌,請參閱 管理服務主體的令牌。

遠端工作區支援模型登錄的所有 用戶端Fluent API 方法。

需求

跨工作區使用模型登錄需要 MLflow Python 用戶端 1.11.0 版或更新版本。

注意

此工作流程是從 MLflow 用戶端中的邏輯實作。 請確定執行客戶端的環境可以存取,以針對包含遠端模型登錄的 Azure Databricks 工作區提出網路要求。 登錄工作區上放置的常見限制是IP允許清單,可不允許從在另一個工作區中叢集中執行的MLflow用戶端進行連線。

設定遠端登錄的 API 令牌

  1. 在模型登錄工作區中, 建立存取令牌
  2. 在本機工作區中,建立秘密來儲存存取令牌和遠端工作區資訊:
    1. 建立秘密範圍: databricks secrets create-scope <scope>
    2. 為目標工作區挑選唯一的名稱,如下所示 <prefix>。 然後建立三個秘密:
      • databricks secrets put-secret <scope> <prefix>-host :輸入模型登錄工作區的主機名。 例如,https://westus.azuredatabricks.net/https://adb-5555555555555555.19.azuredatabricks.net/
      • databricks secrets put-secret <scope> <prefix>-token :從模型登錄工作區輸入存取令牌。
      • databricks secrets put-secret <scope> <prefix>-workspace-id :輸入模型登錄工作區的工作區標識符,可在 任何頁面的 URL 中找到。

注意

您可能會想要與其他用戶共用秘密範圍,因為每個工作區的秘密範圍數目有所限制。

指定遠端登錄

根據您為遠端登錄工作區建立的秘密範圍和名稱前置詞,您可以建構表單的登錄 URI:

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

您可以先呼叫下列命令,使用 URI 來指定 Fluent API 方法的遠端登入:

mlflow.set_registry_uri(registry_uri)

或者,您可以在具現化 時明確指定 MlflowClient它:

client = MlflowClient(registry_uri=registry_uri)

下列工作流程顯示這兩種方法的範例。

在遠端登錄中註冊模型

註冊模型的方法之一是使用 mlflow.register_model API:

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

您可以在此頁面結尾的筆記本中找到其他模型註冊方法的範例。

注意

在遠端工作區中註冊模型會建立遠端工作區中 DBFS 中模型成品的暫存複本。 一旦模型版本處於 READY 狀態,您可能會想要刪除此複本。 您可以在資料夾下 /dbfs/databricks/mlflow/tmp-external-source/<run-id> 找到暫存盤。

您也可以指定 tracking_uri ,以類似的方式 registry_uri,指向另一個工作區中的 MLflow 追蹤服務。 這表示您可以在遠端工作區上執行,並在目前或另一個遠端工作區中註冊其模型。

從遠端登錄使用模型

您可以先設定登入 URI,在遠端登入中載入和使用模型版本與 mlflow.<flavor>.load_model 方法:

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

或者,您可以在 URI 中 models:/ 明確指定遠端登錄:

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

也支援其他用來存取模型檔案的協助程式方法,例如:

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

在遠端登錄中管理模型

只要您擁有必要的許可權,您就可以對遠端登錄中的模型執行任何動作。 例如,如果您有模型的 CAN MANAGE 許可權,您可以使用 方法來轉換模型版本階段或刪除模型 MlflowClient

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

筆記本範例:遠端模型登錄

下列筆記本適用於未針對 Unity 目錄啟用的工作區。 它示範如何從目前的工作區將模型記錄至 MLflow 追蹤伺服器,並將模型註冊到不同工作區中的 Model Registry。 Databricks 建議使用 Unity 目錄中 的模型,跨工作區共用模型。

遠端模型登錄範例筆記本

取得筆記本