如何在Azure机器学习中按特定子属性筛选PipelineRun
筛选Azure ML PipelineRun中parameters子键c值为def的实例
因为azureml.parameters存储的是字符串格式的Python字典,没法直接用一级属性的筛选方式,得先把字符串解析成字典再判断。具体操作步骤和代码如下:
- 先获取目标Experiment下所有的
PipelineRun实例 - 遍历每个运行实例,提取
azureml.parameters对应的字符串 - 用安全的方式把字符串解析为Python字典
- 检查字典中是否存在子键
c且值等于def,符合条件的就保留
示例代码:
import ast # 获取当前Experiment下所有PipelineRun all_pipeline_runs = experiment.get_runs(type="azureml.PipelineRun") # 初始化列表存储符合条件的运行 target_runs = [] for run in all_pipeline_runs: # 从运行属性中取出parameters的字符串 params_str = run.properties.get("azureml.parameters", "{}") try: # 把字符串解析为字典(用ast.literal_eval比eval更安全) params_dict = ast.literal_eval(params_str) # 判断子键c的值是否为'def' if params_dict.get("c") == "def": target_runs.append(run) except (SyntaxError, ValueError): # 跳过那些parameters格式错误的运行 continue # target_runs就是你要找的符合条件的PipelineRun实例
注意点:
- 用
ast.literal_eval解析字符串字典,避免eval带来的安全风险 - 增加异常处理,防止部分运行的
parameters格式不规范导致程序中断 experiment.get_runs()返回的是迭代器,直接循环即可,不需要提前转成列表(如果需要反复遍历可以转成list)
内容的提问来源于stack exchange,提问作者BeGreen
相关产品推荐
相关产品推荐

