跳至主内容

使用情况跟踪

从版本 3.2.0 开始,MLflow 默认收集匿名使用数据。该数据不包含敏感或可识别个人身份的信息。

important

MLflow 不会收集任何包含个人信息的数据,遵守 GDPR 和其他隐私法规。 作为一个 Linux Foundation 项目,MLflow 遵守 LF telemetry data collection and usage policy。 此实现已由 Linux Foundation 审核并批准,批准的提案记录在官方政策的 Completed Reviews 部分。 有关收集内容的详细信息,请参阅下文的 Data Explanation section

note

遥测仅在 Open Source MLflow 中启用。如果您通过托管服务或发行版使用 MLflow,请咨询您的供应商以确定在您的环境中是否启用了遥测。在任何情况下,您都可以按照我们文档中提供的指南选择退出。

为什么要收集数据?

MLflow 使用匿名遥测来了解功能使用情况,这有助于指导开发优先级并改进该库。 这些数据帮助我们识别哪些功能最有价值,以及应将精力集中在哪些错误修复或增强上。

根据《通用数据保护条例》(GDPR),数据控制者和数据处理者有责任以谨慎、透明和负责任的方式处理个人数据。

  • 未收集个人数据: 收集的遥测数据已被完全匿名化,不包含任何个人或敏感信息(例如用户名、IP 地址、文件名、参数或模型内容)。MLflow 为每个会话生成一个随机 UUID 用于聚合使用事件,该 UUID 无法用于识别或跟踪单个用户。
  • 目的限制: 数据仅用于基于汇总的功能使用模式来改进MLflow项目。
  • 数据最小化:仅收集用于确定项目优先级的最少必要元数据(例如,功能切换状态、所使用的 SDK/平台、版本信息)。
  • 用户控制: 用户可以通过将环境变量设置为 MLFLOW_DISABLE_TELEMETRY=trueDO_NOT_TRACK=true 随时选择退出遥测。MLflow 会立即生效这些设置,无需重启。
  • 透明性: 遥测端点和行为在公开文档中有说明,MLflow 用户可以检查或阻止相关的网络调用。

收集了哪些数据?

数据说明

来源 SDK当前使用的 SDK 名称mlflow | mlflow-skinny | mlflow-tracing用于了解不同 MLflow SDK 的采用情况并识别改进领域
跟踪 URI 方案当前跟踪 URI 的方案file | sqlite | mysql | postgresql | mssql | https | http | custom_scheme | None用于确定哪些跟踪后端最常被使用并优化后端支持
事件名称被跟踪的事件名称(有关被跟踪的事件,请参见 below tablecreate_experiment用于衡量功能使用情况和改进
事件状态事件是否成功success | failure | unknown用于识别常见的失败点并改进可靠性和错误处理
时间戳(纳秒)事件发生的时间1753760188623715000作为事件的标识符
持续时间事件调用所花费的时间,单位为毫秒1000用于监控性能趋势并检测响应时间的回归
Parameters (boolean or enumerated values)See below table for collected parameters for each eventcreate_logged_model event: {"flavor": "langchain"}To better understand the usage pattern for each event

不会收集有关特定模型、代码或权重的详细信息。 仅记录与事件一起记录位于 Tracked Parameters 列下的参数;对于在 Tracked Parameters 列中为 None 的事件,仅记录事件名称。

import_mlflow
create_runWhether the packages in PACKAGES_TO_CHECK_IMPORT are imported or not{"imports": ["sklearn"]}
create_logged_modelFlavor of the model (e.g. langchain, sklearn){"flavor": "langchain"}
create_registered_modelNoneNone

MLflow 使用一种选择退出的遥测模型,基于真实的使用模式帮助改进平台,为所有用户提供更好的服务。 默认收集匿名使用数据使我们能够:

  • 了解 MLflow 在各种环境和工作流中的使用情况

MLflow 支持通过下列任一环境变量选择退出遥测:

  • DO_NOT_TRACK=true

设置任意一项将 立即禁用遥测,无需重新导入 MLflow 或重新启动您的会话。

note

MLflow 在以下 CI 环境中会自动禁用遥测。如果您希望支持其他 CI 环境,请 open an issue on our GitHub repository

  • 持续集成
  • Github Actions
  • BitBucket
  • BuildKite
  • 如果你在干净的环境中启动子进程,这些子进程可能无法继承你 shell 的环境,遥测可能仍然处于启用状态。例如: subprocess.run([...], env={})

确保在所有环境中始终禁用遥测的建议:

  • 将该变量添加到您的 shell 启动文件 (~/.bashrc, ~/.zshrc 等): export MLFLOW_DISABLE_TELEMETRY=true
  • 如果您在使用子进程或隔离环境,请使用 dotenv 管理器,或在启动时显式传递该变量。

如何验证遥测已被禁用?

使用以下代码验证遥测已被禁用。

from mlflow.telemetry import get_telemetry_client

assert get_telemetry_client() is None, "Telemetry is enabled"

组织可以通过阻止对 https://config.mlflow-telemetry.io 的网络访问来禁用遥测。当该端点无法访问时,MLflow 会自动禁用遥测。

我们在用这些数据做什么?