mlflow.projects

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

class mlflow.projects.SubmittedRun[源代码]

Bases: object

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

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

注意

SubmittedRun 的子类必须暴露一个包含运行的 MLflow 运行 ID 的 run_id 成员。

abstract cancel()[源代码]

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

abstract get_status()[源代码]

获取运行状态。

abstract property run_id
abstract wait()[源代码]

等待运行完成,如果运行成功则返回 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)[源代码]

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

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

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

引发

mlflow.exceptions.ExecutionException – 如果不成功。

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

  • 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 Run 的名称。如果为 None,则 MLflow Run 名称保持未设置。

  • 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 ===