近几天接触到一个开源的机器学习实验管理平台MLFlow,它独立于第三方机器学习库,可以与任何机器学习库、任意语言结合。本文介绍一个最简单的实验例子:
安装很简单:pip install mlflow
简单实例代码:
import os
from mlflow import log_metric,log_param,log_artifact
if __name__ == '__main__':
log_param("sim param",5)
log_metric("foo",1)
log_metric("foo",2)
log_metric("foo",3)
with open("output.txt",'w') as f:
f.write("Hello world")
log_artifact("output.txt")
需要提醒的是,最后一行代码,使用的函数是log_artifact而不是log_artifacts,否则会报错如下:
Traceback (most recent call last):
File "E:\autoTrade\sim.py", line 13, in <module>
log_artifacts("output.txt")
File "D:\Python39\lib\site-packages\mlflow\tracking\fluent.py", line 583, in log_artifacts
MlflowClient().log_artifacts(run_id, local_dir, artifact_path)
File "D:\Python39\lib\site-packages\mlflow\tracking\client.py", line 977, in log_artifacts
self._tracking_client.log_artifacts(run_id, local_dir, artifact_path)
File "D:\Python39\lib\site-packages\mlflow\tracking\_tracking_service\client.py", line 334, in log_artifacts
self._get_artifact_repo(run_id).log_artifacts(local_dir, artifact_path)
File "D:\Python39\lib\site-packages\mlflow\store\artifact\local_artifact_repo.py", line 58, in log_artifacts
dir_util.copy_tree(src=local_dir, dst=artifact_dir, preserve_mode=0, preserve_times=0)
File "D:\Python39\lib\distutils\dir_util.py", line 123, in copy_tree
raise DistutilsFileError(
distutils.errors.DistutilsFileError: cannot copy tree 'output.txt': not a directory
假设上述代码保存为test.py文件,通过命令行 python test.py 运行该程序。再对上述代码 进行简单修改如下,并重新运行:
import os
from mlflow import log_metric,log_param,log_artifact
if __name__ == '__main__':
log_param("sim param",5)
log_metric("test1",1)
log_metric("test2",2)
log_metric("test3",3)
with open("output.txt",'w') as f:
f.write("Hello world")
log_artifact("output.txt")
可以看到在目录下出现了一个mlruns文件夹。
使用命令mlflow ui 可以启动web浏览方式。提示可以访问 http://127.0.0.1:5000
相关界面如下: