跟蹤機器學習訓練運行

MLflow跟蹤組件允許您記錄與訓練機器學習模型相關的源屬性、參數、指標、標簽和工件。要開始使用MLflow,請嚐試其中一個MLflow快速入門教程

MLflow跟蹤與實驗和運行

MLflow跟蹤基於兩個概念,實驗而且運行

  • 一個MLflow實驗是MLflow運行的組織和訪問控製的主要單元;所有MLflow運行都屬於一個實驗。通過實驗,您可以可視化、搜索和比較運行,還可以下載運行工件和元數據,以便在其他工具中進行分析。

  • 一個MLflow運行對應於模型代碼的一次執行。每次運行記錄以下信息:

    • :啟動運行的筆記本的名稱或運行的項目名稱和入口點。

    • 版本:如果從Databricks工作區中的筆記本運行,則修改筆記本;如果從Databricks工作區運行,則Git提交哈希磚回購或者從MLflow項目

    • 開始和結束時間:運行的開始和結束時間。

    • 參數:保存為鍵值對的模型參數。鍵和值都是字符串。

    • 指標:保存為鍵值對的模型評估指標。取值為數字。每個指標都可以在整個運行過程中更新(例如,跟蹤模型的損失函數是如何收斂的),MLflow記錄並讓您可視化指標的曆史。

    • 標簽:運行以鍵值對形式保存的元數據。您可以在運行完成期間和之後更新標記。鍵和值都是字符串。

    • 工件:輸出任意格式的文件。例如,您可以將圖像、模型(例如,pickle的scikit-learn模型)和數據文件(例如,Parquet文件)記錄為工件。

MLflow跟蹤API記錄來自模型運行的參數、度量、標記和工件。跟蹤API與MLflow通信跟蹤服務器.當您使用Databricks時,由Databricks托管的跟蹤服務器將記錄數據。托管的MLflow跟蹤服務器具有Python、Java和R api。

要了解如何控製對實驗的訪問,請參見實驗權限而且更改實驗權限

請注意

MLflow安裝在Databricks Runtime ML集群上。要在Databricks Runtime集群上使用MLflow,必須安裝mlflow圖書館。有關在集群上安裝庫的說明,請參見在集群上安裝庫.要為MLflow安裝的特定包有:

  • 對於Python,請選擇庫源PyPI並進入mlflow字段。

  • 對於R,選擇庫源然後進入mlflow字段。

  • 對於Scala,安裝這兩個包:

    • 選擇庫源Maven,然後進入org.mlflow: mlflow-client: 1.11.0坐標字段。

    • 選擇庫源PyPI並進入mlflow字段。

MLflow運行的日誌記錄在哪裏

所有MLflow運行都記錄到活動實驗中,可以使用以下任何一種方式進行設置:

如果未設置活動實驗,則將運行記錄到筆記本的實驗

要將實驗結果記錄到一個遠程托管的MLflow跟蹤服務器,該服務器位於運行實驗的工作空間之外的工作空間,請設置跟蹤URI以引用遠程工作空間mlflow.set_tracking_uri (),並在遠程工作空間中使用mlflow.set_experiment ()

mlflowset_tracking_uri<uri_of_remote_workspace>mlflowset_experiment“遠程工作空間實驗路徑”

日誌記錄示例筆記本

本筆記本演示如何將運行記錄到筆記本實驗和工作區實驗。隻有在筆記本中啟動的MLflow運行才能記錄到筆記本實驗中。可以將從任何筆記本電腦或api啟動的MLflow運行記錄到工作區實驗中。有關查看日誌運行的信息,請參見查看筆記本實驗而且查看工作區實驗

日誌MLflow運行筆記本

在新標簽頁打開筆記本

您可以使用MLflow Python、Java或Scala以及R api來啟動運行並記錄運行數據。詳細信息請參見MLflow快速入門筆記本

組織MLflow實驗訓練

實驗是模型訓練運行的組織單元。有兩種類型的實驗:工作空間和筆記本。

  • 您可以從Databricks Machine Learning UI或MLflow API創建一個工作區實驗。工作區實驗不與任何筆記本相關聯,任何筆記本都可以通過使用實驗ID或實驗名稱來記錄對這些實驗的運行。

  • 一個筆記本實驗與一個特定的筆記本相關聯。當您開始使用時,如果沒有活動的實驗,Databricks會自動創建一個筆記本實驗mlflow.start_run ()

若要查看您可以訪問的工作區中的所有實驗,請單擊實驗的圖標實驗在側欄中。此圖標僅當您處於機器學習角色

實驗頁麵

要搜索實驗,請在搜索字段,單擊搜索.中包含搜索文本的實驗列表將更改為僅顯示那些實驗名字位置,或筆記列。

點擊表格中任意一個實驗名稱,即可進入該實驗頁麵:

