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/path、wasbs://…、gs://… • 共享文件系统:nfs://…、hdfs://… | 通过 --default-artifact-root 配置;也可按实验或运行单独指定 artifact_location/artifact_uri |
| Tracking Server | 接收/聚合记录并提供 UI | http://<host>: | 统一入口,便于多用户与多环境协作 |
| Databricks 工作区 | 托管式元数据与 Artifacts | databricks:// | 使用 Databricks 托管环境时的快捷方式 |
上述存储类型与位置由 MLflow 的“后端存储 + Artifacts 存储”双组件模型统一承载,并可通过 URI 灵活指定。
目录结构与关键字段
常见部署与配置示例
--backend-store-uri postgresql://user:pass@db:5432/mlflow \
--default-artifact-root s3://my-mlflow-bucket/artifacts \
--host 0.0.0.0 --port 5000
--artifacts-destination hdfs://myhost:8020/mlartifacts \
--serve-artifacts --host 0.0.0.0
访问与引用方式