后端存储
后端存储是 MLflow Tracking 中的一个核心组件,MLflow 在其中存储 运行 和实验的元数据,例如:
请注意,大型模型工件(如模型权重文件)存储在 工件存储 中。
配置后端存储
默认情况下,MLflow 将元数据存储在 ./mlruns
目录中的本地文件中,但 MLflow 也可以将元数据存储到数据库中。您可以通过以下任一方法将所需的 跟踪 URI 传递给 MLflow 来配置位置:
设置
MLFLOW_TRACKING_URI
环境变量。在你的代码中调用
mlflow.set_tracking_uri()
。如果你正在运行一个 追踪服务器 ,你可以在启动服务器时设置
tracking_uri
选项,例如mlflow server --backend-store-uri sqlite:///mydb.sqlite
继续阅读下一节以了解支持的跟踪URL格式。同时,访问 此指南 以了解如何为您的流程正确设置后端存储。
支持的存储类型
MLflow 支持以下类型的跟踪 URI 用于后端存储:
本地文件路径(指定为
file:/my/local/dir
),数据直接存储在执行代码的系统磁盘上。一个数据库,编码为
<dialect>+<driver>://<username>:<password>@<host>:<port>/<database>
。MLflow 支持mysql
、mssql
、sqlite
和postgresql
方言。更多详情,请参见 SQLAlchemy 数据库 URI。HTTP 服务器(指定为
https://my-server:5000
),这是一个托管 MLflow 跟踪服务器 的服务器。Databricks 工作区(指定为
databricks
或databricks://<profileName>
,一个 Databricks CLI 配置文件)。请参阅从 Databricks 外部访问 MLflow 跟踪服务器 [AWS] [Azure],或 快速入门 以轻松开始使用 Databricks 社区版的托管 MLflow。
重要
mlflow server
在面对数据库模式过时的数据库后端存储时将会失败。为防止这种情况,请使用 mlflow db upgrade [db_uri]
将您的数据库模式升级到最新支持的版本。模式迁移可能导致数据库停机,在大数据库上可能需要更长时间,并且不能保证是事务性的。在运行 mlflow db upgrade
之前,您应始终备份您的数据库 - 请查阅您的数据库文档以获取备份说明。
备注
在2023年9月,我们将运行中记录的参数的最大长度从500增加到8k(但我们内部将参数值的最大长度限制为6000)。mlflow/2d6e25af4d3e_increase_max_param_val_length 是一个不可逆的迁移脚本,它将现有数据库中的上限增加到8k。如果你想升级,请在升级前备份你的数据库。
删除行为
为了允许恢复 MLflow 运行,当一个运行被删除时,运行元数据和工件不会自动从后端存储或工件存储中移除。提供了 mlflow gc CLI 用于永久删除已删除运行的元数据和工件。
SQLAlchemy 选项
你可以通过环境变量注入一些 SQLAlchemy 连接池选项。
MLflow 环境变量 |
SQLAlchemy QueuePool 选项 |
|
|
|
|
|
|
文件存储性能
MLflow 会自动尝试使用 LibYAML 绑定,如果它们已经安装。然而,如果你在使用 文件存储 后端时注意到任何性能问题,这可能意味着你的系统上没有安装 LibYAML。在 Linux 或 Mac 上,你可以使用系统包管理器轻松安装它:
# On Ubuntu/Debian
apt-get install libyaml-cpp-dev libyaml-dev
# On macOS using Homebrew
brew install yaml-cpp libyaml
安装 LibYAML 后,您需要重新安装 PyYAML:
# Reinstall PyYAML
pip --no-cache-dir install --force-reinstall -I pyyaml