追蹤 ML 和深度學習訓練執行

MLflow 追蹤元件可讓您記錄與定型機器學習或深度學習模型相關的來源屬性、參數、計量、標籤和成品。 若要開始使用 MLflow,請嘗試其中 一個 MLflow 快速入門教學課程

使用實驗和執行的 MLflow 追蹤

MLflow 追蹤是以兩個概念為基礎:實驗和執行

注意

從 2024 年 3 月 27 日起,MLflow 會對所有現有和新回合的總參數、標籤和計量步驟數目加上配額限制,以及所有現有和新實驗的總執行次數,請參閱 資源限制。 如果您按實驗配額叫用執行,Databricks 建議您刪除 不再需要在 Python 中使用刪除執行 API 的執行。 如果您達到其他配額限制,Databricks 建議調整記錄策略以維持在限制之下。 如果您需要增加此限制,請連絡您的 Databricks 帳戶小組,並簡短說明您的使用案例、建議的風險降低方法為何無法運作,以及您要求的新限制。

MLflow 追蹤 API記錄模型執行的參數、計量、標籤和成品。 追蹤 API 會與 MLflow 追蹤伺服器通訊。 當您使用 Databricks 時,Databricks 裝載的追蹤伺服器會記錄數據。 裝載的 MLflow 追蹤伺服器具有 Python、Java 和 R API。

注意

MLflow 會安裝在 Databricks Runtime ML 叢集上。 若要在 Databricks Runtime 叢集上使用 MLflow,您必須安裝連結 mlflow 庫。 如需將連結庫安裝到叢集的指示,請參閱 在叢集上安裝連結庫。 要針對 MLflow 安裝的特定套件包括:

  • 針對 Python,選取 [連結庫來源 PyPI],然後在 [套件] 字段中輸入 mlflow
  • 針對 R,選擇 [連結庫來源 CRAN],然後在 [套件] 字段中輸入 mlflow
  • 針對 Scala,請安裝這兩個套件:
    • 選取 [連結庫來源 Maven],然後在 [座標] 字段中輸入 org.mlflow:mlflow-client:1.11.0
    • 選取 [連結庫來源 PyPI],然後在 [套件] 字段中輸入 mlflow

記錄 MLflow 執行的位置

所有 MLflow 執行都會記錄到使用中實驗,您可以使用下列任何方式來設定:

如果未設定使用中的實驗,則會將執行記錄至 筆記本實驗

若要將實驗結果記錄到您執行實驗的工作區以外的遠端裝載 MLflow 追蹤伺服器,請設定追蹤 URI 以參考遠端工作區,並使用 在遠端工作區mlflow.set_tracking_uri()mlflow.set_experiment()中設定實驗的路徑。

mlflow.set_tracking_uri(<uri-of-remote-workspace>)
mlflow.set_experiment("path to experiment in remote workspace")

如果您要在本機執行實驗,並想要將實驗結果記錄到 Databricks MLflow 追蹤伺服器,請提供您的 Databricks 工作區實例 (DATABRICKS_HOST) 和 Databricks 個人存取令牌 (DATABRICKS_TOKEN)。 接下來,您可以設定追蹤 URI 以使用 mlflow.set_tracking_uri()來參考工作區,並使用 來設定實驗 mlflow.set_experiment()的路徑。 如需尋找 和 環境變數值DATABRICKS_HOST的詳細數據,請參閱執行 Azure Databricks 個人存取令牌驗證DATABRICKS_TOKEN

下列程式代碼範例示範如何設定這些值:


os.environ["DATABRICKS_HOST"] = "https://dbc-1234567890123456.cloud.databricks.com" # set to your server URI
os.environ["DATABRICKS_TOKEN"] = "dapixxxxxxxxxxxxx"

mlflow.set_tracking_uri("databricks")
mlflow.set_experiment("/your-experiment")

記錄範例筆記本

此筆記本示範如何將執行記錄至筆記本實驗和工作區實驗。 只有在筆記本內起始的 MLflow 執行可以記錄至筆記本實驗。 從任何筆記本或 API 啟動的 MLflow 執行可以記錄到工作區實驗。 如需檢視記錄執行的相關信息,請參閱 檢視筆記本實驗檢視工作區實驗

記錄 MLflow 執行筆記本

取得筆記本

您可以使用 MLflow Python、Java 或 Scala 和 R API 來開始執行及記錄執行數據。 如需詳細資訊,請參閱 MLflow 範例筆記本

從 Azure Databricks 外部存取 MLflow 追蹤伺服器

您也可以從 Azure Databricks 外部寫入和讀取追蹤伺服器,例如使用 MLflow CLI。 請參閱 從 Azure Databricks 外部存取 MLflow 追蹤伺服器。

以程序設計方式分析 MLflow 執行

您可以使用下列兩個 DataFrame API,以程式設計方式存取 MLflow 執行資料:

此範例示範如何使用 MLflow Python 用戶端來建置儀錶板,以可視化方式呈現評估計量的變更、追蹤特定使用者啟動的執行次數,以及測量所有使用者執行的總數:

為什麼模型定型計量和輸出可能會有所不同

ML 中使用的許多演算法都有隨機元素,例如演算法本身內的取樣或隨機初始條件。 當您使用下列其中一個演算法來定型模型時,即使以相同的條件啟動執行,結果可能與每次執行都不同。 許多連結庫提供植入機制來修正這些隨機專案的初始條件。 然而,可能有其他變化來源不受種子控制。 某些演算法會區分數據的順序,分散式 ML 演算法也可能受到數據分割方式的影響。 一般而言,這種變化並不重要,而且在模型開發程式中並不重要。

若要控制排序和分割差異所造成的變化,請使用 PySpark 函 式重新分割sortWithinPartitions

MLflow 追蹤範例

下列筆記本示範如何定型數種類型的模型,並在 MLflow 中追蹤定型數據,以及如何在 Delta Lake 中儲存追蹤數據。