tensorflow2.x(三)用mlflow平台管理参数与模型

前两篇文章详细讲解了如何并行训练多个tf模型,要知道对于深度学习模型,批量训练不同模型结构、不同参数都是家常便饭。如果你还是手动整理参数结果、手动整理模型,或者充其量使用tensorboard来观察训练曲线,那就太low啦!
这里,我们介绍如何使用Mlflow平台来管理tensorflow模型。(Mlflow可以管理市面上几乎任何机器学习模型,不仅仅是tensorflow)

有兴趣、有能力的自己跳转 Mlflow官网。

下面正式开始。

1.准备与入门

  1. 进入自己的虚拟环境,安装MLflow pip install mlflow
  2. 进入刚刚安装mlflow的虚拟环境中,输入mlflow ui,然后从浏览器进入 http://localhost:5000.

至此,如果顺利打开mlflow管理平台的页面,那么恭喜,你的准备工作完成了!

  1. 下面,我们在安装了mlflow的环境中,执行以下代码:
import os
import mlflow
from random import random, randint

mlflow.start_run()
# 记录参数
mlflow.log_param("param1", randint(0, 100))

# 记录指标
mlflow.log_metric("foo", random())
mlflow.log_metric("foo", random() + 1)
mlflow.log_metric("foo", random() + 2)

# 记录输出文件
if not os.path.exists("outputs"):
    os.makedirs("outputs")
with open("outputs/test.txt", "w") as f:
    f.write("hello world!")
mlflow.log_artifacts("outputs")
mlflow.end_run()

至此,如果聪明的你在运行结束后,在mlflow管理页面中看到相应的记录,那么恭喜,你已经入门了!

3.训练普通线性模型

详细直接看官网吧。。。

4.训练tensorflow模型,并使用autolog自动记录

详细还是直接看官网吧。。。有很多例子,都比较好理解,这里就不写了。
值得注意的是,autolog最大的作用是可以类似tensorboard实时记录训练loss曲线。但是他自带的参数记录和指标记录并不一定满足我们的需求,那就需要再自定义,甚至修改源码。

但是如果你的一个实验记录是有多个模型的训练取平均值,那么这里的训练loss就会混杂在一起,因此需要忽略。因此,笔者这里采用的方式,还是单个模型用tensorboard记录,最后手动自定义记录参数和指标。

5.配置mlflow跟踪服务器及数据库

mlflow server \
--host 0.0.0.0 \
--backend-store-uri mysql://root:password@192.168.0.xxx:3306/mlflow \
--default-artifact-root /path/mlflow/mlruns \
--artifacts-destination /path/mlflow/mlartifacts

解释一下,mlflow server是开启后端mlflow服务,在我的理解看来,和刚开始学习到的mlflow ui作用基本相同,只不过更加详细和专业化。
在上述代码中,分别制定了:

  • 允许登录的ip范围,0.0.0.0指任何ip地址
  • 后端数据库(sqlalchemy支持)
  • 主文件位置
  • 人工生成附件保存位置

当我们在服务器上开启上了以上服务,在其他的电脑中,就需要设置以下路径来记录到服务器中:

import mlflow
mlflow.set_tracking_uri("http://your-experiment-tracking-server")
mlflow.set_experiment("your-experiment-name")

6.训练过程可视化、模型比较可视化

自己稍微摸索一下应该都能懂。。。这里我具体介绍一下mlflow支持的模型比较可视化图形。

  1. 任选多个需要比较的模型结果tensorflow2.x(三)用mlflow平台管理参数与模型_第1张图片
  2. 拉到最下方,可以看到,有三个图可以展示。分别是二维散点图(可以一维特征对应一维指标)、三维等高线图(可以二维特征对应一维指标)、多维平行坐标图(可以多维特征对应多维指标)
    tensorflow2.x(三)用mlflow平台管理参数与模型_第2张图片
    tensorflow2.x(三)用mlflow平台管理参数与模型_第3张图片
    tensorflow2.x(三)用mlflow平台管理参数与模型_第4张图片

其中,第三个多维平行坐标图是我认为功能最为强大的特征-指标可视化方法,可以支持多维度特征与多维度指标的相关性展示,对我们训练模型不同参数的作用有很大帮助。

你可能感兴趣的:(tensorflow,奇技淫巧,tensorflow,深度学习,python)