MLflow实验跟踪如何存储数据

GPU
小华
2025-12-01

MLflow 实验跟踪的数据存储架构
MLflow 将实验数据分为两类存储:一类是结构化的元数据(如实验、运行、参数、指标、标签),另一类是大体积的产物 Artifacts(如模型文件、图片、日志)。元数据可存放在本地文件系统或支持 SQLAlchemy 的数据库中;Artifacts 则存放在可扩展的对象存储或共享文件系统中。客户端通过 tracking_uri 指定跟踪位置,远程服务通过 mlflow server 提供统一入口。
存储类型与位置一览

存储类型存放内容典型位置或 URI说明
后端存储(Metadata)实验、运行、参数、指标、标签等结构化数据• 本地:file:/my/local/dir./mlruns • 数据库:postgresql://…mysql://…sqlite:///mlflow.db通过 --backend-store-uri 配置;远程服务器场景常用数据库;本地默认使用文件存储
Artifacts 存储模型、图片、日志等大文件• 本地:file:///path./mlruns • 对象存储:s3://bucket/pathwasbs://…gs://… • 共享文件系统:nfs://…hdfs://…通过 --default-artifact-root 配置;也可按实验或运行单独指定 artifact_location/artifact_uri
Tracking Server接收/聚合记录并提供 UIhttp://<;host>:统一入口,便于多用户与多环境协作
Databricks 工作区托管式元数据与 Artifactsdatabricks://使用 Databricks 托管环境时的快捷方式

上述存储类型与位置由 MLflow 的“后端存储 + Artifacts 存储”双组件模型统一承载,并可通过 URI 灵活指定。
目录结构与关键字段

  • 本地默认使用 mlruns/ 目录,顶层为实验 ID目录;每个实验目录包含 meta.yaml(含实验名、ID、artifact 位置等)。实验下的每个 run_id 目录包含 metrics/params/tags/ 等子目录,分别存放对应类型的记录;Artifacts 存放在该 run 的 artifacts/ 目录或配置的远端位置。
  • 关键实体字段:Experiment.artifact_location(实验级 Artifacts 根路径)、RunInfo.artifact_uri(本次运行 Artifacts 完整路径)。

常见部署与配置示例

  • 本地开发(文件存储)
  • 启动 UI:mlflow ui(默认读取 ./mlruns
  • 代码示例:mlflow.set_tracking_uri("file:///my/local/dir")
  • 远程 Tracking Server(数据库 + 对象存储)
  • 启动服务:mlflow server \

--backend-store-uri postgresql://user:pass@db:5432/mlflow \
--default-artifact-root s3://my-mlflow-bucket/artifacts \
--host 0.0.0.0 --port 5000

  • 客户端:mlflow.set_tracking_uri("http://:5000")
  • 仅用服务器代理 Artifacts 访问
  • 启动服务:mlflow server \

--artifacts-destination hdfs://myhost:8020/mlartifacts \
--serve-artifacts --host 0.0.0.0

  • 说明:客户端仍记录元数据到服务器,但 Artifacts 直接由服务器代理读写至后端存储,适合统一权限与网络策略管理。

访问与引用方式

  • 记录产物:mlflow.log_artifact("confusion.png");mlflow.log_artifacts("./logs/", artifact_path="debug_logs")
  • 引用产物:使用 runs:// 形式,例如:mlflow.pytorch.load_model("runs:/12345abcde/model")
  • 在远程服务或代理模式下,上述 URI 由服务器解析并转发到实际 Artifacts 存储;数据库仅保存路径映射与元数据。
亿速云提供售前/售后服务

售前业务咨询

售后技术保障

400-100-2938

7*24小时售后电话

官方微信小程序