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

如何为逻辑回归超参调优配置ConditionalParameterSpec关联penalty与solver

解决方案:配置Google Cloud AI Platform超参调优的条件参数

要实现当penalty为l2时固定solver为sag,penalty为l1时固定solver为saga,需要使用ConditionalParameterSpec定义参数间的依赖关系。以下是修改后的完整代码:

from google.cloud.aiplatform import hyperparameter_tuning as hpt
import google.cloud.aiplatform as aiplatform

worker_pool_specs = [
    {
        "machine_spec": {
            "machine_type": "n1-standard-4",
            "accelerator_type": "NVIDIA_TESLA_K80",
            "accelerator_count": 1,
        },
        "replica_count": 1,
        "container_spec": {
            "image_uri": container_image_uri,
            "command": [],
            "args": [],
        },
    }
]

custom_job = aiplatform.CustomJob(
    display_name='my_job',
    worker_pool_specs=worker_pool_specs,
    labels={'my_key': 'my_value'},
)

hp_job = aiplatform.HyperparameterTuningJob(
    display_name='hp-test',
    custom_job=custom_job,  # 修正原代码中的变量名错误
    metric_spec={
        'loss': 'minimize',
    },
    parameter_spec={
        'C': hpt.DoubleParameterSpec(min=0.001, max=0.1, scale='log'),
        'max_iter': hpt.IntegerParameterSpec(min=4, max=128, scale='linear'),
        'penalty': hpt.CategoricalParameterSpec(values=['l1', 'l2']),
        # 用ConditionalParameterSpec定义solver的条件依赖
        'solver': hpt.ConditionalParameterSpec(
            conditions=[
                # penalty为l2时,solver固定为sag
                hpt.ConditionSpec(
                    parent_parameter='penalty',
                    parent_values=['l2'],
                    parameter_spec={
                        'solver': hpt.CategoricalParameterSpec(values=['sag'])
                    }
                ),
                # penalty为l1时,solver固定为saga
                hpt.ConditionSpec(
                    parent_parameter='penalty',
                    parent_values=['l1'],
                    parameter_spec={
                        'solver': hpt.CategoricalParameterSpec(values=['saga'])
                    }
                )
            ],
            # 默认参数(因penalty仅含l1/l2,此配置可选)
            default_parameter_spec={
                'solver': hpt.CategoricalParameterSpec(values=['sag'])
            }
        )
    },
    max_trial_count=128,
    parallel_trial_count=8,
    labels={'my_key': 'my_value'},
)

hp_job.run()

print(hp_job.trials)

关键修改说明:

  • 移除原代码中独立的solver参数定义,替换为ConditionalParameterSpec
  • 通过两个ConditionSpec分别绑定参数关系:
    • 当penalty取l2时,solver仅允许sag这一个值
    • 当penalty取l1时,solver仅允许saga这一个值
  • 修正原代码中custom_job=job的变量名错误,改为custom_job=custom_job

配置完成后,超参调优作业会自动根据penalty的取值匹配对应的solver值,不会出现参数不匹配的组合。

内容的提问来源于stack exchange,提问作者Revanth P S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 01:37:25