# mlflow-ex-tracking-basic **Repository Path**: yichaoyyds/mlflow-ex-tracking-basic ## Basic Information - **Project Name**: mlflow-ex-tracking-basic - **Description**: [`MLflow Tracking`](https://mlflow.org/docs/latest/tracking.html)是一个API以及包含UI界面,能够允许我们记录代码中的log matrics和artifacts文件,查看运行历史记录,并且进行一些结果的数据可视化。 在这个案例中,我们具体说明`MLflow Tracking`如何被使用。 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-03-06 - **Last Updated**: 2022-03-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MLFlow Tracking Example [`MLflow Tracking`](https://mlflow.org/docs/latest/tracking.html)是一个API以及包含UI界面,能够允许我们记录代码中的log matrics和artifacts文件,查看运行历史记录,并且进行一些结果的数据可视化。 在这个案例中,我们会具体说明`MLflow Tracking`如何被使用,以及结果,但首先,我们先简单地过一遍概念,然后介绍如何把这个代码跑起来。关于此代码的详细解释,请参见我的博客:[MLOps极致细节:3. MLFlow Tracking 案例代码解读](https://blog.csdn.net/zyctimes/article/details/123309846)。 - 平台:Win10。 - IDE:Visual Studio Code - 需要预装:Anaconda3。 - [MLFlow Tracking Example](#mlflow-tracking-example) - [一些概念](#一些概念) - [数据保存](#数据保存) - [相关函数的介绍](#相关函数的介绍) - [代码运行](#代码运行) ## 一些概念 当我们使用MLFlow Tracking,例如,引用了`log_metric, log_param, log_artifacts`这些模块,运行代码过后,我们会发现,系统会自动生成一个`mlruns`的文件夹,里面就会包含我们Tracking的日志等相关文件。这些记录包括: - `Code Version` - `Start & End Time`:每次项目运行(experiment run)的开始和结束时间 - `Source`:运行文件的名称,或者MLflow项目运行时的项目名称和entry point。 - `Parameters`:日志的参数。键(Key)和值(Value)都是字符串(String)。 - `Metrics`:键(Key)-值(Value)矩阵。值是一个数字(numeric)。 - `Artifacts`:以任何格式输出文件。例如,图片,模型和数据文件都可以作为artifacts。 ## 数据保存 MLFlow项目运行后,默认会将上述数据记录到本地(`mlruns`文件夹下),也支持保存至与SQLAlchemy兼容的数据库,或者远程记录到服务器。然后我们可以运行`mlflow ui`查看记录的运行,以及一些可视化结果。这里我们先不一一描述,而是将重点放在保存到本地。 ![mlflow](./img/MLFlow_on_localhost.png) 此图直白地介绍了我们将MLFlow的Tracking记录保存到本地的情况,即,后端数据(backend)和工件(artifacts)都存储在本地文件并共享一个目录:`mlruns`。MLFlow客户端可以直接与FileStore和LocalArtifactRepository的实例接口。 ## 相关函数的介绍 这里,我们将简单介绍几个常用的`MLFlow Tracking`相关函数。详细的描述见[此网站](https://mlflow.org/docs/latest/tracking.html#id59)。 - `experiment`相关。`mlflow.create_experiment()`: 创建一个新的`experiment`,返回`experiment_id`。我们可以在这个基础上使用`mlflow.start_run`来run我们的代码。与`experiment`相关的函数还有:`mlflow.set_experiment()`, `mlflow.get_experiment()`等; - `run`相关。`mlflow.start_run()`:启动一个新的MLflow run,在这个run里面我们可以`log_param`或者`log_metric`。通常这个函数和with一起使用(见下面的例子);最后,我们调用`end_run()`来终止当前项目run的运行。与`run`相关的函数还有:`mlflow.end_run()`, `mlflow.active_run()`等; - `tag`相关。`mlflow.set_tag()`:在当前的run中设置单个Tag标记。键(Key)和值(Value)都是字符串。与`tag`相关的函数还有:`mlflow.set_tags()`; - `log`相关。`mlflow.log_param()`:记录单一的键(Key)和值(Value)参数;`mlflow.log_metric()`:记录单一的键(Key)和值(Value)“矩阵”;`mlflow.log_artifact()`:记录一个本地的文件或者路径。(我们会在之后的例子中解释三者的区别); ## 代码运行 在运行起代码之前,我们还是需要在我们的主机(host machine)新建虚拟环境(比如`conda create -n [your vm name] python=3.8`),python版本按照你的主机运行环境而定,我这边3.8,3.9都可以。进入虚拟环境(`conda activate [your vm name]`)。 然后,我们将代码克隆到本地:`git clone https://gitee.com/yichaoyyds/mlflow-ex-tracking-basic.git`,进入文件夹:`cd mlflow-ex-tracking-basic`,安装好依赖(`pip3 install mlflow -i requirements.txt`)。 运行代码:`python mlflow_tracking_ex.py`。