如何使用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平台中重现结果或重新加载模型以进行进一步预测的访问,我们将在下面的小节中演示。bob体育客户端下载
从保存的模型中再现结果
作为机器开发生命周期的一部分,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示例为了这个博客。
阅读更多
这里有一些资源供你了解更多:BOB低频彩