mlflow.projects

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

class mlflow.projects.SubmittedRun[source]

基类: object

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

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

注意

SubmittedRun 的子类必须暴露一个 run_id 成员,包含该次运行的 MLflow run 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 集群上远程运行项目。您也可以通过安装适当的第三方插件,将项目运行到其他目标。有关更多信息,请参见 Community Plugins

有关在链式工作流中使用此方法的信息,请参见 Building Multistep Workflows

Raises

mlflow.exceptions.ExecutionException – 不成功。

Parameters
  • 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 profile 指定的工作区上运行。

  • 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 project APIs 在内部使用,不应指定。如果指定,则会使用 run 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 了解可用选项。

Returns

mlflow.projects.SubmittedRun 暴露已启动运行的信息(例如 run ID)。

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