共用方式為


追蹤 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,請選取 Library Source PyPI 並在套件欄位中輸入 mlflow
  • 針對 R,請選取 Library Source CRAN,並在套件欄位中輸入 mlflow
  • 針對 Scala,請安裝這兩個套件:
    • 選取 Library Source Maven,然後在座標欄位輸入 org.mlflow:mlflow-client:1.11.0
    • 選取 Library Source 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)。 接下來,您可以使用 mlflow.set_tracking_uri() 設定追蹤 URI 來參照工作區,並使用 mlflow.set_experiment() 設定實驗的路徑。 如需在哪裡找到 DATABRICKS_HOSTDATABRICKS_TOKEN 環境變數值的詳細資料,請參閱執行 Azure Databricks 個人存取權杖驗證

以下程式碼範例展示設定這些值:


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 中儲存追蹤資料。