mlflow.projects

mlflow.projects 模块提供了一个用于在本地或远程运行 MLflow 项目的 API。

class mlflow.projects.SubmittedRun[source]

Bases: object

MLflow 项目运行(例如,运行入口点命令的子进程或 Databricks 作业运行)的包装器,并公开用于等待和取消运行的方法。此类定义了 MLflow 项目运行器用于管理在不同环境中启动的运行的生命周期的接口(例如,在本地或 Databricks 上启动的运行)。

SubmittedRun 不是线程安全的。也就是说,来自多个线程的对 wait() / cancel() 的并发调用可能会意外杀死与运行无关的资源(例如,本地进程)。

注意

SubmittedRun 的子类必须公开一个名为 run_id 的成员,其中包含运行的 MLflow 运行 ID。

abstract cancel()[source]

取消运行(中断命令子进程、取消 Databricks 运行等)并等待其终止。运行取消后,MLflow 运行状态可能不会正确设置。

abstract get_status()[source]

获取运行的状态。

abstract property run_id
abstract wait()[source]

等待运行完成,如果运行成功则返回 True,否则返回 False。请注意,在某些情况下(例如,在 Databricks 上进行远程执行),我们可能会等待远程作业完成,而不是等待 MLflow 运行完成。

mlflow.projects.run(uri, entry_point='main', version=None, parameters=None, docker_args=None, experiment_name=None, experiment_id=None, backend='local', backend_config=None, storage_dir=None, synchronous=True, run_id=None, run_name=None, env_manager=None, build_image=False, docker_auth=None)[source]

运行 MLflow 项目。项目可以是本地的,也可以存储在 Git URI 中。

MLflow 提供内置支持,用于在本地或 Databricks 或 Kubernetes 集群上远程运行项目。您还可以通过安装适当的第三方插件来运行针对其他目标的项目。有关更多信息,请参阅 社区插件

有关在链式工作流中使用此方法的更多信息,请参阅 构建多步工作流

引发

mlflow.exceptions.ExecutionException – 执行失败。

参数
  • uri – 要运行的项目 URI。本地文件系统路径或 Git 存储库 URI(例如 https://github.com/mlflow/mlflow-example),指向包含 MLproject 文件的项目目录。

  • entry_point – 项目中要运行的入口点。如果找不到指定名称的入口点,则将项目文件 entry_point 作为脚本运行,使用“python”运行 .py 文件,并使用默认 shell(由环境变量 $SHELL 指定)运行 .sh 文件。

  • version – 对于基于 Git 的项目,可以是提交哈希或分支名称。

  • parameters – 入口点命令的参数(字典)。

  • docker_args – docker 命令的参数(字典)。

  • experiment_name – 启动运行的实验名称。

  • experiment_id – 启动运行的实验 ID。

  • backend – 运行的执行后端:MLflow 为“local”、“databricks”和“kubernetes”(实验性)后端提供内置支持。如果针对 Databricks 运行,则将针对以下方式确定的 Databricks 工作区运行:如果已设置形式为 databricks://profile 的 Databricks 跟踪 URI(例如,通过设置 MLFLOW_TRACKING_URI 环境变量),则将针对 <profile> 指定的工作区运行。否则,将针对默认 Databricks CLI 配置指定的工作区运行。

  • backend_config – 一个字典,或指向 JSON 文件的路径(必须以‘.json’结尾),该字典将作为配置传递给后端。实际内容因每个执行后端而异,并在 https://www.mlflow.org/docs/latest/projects.html 中进行了文档记录。

  • storage_dir – 仅当 backend 为“local”时使用。MLflow 将类型为 path 的参数所传递的分布式 URI 下载到 storage_dir 的子目录中。

  • synchronous – 是否在等待运行完成时阻塞。默认为 True。请注意,如果 synchronous 为 False 且 backend 为“local”,则此方法将返回,但当前进程在退出时会阻塞直到本地运行完成。如果当前进程被中断,则通过此方法启动的任何异步运行都将被终止。如果 synchronous 为 True 且运行失败,当前进程也将出错。

  • run_id – 注意:此参数由 MLflow 项目 API 内部使用,不应指定。如果指定,将使用该运行 ID 而不是创建新运行。

  • run_name – 为与项目执行关联的 MLflow 运行指定的名称。如果为 None,则 MLflow 运行名称将保持未设置。

  • env_manager

    指定一个环境管理器,为运行创建新环境,并在该环境中安装项目依赖项。支持以下值:

    • local: 使用本地环境

    • virtualenv: 使用 virtualenv(以及 pyenv 用于 Python 版本管理)

    • uv: 使用 uv

    • conda: 使用 conda

    如果未指定,MLflow 会通过检查项目目录中的文件来自动确定要使用的环境管理器。例如,如果存在 python_env.yaml,将使用 virtualenv。

  • build_image – 是构建项目的新 docker 镜像还是重用现有镜像。默认值:False(重用现有镜像)

  • docker_auth – 一个字典,表示用于向 Docker 注册表进行身份验证的信息。有关可用选项,请参阅 docker.client.DockerClient.login

返回

mlflow.projects.SubmittedRun,公开有关已启动运行的信息(例如,运行 ID)。

示例
import mlflow

project_uri = "https://github.com/mlflow/mlflow-example"
params = {"alpha": 0.5, "l1_ratio": 0.01}

# Run MLflow project and create a reproducible conda environment
# on a local host
mlflow.run(project_uri, parameters=params)
Output
...
...
Elasticnet model (alpha=0.500000, l1_ratio=0.010000):
RMSE: 0.788347345611717
MAE: 0.6155576449938276
R2: 0.19729662005412607
... mlflow.projects: === Run (ID '6a5109febe5e4a549461e149590d0a7c') succeeded ===