如何使用Azure Machine Learning SDK V2为prepare_image作业添加标签?
解决方案
在Azure ML SDK V2中,prepare_image是环境构建时自动生成的系统作业,无法直接通过Environment对象或管道装饰器传递标签,需要通过查询并更新作业的方式为其添加标签,具体步骤如下:
步骤1:创建/更新环境并触发镜像构建
保留你原有的环境创建代码,触发镜像构建流程:
azureml_env = Environment( build=BuildContext( path=docker_context_path, ), name=self.experiment_name, tags=self.tags, ) azureml_env.validate() # 创建/更新环境,自动触发prepare_image作业 self.ml_client.environments.create_or_update(azureml_env)
步骤2:查询对应的prepare_image作业
通过作业名称特征、实验名称过滤,定位刚生成的prepare_image作业:
# 过滤条件:作业名称包含"prepare_image"、归属目标实验,按创建时间倒序取最新的一个 prepare_image_jobs = list(self.ml_client.jobs.list( experiment_name=self.experiment_name, job_name="prepare_image", order_by="created_at desc" )) # 提取目标作业 target_job = prepare_image_jobs[0] if prepare_image_jobs else None
步骤3:更新作业的标签
若找到目标作业,调用jobs.update方法添加自定义标签:
import time # 短暂等待作业生成(避免因异步延迟查询不到) time.sleep(30) if target_job: # 合并原有标签与自定义标签(可选,若需保留系统默认标签) updated_tags = {**target_job.tags, **self.tags} # 更新作业标签 self.ml_client.jobs.update( job_name=target_job.name, tags=updated_tags )
注意事项
- 可通过作业的
properties字段确认其关联的环境名称,确保更新的是目标环境对应的构建作业。 - 等待时间可根据环境构建的实际耗时调整,避免因作业未完成生成导致查询失败。
内容的提问来源于stack exchange,提问作者BeGreen
相关产品推荐
相关产品推荐

