跳到主要內容
工程的博客

如何使用MLflow重現結果和重新訓練保存的Keras ML模型

使用TensorBoard和MLFlow UI檢查實驗結果

2018年9月21日 工程的博客

分享這篇文章

第2部分在MLflow博客的係列文章中,我們演示了如何使用MLflow跟蹤使用二進製分類的Keras網絡模型的實驗結果。我們將來自IMDB數據集的評論分為積極和消極兩類。我們創建了一個基線模型和兩個實驗。對於每個模型,我們跟蹤其各自的訓練精度和損失以及驗證精度和損失。

在本係列的第三部分中,我們將展示如何使用mlflow輕鬆保存模型、重現結果、加載已保存的模型、預測未看到的評論以及在TensorBoard中查看結果。

在MLFlow中保存模型

MLflow日誌api允許您以兩種方式保存模型。首先,您可以將模型保存在本地文件係統或雲存儲(如S3或Azure Blob storage)上;其次,您可以記錄模型及其參數和度量。兩者都保留了Keras HDF5格式,如MLflow Keras文檔

首先,如果您保存模型使用MLflow Keras模型API到存儲或文件係統,其他不使用MLflow的ML開發人員可以使用通用的Keras模型api.例如,在你的MLflow運行中,你可以保存一個Keras模型,如下所示:

進口mlflow.keras#您的Keras構建、訓練和測試模型模型=…#本地或遠程S3或Azure Blob路徑model_dir_path =…#保存模式到S3或Azure Blob上的本地或遠程可訪問路徑mlflow.keras。model_dir_path save_model(模型)

保存後,MLflow之外的ML開發人員可以簡單地使用Keras api加載模型並預測它。例如,

進口keraskeras.models進口load_model
              Model_dir_path =…New_data =…Model = load_model(model_dir_path)預測= model.predict(new_data)

其次,您可以保存模型作為運行實驗的一部分,以及如下代碼片段所示的其他指標和工件:

進口mlflow進口mlfow.keras#您的Keras構建、訓練和測試模型模型=…mlflow.start_run ():#日誌度量mlflow.log_metric (“binary_loss”binary_loss)mlflow.log_metric (“binary_acc”binary_acc)mlflow.log_metric (“validation_loss”validation_loss)mlflow.log_metric (“validation_acc”validation_acc)mlflow.log_metric (“average_loss”average_loss)mlflow.log_metric (“average_acc”average_acc)#日誌工件mlflow.log_artifacts (image_dir“圖片”#日誌模型mlflow.keras.log_model(模型,“模型”

使用第二種方法,您可以訪問它的run_uuid或位置從MLflow UI運行作為其保存的工件的一部分:

圖1所示。MLflow UI顯示保存的工件和Keras模型

在我們的IMDB示例中,可以查看兩種保存模式的代碼train_nn.py、類KTrain ().以這種方式保存模型提供了從MLflow平台中重現結果或重新加載模型以進行進一步預測的訪問,我們將在下麵的小節中演示。Beplay体育安卓版本

從保存的模型中再現結果

作為機器開發生命周期的一部分,ML團隊成員的任何模型實驗的可重複性都是必不可少的。通常情況下,你會想要重新訓練或重現過去幾個實驗的運行,以回顧各自的結果,以保持理智、可聽性或好奇心。

在我們的示例中,一種方法是從MLflow UI手動複製記錄的超參數run_uuid並使用main_nn.pyreload_nn.py使用原始參數作為參數,如README.md

無論哪種方式,您都可以重現您的舊運行和實驗:

python reproduce_run_nn.py——run_uuid = 5374 ba7655ad44e1bc50729862b25419python reproduce_run_nn.py——run_uuid = 5374 ba7655ad44e1bc50729862b25419(——tracking_server = URI)

或使用Mlflow運行命令

mlflow run keras/imdbclassifier -e repeat -P run_uuid=5374ba7655ad44e1bc50729862b25419mlflow run keras/imdbclassifier -e repeat -P run_uuid=5374ba7655ad44e1bc50729862b25419 [-P tracking_server=URI]

默認情況下,tracking_server默認為本地mlruns目錄中。下麵是一個可重複運行的動畫樣例輸出:

https://www.youtube.com/watch?v=tAg7WiraUm0
圖2所示。運行顯示先前run_uuid的再現性

加載並使用保存的模型進行預測

在前麵的部分中,當執行測試運行時,用於這些測試運行的模型也通過mlflow.keras.log_model(模型、“模型”).您的Keras模型保存為HDF5文件格式,如MLflow >型號> Keras.一旦找到了自己喜歡的模型,就可以使用MLflow重用模型。

此模型可以作為Python函數正如在mlflow.keras使用mlflow.keras。load_model(path, run_id=None)

要執行此操作,您可以通過轉到MLflow UI、選擇運行並複製存儲模型的路徑(如下麵的屏幕截圖所示)來加載您在MLflow中保存的模型。

圖3所示。MLflow模型保存在工件中

確定了模型後,您可以通過加載模型並執行它來輸入您自己的評審。例如,讓我們使用一個不包含在IMDB分類器數據集中的回顧:

這是一部很棒的電影,有很棒的表演、漂亮的攝影和驚人的導演

要根據此回顧運行預測,請使用predict_nn.py與你的模型相反:

python predict_nn.py——load_model_path='/Users/dennylee/github/jsd-mlflow-examples/keras/imdbclassifier/mlruns/0/55d11810dd3b445dbad501fa01c323d5/artifacts/models'——my_review='這是一部很棒的電影,有很棒的表演,漂亮的攝影,和驚人的方向'

或者您可以直接使用mlflowimdbclassifer回購計劃:

mlflow運行keras/imdbclassifier -e predict -P load_model_path=' /用戶/朱爾斯/ jsd-mlflow-examples keras / imdbclassifier / keras_models / 178 f1d25c4614b34a50fbf025ad6f18a- p my_review =“這是一部很棒的電影,有很棒的表演、漂亮的攝影和很棒的導演。”

該命令的輸出應該類似於以下輸出,預測對所提供的評論的積極情緒。

使用TensorBoard檢查結果

除了在MLflow UI中查看結果外,代碼示例還保存TensorFlow事件,以便您可以可視化TensorFlow會話圖。例如,在執行語句之後python main_nn.py,您將看到類似以下輸出的內容:

平均概率結果:0.303863499689102150.88336000000000003
              預測結果:[[0.354286550.992315170.86375767…,0.156891970.249015760.4418138]]將TensorFlow事件本地寫入/var/文件夾/0q / c_zjyddd4hn5j9jkv0jsjvl00000gp / T / tmp7af2qzw4上傳TensorFlow事件作為運行工件。損失函數使用binary_crossentropy模型花了51.23427104949951火車而且測驗

您可以使用輸出行來提取TensorBoard日誌目錄將TensorFlow事件本地寫入....要啟動TensorBoard,可以執行以下命令:

tensorboard——logdir =/var/文件夾/ 0 q / c_zjyddd4hn5j9jkv0jsjvl00000gp / T / tmp7af2qzw4

Github鏈接

在TensorBoard UI中:

  • 點擊標量回顧MLflow中記錄的相同指標:二進製損失、二進製精度、驗證損失和驗證精度。
  • 點擊可視化會話圖並與之交互

封閉的思想

在這篇博客文章中,我們演示了如何使用MLflow保存模型並從保存的模型中重現結果,作為機器開發生命周期的一部分。此外,通過兩者python而且mlflow命令行,我們加載了一個已保存的模型,並預測了模型看不到的自定義評論的情緒。最後,我們通過提供生成TensorFlow事件的代碼示例,展示了如何同時利用MLflow和TensorBoard,這樣就可以將指標和會話圖可視化。

接下來是什麼?

您已經在三個部分中看到了MLflow的各個方麵:從實驗到再現性,以及使用MLlfow UI和TensorBoard來可視化您的運行。

你可以試試MLflowmlflow.org開始吧。或者嚐試文檔中的一些教程和示例,包括我們的Keras_IMDB.py示例為了這個博客。

閱讀更多

這裏有一些資源供你了解更多:

免費試用Databricks

相關的帖子

看到所有工程的博客的帖子
Baidu
map