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

Azure ML SDK V1转V2:含Sweep Job的流水线步骤编排报错问题

Azure ML SDK V2 流水线Sweep步骤 TypeError 解决思路
  • 排查step.update_link调用逻辑:Sweep Job在V2中属于嵌套Job类型,并非普通Command Component步骤,update_link方法默认仅适配普通组件步骤,对嵌套Sweep Job存在兼容问题。检查你扩展的Step类中update_link的实现逻辑,确认是否误将Sweep Job的_AttrDict类型属性当作可调用对象处理。

  • 重构Sweep步骤构建方式:放弃通过扩展Step类封装Sweep逻辑,直接使用V2原生API实现:

    1. 先定义基础训练Command Component
    2. 用SweepJob包裹该组件并配置超参搜索规则
    3. 将Sweep Job直接作为流水线节点添加
      示例代码:
    # 定义基础训练组件
    train_component = command(
        name="train_component",
        display_name="Train Model",
        command="python train.py --lr ${{inputs.lr}}",
        inputs={"lr": Input(type=AssetTypes.NUMBER)},
        environment=Environment.get(workspace, name="my-training-env"),
        code="./src"
    )
    
    # 创建Sweep Job
    sweep_job = SweepJob(
        name="train-sweep",
        display_name="Hyperparameter Sweep",
        sampling_algorithm=RandomParameterSampling(
            parameter_space={"lr": Uniform(min_value=0.001, max_value=0.1)}
        ),
        job=train_component(lr=0.01),
        objective=Objective(primary_metric="accuracy", goal=Goal.MAXIMIZE),
        limits=SweepJobLimits(max_total_trials=10)
    )
    
    # 组装流水线
    pipeline = Pipeline(jobs={"sweep_train": sweep_job})
    
  • 修复自定义Step类的分支处理:若坚持使用自定义Step类,需在build方法中区分普通步骤与Sweep步骤:

    def build(self, context):
        if self.is_sweep:
            # 单独构建并返回Sweep Job对象,跳过普通步骤的update_link逻辑
            return self._construct_sweep_job(context)
        else:
            # 执行原有普通步骤的构建流程
            return super().build(context)
    
  • 校验sweep参数配置:确保sweep_properties中的参数未被错误封装为_AttrDict,需直接实例化V2原生类(如RandomParameterSampling、Objective)而非传递原始字典。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:01:16