如何使用MLflow重現結果和重新訓練保存的Keras ML模型
在第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加載模型並預測它。例如,
進口keras從keras.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運行作為其保存的工件的一部分:
在我們的IMDB示例中,可以查看兩種保存模式的代碼train_nn.py、類KTrain ().以這種方式保存模型提供了從MLflow平台中重現結果或重新加載模型以進行進一步預測的訪問,我們將在下麵的小節中演示。Beplay体育安卓版本
從保存的模型中再現結果
作為機器開發生命周期的一部分,ML團隊成員的任何模型實驗的可重複性都是必不可少的。通常情況下,你會想要重新訓練或重現過去幾個實驗的運行,以回顧各自的結果,以保持理智、可聽性或好奇心。
在我們的示例中,一種方法是從MLflow UI手動複製記錄的超參數run_uuid
並使用main_nn.py
或reload_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中保存的模型。
確定了模型後,您可以通過加載模型並執行它來輸入您自己的評審。例如,讓我們使用一個不包含在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='這是一部很棒的電影,有很棒的表演,漂亮的攝影,和驚人的方向'
或者您可以直接使用mlflow
和imdbclassifer
回購計劃:
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.30386349968910215,0.88336000000000003]
預測結果:[[0.35428655][0.99231517][0.86375767]…,[0.15689197][0.24901576][0.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
在TensorBoard UI中:
- 點擊標量回顧MLflow中記錄的相同指標:二進製損失、二進製精度、驗證損失和驗證精度。
- 點擊圖可視化會話圖並與之交互
封閉的思想
在這篇博客文章中,我們演示了如何使用MLflow保存模型並從保存的模型中重現結果,作為機器開發生命周期的一部分。此外,通過兩者python
而且mlflow
命令行,我們加載了一個已保存的模型,並預測了模型看不到的自定義評論的情緒。最後,我們通過提供生成TensorFlow事件的代碼示例,展示了如何同時利用MLflow和TensorBoard,這樣就可以將指標和會話圖可視化。
接下來是什麼?
您已經在三個部分中看到了MLflow的各個方麵:從實驗到再現性,以及使用MLlfow UI和TensorBoard來可視化您的運行。
你可以試試MLflowmlflow.org開始吧。或者嚐試文檔中的一些教程和示例,包括我們的Keras_IMDB.py示例為了這個博客。
閱讀更多
這裏有一些資源供你了解更多: