You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure ML Python SDK v2中获取实验关联的所有作业?

在Azure ML Python SDK v2中高效获取指定实验的所有作业列表

我需要获取工作区中属于某个实验的所有作业列表。使用SDK v1时,通过exp.get_runs()就能快速实现,耗时不到1秒,但在v2里用列表推导式过滤ml_client.jobs.list()的结果,耗时约7分钟,效率极低。请问在v2里有没有高效实现这个需求的最佳方法?

v1实现代码(azureml-core 1.49.0)

import azureml.core
from azureml.core import Workspace, Experiment

ws = Workspace.from_config()
exp = Experiment(workspace=ws, name="my_experiment_name")
runs = exp.get_runs()

我当前的v2近似实现(azure-ai-ml 1.5.0)

from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential, InteractiveBrowserCredential

ml_client = MLClient(
        credential= DefaultAzureCredential(),
        subscription_id= "my_subscription_id",
        resource_group_name= "my_resource_group_name",
        workspace_name= "my_workspace_name",
    )

runs = [run for run in ml_client.jobs.list() if run.experiment_name == "my_experiment_name"]

最佳解决方案

在Azure ML Python SDK v2中,你可以直接使用ml_client.jobs.list()的experiment_name参数进行服务端过滤,这会比客户端本地过滤高效得多,无需在本地遍历所有作业再筛选。

优化后的v2代码

from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential

ml_client = MLClient(
    credential=DefaultAzureCredential(),
    subscription_id="my_subscription_id",
    resource_group_name="my_resource_group_name",
    workspace_name="my_workspace_name",
)

# 直接通过experiment_name参数过滤,服务端返回指定实验的作业
runs = list(ml_client.jobs.list(experiment_name="my_experiment_name"))

说明

  • 该方法利用服务端筛选,避免了本地拉取所有作业数据再过滤的开销,速度能和v1的exp.get_runs()相当。
  • 确保你的azure-ai-ml版本至少为1.5.0(你当前版本满足),该参数在较新版本的SDK中已支持。

内容的提问来源于stack exchange,提问作者tamboles98

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 00:03:13