跟蹤機器學習訓練運行
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運行都記錄到活動實驗中,可以使用以下任何一種方式進行設置:
使用
experiment_id
參數中的mlflow.start_run()命令.設置一個MLflow環境變量MLFLOW_EXPERIMENT_NAME或MLFLOW_EXPERIMENT_ID.
如果未設置活動實驗,則將運行記錄到筆記本的實驗.
要將實驗結果記錄到一個遠程托管的MLflow跟蹤服務器,該服務器位於運行實驗的工作空間之外的工作空間,請設置跟蹤URI以引用遠程工作空間mlflow.set_tracking_uri ()
,並在遠程工作空間中使用mlflow.set_experiment ()
.
mlflow.set_tracking_uri(<uri_of_remote_workspace>)mlflow.set_experiment(“遠程工作空間實驗路徑”)
日誌記錄示例筆記本
本筆記本演示如何將運行記錄到筆記本實驗和工作區實驗。隻有在筆記本中啟動的MLflow運行才能記錄到筆記本實驗中。可以將從任何筆記本電腦或api啟動的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.
有關日誌記錄運行到工作區實驗的說明,請參見日誌記錄示例筆記本.
點擊工作空間在側欄中。
進入要創建實驗的文件夾。
做以下其中一件事:
單擊任意文件夾後的在文本的右側,並選擇創建> MLflow實驗.
在工作空間或用戶文件夾中,單擊並選擇創建> MLflow實驗.
在Create MLflow Experiment對話框中,為實驗輸入一個名稱和一個可選的工件位置。如果您沒有指定工件位置,那麼工件將存儲在其中
dbfs: /磚/ mlflow-tracking / < experiment-id >
.磚支持DBFS、S3和Azure Blob存儲工件位置。
要在S3中存儲工件,請指定表單的URI
s3: / / <鬥> / <路徑>
.MLflow從您的集群獲取訪問S3的憑據實例配置文件.存儲在S3中的工件不會出現在MLflow UI中;需要通過對象存儲客戶端下載。請注意
在AWS上上傳到DBFS的MLflow工件的最大大小是5GB。
要在Azure Blob存儲中存儲工件,請指定表單的URI
wasbs: / / <容器> @ < storage-account > .blob.core.windows.net/ <路徑>
.存儲在Azure Blob存儲中的工件不會出現在MLflow UI中;您必須使用blob存儲客戶端下載它們。請注意
當您將工件存儲在DBFS以外的位置時,該工件不會出現在MLflow UI中。存儲在DBFS以外位置的模型不能在模型注冊表中注冊。
點擊創建.一個空的實驗出現了。
您還可以從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中),筆記本本身被移動到垃圾文件夾。
視圖的實驗
你可以訪問的每個實驗都出現在實驗頁麵.從這個頁麵,您可以查看任何實驗。點擊一個實驗名稱顯示實驗頁麵.
訪問實驗頁麵的其他方式:
您可以從工作區菜單中訪問工作區實驗的實驗頁麵。
您可以從筆記本中進入筆記本實驗的實驗頁麵。
查看筆記本實驗
在筆記本的右側側欄中,單擊實驗圖標.
將出現“實驗運行”側欄,並顯示與筆記本實驗相關的每次運行的摘要,包括運行參數和度量。在側邊欄的頂部是筆記本最近記錄的運行到的實驗的名稱(筆記本實驗或工作區實驗)。
從側邊欄,您可以導航到實驗頁麵或直接運行。
單擊,查看實驗在最右邊,挨著實驗運行.
要顯示運行,單擊運行的名稱。
管理實驗
控件中擁有的實驗的重命名、刪除或管理權限實驗頁麵,實驗頁麵,或工作區菜單。
刪除筆記本實驗
筆記本實驗是筆記本的一部分,不能單獨刪除。當你刪除筆記本,刪除相關的筆記本實驗。如果使用API刪除一個筆記本實驗(例如,MlflowClient.tracking.delete_experiment ()
在Python中)或UI中,筆記本也會被刪除。
在工作空間之間複製實驗
要在工作空間之間遷移MLflow實驗,可以使用社區驅動的開源項目MLflow進出口.
使用這些工具,你可以:
在同一台或另一台跟蹤服務器上與其他數據科學家共享和協作。例如,您可以將另一個用戶的實驗複製到您的工作區中。
從本地跟蹤服務器複製MLflow實驗並運行到Databricks工作區。
將關鍵任務實驗和模型備份到另一個Databricks工作空間。
使用MLflow運行管理訓練代碼
所有MLflow運行都記錄到活性實驗.如果沒有顯式地將實驗設置為活動實驗,則運行將記錄到筆記本實驗。
查看運行
您可以從運行的父實驗頁麵或直接從創建運行的筆記本訪問運行。
從實驗頁麵,在運行表中,單擊某一次運行的開始時間。
在筆記本上,點擊在“實驗運行”側欄中運行的日期和時間旁邊。
的運行屏幕顯示用於運行的參數、運行產生的度量以及任何標記或注釋。來顯示筆記,參數,指標,或標簽對於這次運行,單擊在標簽的左邊。
您還可以在此屏幕中訪問從運行中保存的工件。
再現一次運行的軟件環境
通過單擊,您可以為運行重新生成精確的軟件環境複製運行.出現以下對話框:
使用默認設置,當您單擊確認:
筆記本被克隆到對話框中顯示的位置。
如果原集群仍然存在,則將克隆的筆記本附加到原集群,並啟動集群。
如果原來的集群不再存在,將創建並啟動一個具有相同配置的新集群,包括所有已安裝的庫。筆記本附加到新的集群。
您可以為克隆的筆記本選擇不同的位置,並檢查集群配置和已安裝的庫:
如果選擇其他文件夾保存克隆的筆記本,單擊編輯文件夾.
要查看集群規格,請單擊視圖規範.若要隻克隆筆記本而不克隆集群,請取消勾選此選項。
若要查看安裝在原始集群上的庫,請單擊查看庫.如果您不關心是否安裝與原始集群上相同的庫,請取消選中此選項。
管理運行
過濾器運行
您可以根據參數或度量值搜索運行情況。您還可以通過標記搜索運行。
若要搜索與包含參數和度量值的表達式匹配的運行,請在搜索字段中輸入查詢並單擊搜索.一些查詢語法示例如下:
metrics.r2>0.3
params.elasticNetParam=0.5
params.elasticNetParam=0.5和metrics.avg_areaUnderROC>0.3
要按標簽搜索運行,輸入標簽的格式如下:
標簽。<關鍵> = " < >價值”
.字符串值必須用引號括起來,如圖所示。tags.estimator_name = " RandomForestRegressor "
tags.color = "藍色"和tags.size = 5
鍵和值都可以包含空格。如果鍵包含空格,則必須將其括在反引號中,如所示。
標簽。' my custom tag ' = "my value"
您還可以根據運行的狀態(Active或Deleted)以及模型版本是否與運行相關聯來篩選運行。為此,單擊過濾器在搜索框的右邊。的狀態而且關聯模型出現下拉菜單。從下拉菜單中進行選擇。
複製在工作空間之間運行
要從Databricks工作空間導入或導出MLflow運行,可以使用社區驅動的開源項目MLflow進出口.
以編程方式分析MLflow運行
您可以通過以下兩個DataFrame api以編程方式訪問MLflow運行數據:
MLflow Python客戶端search_runs API返回一個熊貓數據框架。
的MLflow實驗數據源返回一個Apache Spark DataFrame。
這個示例演示了如何使用MLflow Python客戶端構建一個儀表板,該儀表板可以可視化評估指標隨時間的變化,跟蹤特定用戶啟動的運行次數,並測量所有用戶的運行總數: