Databricks Autologging
此頁面將涵蓋自訂 Databricks 自動記錄,在你透過各種熱門機器學習程式庫訓練模型時,該功能會自動擷取模型參數、計量、檔案和譜系資訊。 訓練工作階段會記錄為 MLflow 追蹤執行。 也會追蹤模型檔案,以便你輕鬆地將其記錄至 MLflow 模型登錄。
注意
如果要啟用生成式 AI 工作負載的追蹤記錄,MLflow 支援 OpenAI 自動記錄。
下列影片顯示 Databricks Autologging 與互動式 Python 筆記本中的 scikit-learn 模型訓練工作階段。 會自動擷取追蹤資訊並顯示在 [實驗執行] 側邊欄和 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 Tracking 來自動追蹤模型訓練資訊。 如需如何保護和管理此模型訓練資訊的相關資訊,請參閱安全性和資料管理。
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 Autologging,請使用互動式 Azure Databricks Python 筆記本,在支援的架構中訓練機器學習模型。 Databricks Autologging 會自動將模型譜系資訊、參數和計量記錄到 MLflow Tracking。 你也可以自訂 Databricks Autologging的行為。
注意
Databricks Autologging 不會套用至使用 MLflow Fluent API 與 mlflow.start_run()
建立的執行。 在這些情況下,你必須呼叫 mlflow.autolog()
以將自動記錄的內容儲存至 MLflow 執行。 請參閱追蹤其他內容。
自訂記錄行為
如果要自訂記錄,請使用 mlflow.autolog()。
此函數提供組態參數來啟用模型記錄 (log_models
)、記錄資料集 (log_datasets
)、收集輸入範例 (log_input_examples
)、記錄模型簽名 (log_model_signatures
)、設定警告 (silent
) 等等。
追蹤其他內容
如果要使用 Databricks Autologging 所建立的 MLflow 執行來追蹤其他計量、參數、檔案和中繼資料,請遵循 Azure Databricks 互動式 Python 筆記本中的下列步驟:
- 使用
exclusive=False
呼叫 mlflow.autolog()。 - 使用 mlflow.start_run() 啟動 MLflow 執行。
你可以在
with mlflow.start_run()
中裝合此呼叫;當你這樣做時,執行會在完成之後自動結束。 - 使用 MLflow 追蹤方法,例如 mlflow.log_param(),來追蹤預先訓練內容。
- 在 Databricks Autologging 支援的架構中訓練一個或多個機器學習模型。
- 使用 MLflow 追蹤方法,例如 mlflow.log_metric(),來追蹤訓練後的內容。
- 如果你未在步驟 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 Autologging
如果要在 Azure Databricks 互動式 Python 筆記本中停用 Databricks Autologging,請使用 disable=True
呼叫 mlflow.autolog():
import mlflow
mlflow.autolog(disable=True)
管理員也可以從管理員設定頁面的 [進階]索引標籤中停用工作區中所有叢集的 Databricks Autologging。 必須重新啟動叢集,此變更才能生效。
支援的環境和架構
互動式 Python 筆記本支援 Databricks Autologging,而且適用於下列 ML 架構:
- scikit-learn
- Apache Spark MLlib
- TensorFlow
- Keras
- PyTorch Lightning
- XGBoost
- LightGBM
- Gluon
- Fast.ai
- statsmodels
- PaddlePaddle
- OpenAI
- LangChain
如需每個支援架構的詳細資訊,請參閱 MLflow 自動記錄。
MLflow 追蹤啟用
MLflow 追蹤會利用個別模型架構整合內的 autolog
功能來控制追蹤支援的啟用或停用,以進行支援追蹤的整合。
例如,如果要在使用 LlamaIndex 模型時啟用追蹤,請使用 mlflow.llama_index.autolog() 搭配 log_traces=True
:
import mlflow
mlflow.llama_index.autolog(log_traces=True)
支援在其自動記錄實作內啟用追蹤的整合如下:
安全性和資料管理
使用 Databricks Autologging 追蹤的所有模型訓練資訊都會儲存在 MLflow Tracking 中,並受到 MLflow 實驗權限的保護。 可以使用 MLflow Tracking API 或 UI 來共用、修改或刪除模型訓練資訊。
系統管理
管理員可以在管理員設定頁面的 [進階] 索引標籤中,針對其工作區中的所有互動式筆記本工作階段啟用或停用 Databricks Autologging。 重新啟動叢集之後,變更才會生效。
限制
- Azure Databricks 作業不支援 Databricks Autologging。 如果要從作業中使用自動記錄,你可以明確呼叫 mlflow.autolog()。
- Databricks Autologging 只會在 Azure Databricks 叢集的驅動程式節點上啟用。 如果要在背景工作角色節點使用自動記錄,必須從每個背景工作角色上執行的程式碼中明確呼叫 mlflow.autolog()。
- 不支援 XGBoost scikit-learn 整合。
Apache Spark MLlib、Hyperopt 和自動化 MLflow 追蹤
Databricks Autologging 不會變更 Apache Spark MLlib 和 Hyperopt 的現有自動化 MLflow 追蹤整合的行為。
注意
在 Databricks Runtime 10.1 ML 中,停用 Apache Spark MLlib CrossValidator
和 TrainValidationSplit
模型的自動化 MLflow 追蹤整合也會停用所有 Apache Spark MLlib 模型的 Databricks Autologging 功能。