視圖的實驗

實驗頁麵列出了與實驗相關的所有運行。從該表中,您可以通過單擊其打開與實驗相關的任何運行的運行頁麵開始時間.的列使您可以訪問創建運行的筆記本版本。你也可以搜索和過濾器根據指標或參數設置運行。

創建工作空間實驗

本節描述如何使用Databricks UI創建一個工作區實驗。您可以直接創建一個工作區實驗從工作空間從實驗頁麵

你也可以使用MLflow API,或Databricks Terraform提供商databricks_mlflow_experiment

有關日誌記錄運行到工作區實驗的說明,請參見日誌記錄示例筆記本

  1. 點擊工作空間的圖標工作空間在側欄中。

  2. 進入要創建實驗的文件夾。

  3. 做以下其中一件事:

    • 單擊任意文件夾後的菜單下拉在文本的右側,並選擇創建> MLflow實驗

      創建實驗

    • 在工作空間或用戶文件夾中,單擊下脫字符號並選擇創建> MLflow實驗

  4. 在Create MLflow Experiment對話框中,為實驗輸入一個名稱和一個可選的工件位置。如果您沒有指定工件位置,那麼工件將存儲在其中dbfs: /磚/ mlflow-tracking / < experiment-id >

    磚支持DBFS、S3和Azure Blob存儲工件位置。

    要在S3中存儲工件,請指定表單的URIs3: / / <鬥> / <路徑>.MLflow從您的集群獲取訪問S3的憑據實例配置文件.存儲在S3中的工件不會出現在MLflow UI中;需要通過對象存儲客戶端下載。

    請注意

    在AWS上上傳到DBFS的MLflow工件的最大大小是5GB。

    要在Azure Blob存儲中存儲工件,請指定表單的URIwasbs: / / <容器> @ < storage-account > .blob.core.windows.net/ <路徑>.存儲在Azure Blob存儲中的工件不會出現在MLflow UI中;您必須使用blob存儲客戶端下載它們。

    請注意

    當您將工件存儲在DBFS以外的位置時,該工件不會出現在MLflow UI中。存儲在DBFS以外位置的模型不能在模型注冊表中注冊。

  5. 點擊創建.一個空的實驗出現了。

您還可以從Experiments頁麵創建一個新的工作區實驗。要創建一個新實驗,請使用創建實驗下拉菜單下拉菜單。從下拉菜單中,您可以選擇AutoML實驗或者一個空白的實驗。

  • AutoML實驗。的配置AutoML實驗頁麵出現。有關使用AutoML的信息,請參見使用Databricks AutoML UI訓練ML模型

  • 空白試驗。的創建MLflow實驗對話框出現了。在對話框中輸入名稱和可選的工件位置,以創建一個新的工作區實驗。默認的工件位置是dbfs: /磚/ mlflow-tracking / < experiment-id >

    要記錄此實驗的運行情況,請調用mlflow.set_experiment ()與實驗路徑。實驗路徑顯示在實驗頁麵頂部。看到日誌記錄示例筆記本有關詳細信息和示例筆記本。

創建筆記本實驗

當你使用mlflow.start_run()命令在筆記本中,運行記錄活動實驗的指標和參數。如果沒有活動的實驗,Databricks將創建一個筆記本實驗。一個筆記本實驗與其對應的筆記本共享相同的名稱和ID。筆記本ID是字符末尾的數字標識符筆記本URL和ID

有關日誌記錄運行到筆記本實驗的說明,請參見日誌記錄示例筆記本

請注意

如果使用API刪除一個筆記本實驗(例如,MlflowClient.tracking.delete_experiment ()在Python中),筆記本本身被移動到垃圾文件夾。

視圖的實驗

你可以訪問的每個實驗都出現在實驗頁麵.從這個頁麵,您可以查看任何實驗。點擊一個實驗名稱顯示實驗頁麵

訪問實驗頁麵的其他方式:

  • 您可以從工作區菜單中訪問工作區實驗的實驗頁麵。

  • 您可以從筆記本中進入筆記本實驗的實驗頁麵。

查看工作區實驗

  1. 點擊工作空間的圖標工作空間在側欄中。

  2. 進入包含實驗的文件夾。

  3. 點擊實驗名稱。

查看筆記本實驗

在“筆記本”工具欄中,單擊實驗圖標實驗的圖標

筆記本電腦工具欄

將出現“實驗運行”側欄,並顯示與筆記本實驗相關的每次運行的摘要,包括運行參數和度量。在側邊欄的頂部是筆記本最近記錄的運行到的實驗的名稱(筆記本實驗或工作區實驗)。

查看運行參數和度量

從側邊欄,您可以導航到實驗頁麵或直接運行。

  • 單擊,查看實驗外部鏈接在最右邊,挨著實驗運行

  • 要顯示運行,點擊外部鏈接在運行的日期和時間旁邊。

