mlflow.projects
mlflow.projects 模块提供了一个用于在本地或远程运行 MLflow 项目的 API。
- class mlflow.projects.SubmittedRun[source]
Bases:
objectMLflow 项目运行(例如,运行入口点命令的子进程或 Databricks 作业运行)的包装器,并公开用于等待和取消运行的方法。此类定义了 MLflow 项目运行器用于管理在不同环境中启动的运行的生命周期的接口(例如,在本地或 Databricks 上启动的运行)。
SubmittedRun不是线程安全的。也就是说,来自多个线程的对 wait() / cancel() 的并发调用可能会意外杀死与运行无关的资源(例如,本地进程)。注意
SubmittedRun的子类必须公开一个名为run_id的成员,其中包含运行的 MLflow 运行 ID。- abstract cancel()[source]
取消运行(中断命令子进程、取消 Databricks 运行等)并等待其终止。运行取消后,MLflow 运行状态可能不会正确设置。
- abstract get_status()[source]
获取运行的状态。
- 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 集群上远程运行项目。您还可以通过安装适当的第三方插件来运行针对其他目标的项目。有关更多信息,请参阅 社区插件。
有关在链式工作流中使用此方法的更多信息,请参阅 构建多步工作流。
- 引发
- 参数
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)