如何将本地文件夹作为MLflow训练运行的输入数据进行记录?
规范记录本地图片数据集文件夹为MLflow输入数据
针对你的需求,有两种更规范的方式替代将文件夹路径存为超参数:
1. 直接记录文件夹为Artifact
MLflow的mlflow.log_artifact()支持直接上传整个本地文件夹,能完整保留图片文件夹的结构,且在MLflow UI中可直接浏览内容,是最简单直接的方案。
示例代码:
import mlflow # 启动MLflow运行 with mlflow.start_run(): # 把图片数据集文件夹上传到当前运行的artifact目录下的input_images子文件夹 mlflow.log_artifact(local_dir="./path/to/your/image_dataset", artifact_path="input_images") # 执行后续训练逻辑...
操作后,在MLflow UI的当前运行详情页,你可以在「Artifacts」标签下找到input_images文件夹,直接查看里面的图片文件结构,比存超参数更直观规范。
2. 使用mlflow.data自定义数据集(更严谨的跟踪方式)
如果需要更正式的数据关联和元数据记录,可以用mlflow.data模块自定义数据集,把图片文件夹纳入MLflow的输入数据跟踪体系,在UI的「Inputs」标签下专门展示。
示例代码:
import mlflow import mlflow.data with mlflow.start_run(): # 从本地路径创建自定义数据集,指定名称和数据格式 image_dataset = mlflow.data.from_local( path="./path/to/your/image_dataset", name="training_image_dataset", data_format="image_folder" ) # 将数据集标记为当前运行的训练输入数据 mlflow.log_input(image_dataset, context="training") # 执行训练逻辑...
这种方式的优势在于:可以通过mlflow.data.Dataset.add_metadata()给数据集添加额外元数据(比如数据集描述、采集时间等),MLflow会自动跟踪数据集的路径、类型等信息,方便后续回溯训练使用的具体数据版本。
可选:结合数据版本控制工具(如DVC)
如果你的图片数据集需要版本管理,可以搭配DVC使用:先用DVC跟踪图片文件夹(dvc add image_dataset),然后在MLflow中记录DVC的版本哈希,同时上传dvc.lock文件作为artifact,精准关联训练时使用的数据集版本。
示例代码片段:
import subprocess import mlflow with mlflow.start_run(): # 获取DVC当前数据集版本哈希 dvc_rev = subprocess.check_output(["dvc", "rev", "image_dataset"]).decode().strip() mlflow.log_param("dataset_dvc_rev", dvc_rev) # 上传dvc.lock文件,方便验证数据集版本 mlflow.log_artifact("dvc.lock") # 可选:同时记录图片文件夹作为artifact mlflow.log_artifact("./path/to/your/image_dataset", "input_images")
内容的提问来源于stack exchange,提问作者G. Rab
相关产品推荐
相关产品推荐

