MLFlow機器學習管理平臺入門教程一覽

人工智慧頻道發表於2018-12-26

什麼是mlFlow?

MLFlow機器學習管理平臺入門教程一覽

mlFlow是一個支援機器學習生命週期的框架。這意味著它擁有在訓練和執行期間監控模型的元件、儲存模型的能力,在生產程式碼中載入模型以及建立管道。

該框架引入了3個不同的功能,每個功能都有自己的特性。

MlFlow追蹤

追蹤可能是框架最有趣的功能。它允許您圍繞模型建立廣泛的日誌記錄框架。您可以定義自定義指標,以便在執行後可以將輸出與先前的執行進行比較。

我們將主要關注這一部分,同時也讓您瞭解其他功能。

MlFlow專案

此功能允許您根據需要建立管道。此功能使用自己的模板來定義您希望如何在雲環境中執行模型。由於大多數公司都有辦法在生產環境中執行程式碼,因此您可能不太關心此功能。

MlFlow模型

最後我們有模型功能。 mlFlow Model是包裝機器學習模型的標準格式,可以在各種下游工具中進行使用 - 例如,通過REST API實時提供服務或在Apache Spark上進行批量推理。

理論完成:時間到了

那麼這個理論總是很好,但是現在是時候進行更多的實踐。首先,我們需要在實際啟動之前啟動mlFlow伺服器。為了做到這一點,我建立了一個docker容器,以便於部署。

在我們展示程式碼之前,配置儲存後端也很重要。由於我們希望將模型儲存在某個地方,我選擇了Azure blob儲存(請注意,AWS S3也受支援)。

然後,建立一個blob儲存賬戶並在裡面建立一個容器。

MLFlow機器學習管理平臺入門教程一覽

Blob儲存帳戶Azure

一旦建立它,您將需要寫下wasb連結,因為您將需要此值來啟動docker。 url通常定義如下:“wasbs:// <container> @ <storage_account_name> .blob.core.windows.net”

接下來我們可以開始構建docker了。由於mlFlow需要python,我從python影像開始,使工作更輕鬆了一些。基本上,只要確保容器中有Python可用,就可以從任何映像開始。您需要為此示例安裝的唯一2個包如下:

  • 0.8.0 mlflow版本
  • azure儲存0.36.0

要獲得完整的docker解決方案,只需檢視我的Github帳戶:https://github.com/Ycallaer/mlflowdocker

接下來,如果您不知道如何檢視自述檔案,則需要構建容器。

在本地計算機上啟動docker映象後,應通過以下URL獲取:http:// localhost:5000 /

如果一切順利,您的主頁可能看起來像這樣。

MLFlow機器學習管理平臺入門教程一覽

主頁mlFlow

調整模型以使用mlFlow

一旦伺服器部件準備就緒,就可以調整我們的程式碼了。我已經建立了一個小型ARIMA模型實現來展示框架。

在開始之前,我們需要定義執行伺服器的URL。您可以通過呼叫方法“set_tracking_uri”來完成此操作。這是本演示的硬編碼,但理想情況下,這將指向一個公共端點。

接下來,我們需要建立一個實驗。這應該是唯一的識別符號,確保它唯一的一種方法是每次呼叫expirement方法時生成一個uuid。在我的例子中,我硬編碼了它以加速演示。

通過呼叫“start_run()”方法,我們告訴mlFlow這是執行的起點,這將為您的執行設定開始日期。不要忘記將實驗id傳遞給方法,以便所有日誌記錄都保持在實驗中。

省略實驗ID將導致所有日誌被寫入預設過期。

MLFlow機器學習管理平臺入門教程一覽

開始點mlFlow 追蹤

接下來,我們需要指定在執行期間要監視的值。一方面,您有“log_param()”,它記錄字串值的鍵值對。另一方面,我們有“log_metric()”,它只允許您將值定義為整數。

MLFlow機器學習管理平臺入門教程一覽

log_param和log_metric的示例

視覺效果

現在讓我們回到UI,看看我們的執行的可視結果是什麼。在主頁上,您會在左側找到您的實驗。

MLFlow機器學習管理平臺入門教程一覽

主頁與實驗

如果單擊日期,您將獲得該特定執行的概述。

MLFlow機器學習管理平臺入門教程一覽

實驗的詳細資訊

在指標旁邊,您會看到一個圖形符號,如果單擊此符號,您可以看到此單個指標在執行期間的變化情況。

MLFlow機器學習管理平臺入門教程一覽

指標的詳細圖表

儲存模型

我們還希望能夠使用框架儲存模型。該框架允許您以與大多數流行框架相容的格式載入和儲存模型(例如:Scikit,Pytorch,Tensorflow,...)。有關完整列表,請檢視此處。(https://mlflow.org/docs/latest/models.html)

將模型儲存為工件的程式碼非常簡單:

MLFlow機器學習管理平臺入門教程一覽

mlFlow中log_model呼叫的示例

擬合的結果將作為第一個引數傳遞給函式,第二個部分是目錄。如果您導航到UI並單擊執行,您將在頁面底部找到工件資訊。

MLFlow機器學習管理平臺入門教程一覽

模型從mlFlow儲存在Azure上

如果您是偏執狂的型別,您現在可以檢視blob儲存帳戶,以驗證模型是否已實際儲存。

MLFlow機器學習管理平臺入門教程一覽

在blob儲存模型

如果需要,您可以檢視load特性並開始圍繞模型構建應用程式。

可以在Github上找到用於此演示的完整repo。(https://github.com/Ycallaer/ArimaMlfowExample)

問題

我在框架中發現的更大問題是,即使您已經定義了儲存後端,所有日誌記錄也只儲存在docker容器中。這意味著如果重新啟動容器,則所有日誌記錄都將丟失。我記錄了一個問題(https://github.com/mlflow/mlflow/issues/613),它得到了當前團隊正在重新設計日誌記錄功能的響應。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31545819/viewspace-2286441/,如需轉載,請註明出處,否則將追究法律責任。

相關文章