共用方式為


Databricks 自動記錄

Databricks 自動記錄是一種無程式代碼解決方案,可擴充 MLflow 自動記錄 ,以提供 Azure Databricks 上機器學習訓練課程的自動實驗追蹤。

當您從各種熱門機器學習連結庫定型模型時,會自動擷取 Databricks 自動記錄、模型參數、計量、檔案和譜系資訊。 訓練會話會記錄為 MLflow 追蹤執行。 模型檔案也會追蹤,以便您輕鬆地將其記錄至 MLflow 模型登錄 ,並加以部署,以使用 模型服務進行即時評分。

下列影片顯示互動式 Python 筆記本中使用 scikit-learn 模型訓練課程進行 Databricks 自動記錄。 追蹤資訊會自動擷取並顯示在 [實驗執行] 提要欄和 MLflow UI 中。

自動記錄範例

需求

  • Databricks Autologging 已在 Databricks Runtime 10.4 LTS ML 或更新版本的所有區域中正式推出。
  • Databricks Autologging 適用於具有 Databricks Runtime 9.1 LTS ML 或更新版本之選取預覽區域。

運作方式

當您將互動式 Python 筆記本附加至 Azure Databricks 叢集時,Databricks Autologging 會呼叫 mlflow.autolog() 來設定模型定型會話的追蹤。 當您在筆記本中定型模型時,系統會自動使用 MLflow 追蹤來追蹤模型定型資訊。 如需如何保護和管理此模型定型資訊的相關信息,請參閱 安全性和數據管理

mlflow.autolog() 呼叫的預設組態為:

mlflow.autolog(
    log_input_examples=False,
    log_model_signatures=True,
    log_models=True,
    disable=False,
    exclusive=False,
    disable_for_unsupported_versions=True,
    silent=False
)

您可以 自訂自動記錄組態

使用方式

若要使用 Databricks 自動記錄功能,請使用互動式 Azure Databricks Python 筆記本,在支援的架構定型機器學習模型。 Databricks 自動記錄會自動將模型歷程資訊、參數和計量記錄到 MLflow 追蹤。 您也可以 自定義 Databricks 自動記錄的行為。

注意

Databricks 自動記錄不會套用至使用 MLflow Fluent API 搭配 mlflow.start_run()建立的執行。 在這些情況下,您必須呼叫 mlflow.autolog() 以將自動記錄的內容儲存至 MLflow 執行。 請參閱 追蹤其他內容

自訂記錄行為

若要自定義記錄,請使用 mlflow.autolog()。 此函式提供組態參數來啟用模型記錄 (log_models)、收集輸入範例 (log_input_examples)、設定警告 (silent), 等等。

追蹤其他內容

若要使用 Databricks 自動記錄所建立的 MLflow 執行來追蹤其他計量、參數、檔案和元數據,請遵循 Azure Databricks 互動式 Python 筆記本中的下列步驟:

  1. 使用 exclusive=False呼叫 mlflow.autolog()
  2. 使用 mlflow.start_run()啟動 MLflow 執行。 您可以在 中 with mlflow.start_run()包裝此呼叫;當您這樣做時,執行會在完成之後自動結束。
  3. 使用 MLflow 追蹤方法,例如 mlflow.log_param()來追蹤預先定型內容。
  4. 在 Databricks 自動記錄支援的架構中定型一或多個機器學習模型。
  5. 使用 MLflow 追蹤方法,例如 mlflow.log_metric()來追蹤訓練後的內容。
  6. 如果您未在步驟 2 中使用with mlflow.start_run(),請使用 mlflow.end_run()結束 MLflow 執行

例如:

import mlflow
mlflow.autolog(exclusive=False)

with mlflow.start_run():
  mlflow.log_param("example_param", "example_value")
  # <your model training code here>
  mlflow.log_metric("example_metric", 5)

停用 Databricks 自動記錄

若要在 Azure Databricks 互動式 Python 筆記本中停用 Databricks 自動記錄功能,請使用 呼叫 mlflow.autolog()disable=True

import mlflow
mlflow.autolog(disable=True)

管理員 istrators 也可以從 中停用工作區中所有叢集的 Databricks 自動記錄[系統管理員設定] 頁面的 [進階] 索引標籤。 叢集必須重新啟動,此變更才會生效。

支援的環境和架構

互動式 Python 筆記本支援 Databricks 自動記錄功能,而且適用於下列 ML 架構:

  • scikit-learn
  • Apache Spark MLlib
  • TensorFlow
  • Keras
  • PyTorch Lightning
  • XGBoost
  • LightGBM
  • Gluon
  • Fast.ai (1.x 版)
  • statsmodels。

如需每個支援架構的詳細資訊,請參閱 MLflow 自動記錄

安全性和數據管理

使用 Databricks 自動記錄追蹤的所有模型定型資訊都會儲存在 MLflow 追蹤中,並受到 MLflow 實驗許可權保護。 您可以使用 MLflow 追蹤 API 或 UI 來共用、修改或刪除模型定型資訊

系統管理

管理員 istrators 可以為工作區中的所有互動式筆記本會話啟用或停用 Databricks 自動記錄[系統管理員設定] 頁面的 [進階] 索引標籤。 變更在叢集重新啟動之前不會生效。

限制

  • Azure Databricks 作業不支援 Databricks 自動記錄。 若要從作業使用自動記錄,您可以明確呼叫 mlflow.autolog()
  • Databricks 自動記錄只會在 Azure Databricks 叢集的驅動程序節點上啟用。 若要從背景工作節點使用自動記錄,您必須從每個背景工作角色上執行的程式代碼中明確呼叫 mlflow.autolog()。
  • 不支援 XGBoost scikit-learn 整合。

Apache Spark MLlib、Hyperopt 和自動化 MLflow 追蹤

Databricks 自動記錄不會變更 Apache Spark MLlibHyperopt 的現有自動化 MLflow 追蹤整合行為。

注意

在 Databricks Runtime 10.1 ML 中,停用 Apache Spark MLlib CrossValidator 的自動化 MLflow 追蹤整合,而且 TrainValidationSplit 模型也會停用所有 Apache Spark MLlib 模型的 Databricks 自動記錄功能。