工程的博客

如何使用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平台中重现结果或重新加载模型以进行进一步预测的访问,我们将在下面的小节中演示。bob体育客户端下载

从保存的模型中再现结果

作为机器开发生命周期的一部分,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示例为了这个博客。

阅读更多

这里有一些资源供你了解更多:BOB低频彩

免费试用Databricks

相关的帖子

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