管理實驗

控件中擁有的實驗的重命名、刪除或管理權限實驗頁麵,實驗頁麵,或工作區菜單。

從實驗頁麵或實驗頁麵重命名實驗

預覽

此功能已在公共預覽

重新命名一個實驗實驗頁麵或者是實驗頁麵,點擊三鍵圖標並選擇重命名

從工作區菜單重命名實驗

  1. 點擊工作空間的圖標工作空間在側欄中。

  2. 進入包含實驗的文件夾。

  3. 點擊菜單下拉在實驗的右側選擇重命名

複製實驗名稱

如需複製實驗名稱,單擊複製圖標在實驗頁麵的頂部。您可以在MLflow命令中使用此名稱set_experiment設置主動MLflow實驗。

實驗名稱圖標

方法中的實驗名稱也可以複製實驗側邊欄在筆記本

刪除筆記本實驗

筆記本實驗是筆記本的一部分,不能單獨刪除。當你刪除筆記本,刪除相關的筆記本實驗。如果使用API刪除一個筆記本實驗(例如,MlflowClient.tracking.delete_experiment ()在Python中)或UI中,筆記本也會被刪除。

從工作區菜單中刪除工作區實驗

  1. 點擊工作空間的圖標工作空間在側欄中。

  2. 進入包含實驗的文件夾。

  3. 點擊菜單下拉在實驗的右側選擇轉向垃圾

從實驗頁麵或實驗頁麵刪除工作區或筆記本實驗

預覽

此功能已在公共預覽

中刪除一個實驗實驗頁麵或者是實驗頁麵,點擊三鍵圖標並選擇刪除

當你刪除一個筆記本實驗時,筆記本也會被刪除。

更改實驗權限

控件更改實驗的權限實驗頁麵,點擊分享

實驗頁麵權限按鈕

控件上擁有的實驗的權限可以更改實驗頁麵.點擊三鍵圖標行動列並選擇許可

有關實驗權限的更多信息,請參見實驗權限

在工作空間之間複製實驗

要在工作空間之間遷移MLflow實驗,可以使用社區驅動的開源項目MLflow進出口

使用這些工具,你可以:

  • 在同一台或另一台跟蹤服務器上與其他數據科學家共享和協作。例如,您可以將另一個用戶的實驗複製到您的工作區中。

  • 從本地跟蹤服務器複製MLflow實驗並運行到Databricks工作區。

  • 將關鍵任務實驗和模型備份到另一個Databricks工作空間。

使用MLflow運行管理訓練代碼

所有MLflow運行都記錄到活性實驗.如果沒有顯式地將實驗設置為活動實驗,則運行將記錄到筆記本實驗。

查看運行

您可以從運行的父實驗頁麵或直接從創建運行的筆記本訪問運行。

實驗頁麵,在運行表中,單擊某一次運行的開始時間。

在筆記本上,點擊外部鏈接在“實驗運行”側欄中運行的日期和時間旁邊。

運行屏幕顯示用於運行的參數、運行產生的度量以及任何標記或注釋。來顯示筆記參數指標,或標簽對於這次運行,單擊的箭頭在標簽的左邊。

您還可以在此屏幕中訪問從運行中保存的工件。

查看運行

用於預測的代碼片段

如果您從運行中記錄一個模型,該模型將出現在本頁的Artifacts部分中。要顯示演示如何加載和使用模型在Spark和pandas dataframe上進行預測的代碼片段,請單擊模型名稱。

預測代碼片段

查看用於運行的筆記本或Git項目

瀏覽筆記本版本這就產生了一個運行:

  • 在實驗頁麵,點擊列。

  • 在運行頁麵上,單擊旁邊的鏈接

  • 從筆記本中,在實驗運行側欄中,單擊筆記本圖標筆記本版本圖標在實驗跑的盒子裏

與運行相關的筆記本版本將出現在主窗口中,並顯示運行的日期和時間。

如果運行是從Git項目,單擊Git提交字段以打開運行中使用的項目的特定版本。的鏈接field打開運行中使用的Git項目的主分支。

向運行中添加標記

標記是稍後可以創建和使用的鍵-值對搜索跑步

  1. 運行頁麵,點擊標簽圖標如果它還沒有打開。出現標簽表。

    標簽表
  2. 請按名字而且價值字段並鍵入標記的鍵和值。

  3. 點擊添加

    添加標簽

編輯或刪除運行的標記

控件中的圖標可編輯或刪除現有標記行動列。

標簽的行為

再現一次運行的軟件環境

通過單擊,您可以為運行重新生成精確的軟件環境複製運行.出現以下對話框:

重現運行對話框

