后端存储
后端存储是 MLflow Tracking 中的核心组件,MLflow 在其中存储 运行、模型和实验的元数据,例如:
- 模型 ID
- 运行 ID
- 开始和结束时间
- 参数
- 指标
- 代码版本(仅当您从 MLflow Project 启动运行时)。
- 源文件名(仅当您从 MLflow Project 启动运行时)。
请注意,大型模型工件(例如模型权重文件)存储在 工件存储 中。
配置后端存储
默认情况下,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。
在 2023 年 9 月,我们将 Run 中记录的参数最大长度从 500 增加到 8k(但我们在内部将参数值最大长度限制为 6000)。mlflow/2d6e25af4d3e_increase_max_param_val_length 是一个不可逆的迁移脚本,它将现有数据库中的上限增加到 8k。如果您想升级,请在升级前备份您的数据库。
删除行为
为了允许恢复 MLflow Runs,Run 元数据和工件在删除 Run 时不会自动从后端存储或工件存储中删除。mlflow gc CLI 用于永久删除已删除 Runs 的 Run 元数据和工件。
SQLAlchemy 选项
您可以使用环境变量注入一些 SQLAlchemy 连接池选项。
MLflow 环境变量 | SQLAlchemy QueuePool 选项 |
---|---|
MLFLOW_SQLALCHEMYSTORE_POOL_SIZE | pool_size |
MLFLOW_SQLALCHEMYSTORE_POOL_RECYCLE | pool_recycle |
MLFLOW_SQLALCHEMYSTORE_MAX_OVERFLOW | max_overflow |
MySQL SSL 选项
当连接到需要 SSL 证书的 MySQL 数据库时,您可以设置以下环境变量:
# Path to SSL CA certificate file
export MLFLOW_MYSQL_SSL_CA=/path/to/ca.pem
# Path to SSL client certificate file (if needed)
export MLFLOW_MYSQL_SSL_CERT=/path/to/client-cert.pem
# Path to SSL client key file (if needed)
export MLFLOW_MYSQL_SSL_KEY=/path/to/client-key.pem
然后使用您的 MySQL URI 启动 MLflow 服务器:
mlflow server --backend-store-uri="mysql+pymysql://username@hostname:port/database" --default-artifact-root=s3://your-bucket --host=0.0.0.0 --port=5000
这些环境变量将用于配置与 MySQL 服务器的 SSL 连接。
文件存储性能
如果已安装 LibYAML 绑定,MLflow 将自动尝试使用它们。但是,如果您在使用文件存储后端时发现任何性能问题,则可能意味着您的系统上未安装 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