使用默認設置,當您單擊確認

  • 筆記本被克隆到對話框中顯示的位置。

  • 如果原集群仍然存在,則將克隆的筆記本附加到原集群,並啟動集群。

  • 如果原來的集群不再存在,將創建並啟動一個具有相同配置的新集群,包括所有已安裝的庫。筆記本附加到新的集群。

您可以為克隆的筆記本選擇不同的位置,並檢查集群配置和已安裝的庫:

  • 如果選擇其他文件夾保存克隆的筆記本,單擊編輯文件夾

  • 要查看集群規格,請單擊視圖規範.若要隻克隆筆記本而不克隆集群,請取消勾選此選項。

  • 若要查看安裝在原始集群上的庫,請單擊查看庫.如果您不關心是否安裝與原始集群上相同的庫,請取消選中此選項。

管理運行

重命名運行

如需重命名運行,單擊三鍵圖標在運行頁麵的右上角,選擇重命名

過濾器運行

您可以根據參數或度量值搜索運行情況。您還可以通過標記搜索運行。

  • 若要搜索與包含參數和度量值的表達式匹配的運行,請在搜索字段中輸入查詢並單擊搜索.一些查詢語法示例如下:

    metrics.r2>0.3

    params.elasticNetParam0.5

    params.elasticNetParam0.5metrics.avg_areaUnderROC>0.3

  • 要按標簽搜索運行,輸入標簽的格式如下:標簽。<關鍵> = " < >價值”.字符串值必須用引號括起來,如圖所示。

    tags.estimator_name = " RandomForestRegressor "

    tags.color = "藍色"tags.size = 5

    鍵和值都可以包含空格。如果鍵包含空格,則必須將其括在反引號中,如所示。

    標簽。' my custom tag ' = "my value"

您還可以根據運行的狀態(Active或Deleted)以及模型版本是否與運行相關聯來篩選運行。為此,單擊過濾器在搜索框的右邊。的狀態而且關聯模型出現下拉菜單。從下拉菜單中進行選擇。

過濾器運行

比較這兩種

您可以比較單個實驗或多個實驗的運行情況。的比較運行頁以圖形和表格格式顯示有關選定運行的信息。

比較單個實驗的運行情況
  1. 實驗頁麵,通過單擊運行左側的複選框選擇兩個或多個運行,或通過選中列頂部的複選框選擇所有運行。

  2. 點擊比較.的比較' '運行屏幕出現了。

比較多個實驗的運行情況
  1. 實驗頁麵,單擊實驗名稱前的複選框,選擇需要比較的實驗。

  2. 點擊比較(n)n是你選擇的實驗數量)。將出現一個屏幕,顯示所選實驗的所有運行。

  3. 通過單擊運行左側的複選框選擇兩個或多個運行,或者通過選中列頂部的複選框選擇所有運行。

  4. 點擊比較.的比較' '運行屏幕出現了。

使用比較運行頁麵

比較運行頁顯示了運行結果的可視化以及運行信息、運行參數和度量的表。

要創建一個可視化:

  1. 選擇繪圖類型(平行坐標圖散點圖,或等高線圖).

  2. 對於一個平行坐標圖,選擇要繪製的參數和指標。對於一個散點圖等高線圖,選擇要顯示在每個軸上的參數或指標。

    比較運行頁麵可視化

參數而且指標表顯示所有選定運行的運行參數和度量。屬性標識這些表中的列運行細節正上方的表格。為了簡單起見,您可以通過切換隱藏所有選定運行中相同的參數和指標隻顯示差異按鈕

比較運行頁表

下載運行

  1. 選擇一個或多個運行。

  2. 點擊下載CSV.包含以下字段的CSV文件將下載:

    運行ID,名稱,源類型,源名稱,用戶,狀態,,…,,…

刪除運行

  1. 在實驗中,通過單擊運行左側的複選框,選擇一個或多個運行。

  2. 點擊刪除

  3. 如果運行是父運行,則決定是否也要刪除後代運行。該選項默認選中。

  4. 點擊刪除確認或取消取消。刪除的運行將保存30天。若要顯示已刪除的運行,請選擇刪除在State字段中。

複製在工作空間之間運行

要從Databricks工作空間導入或導出MLflow運行,可以使用社區驅動的開源項目MLflow進出口

從Databricks外部訪問MLflow跟蹤服務器

您還可以從Databricks外部寫入和讀取跟蹤服務器,例如使用MLflow CLI。

以編程方式分析MLflow運行

您可以通過以下兩個DataFrame api以編程方式訪問MLflow運行數據:

這個示例演示了如何使用MLflow Python客戶端構建一個儀表板,該儀表板可以可視化評估指標隨時間的變化,跟蹤特定用戶啟動的運行次數,並測量所有用戶的運行總數:

MLflow跟蹤示例

下麵的筆記本演示了如何訓練幾種類型的模型,並在MLflow中跟蹤訓練數據,以及如何在Delta Lake中存儲跟蹤數據。