|
20 | 20 |
|
21 | 21 | import proto
|
22 | 22 |
|
23 |
| -from google.cloud.aiplatform.compat.types import study as gca_study_compat |
| 23 | +from google.cloud.aiplatform.compat.types import ( |
| 24 | + study_v1beta1 as gca_study_compat_v1beta1, |
| 25 | + study as gca_study_compat, |
| 26 | +) |
24 | 27 |
|
25 | 28 | SEARCH_ALGORITHM_TO_PROTO_VALUE = {
|
26 | 29 | "random": gca_study_compat.StudySpec.Algorithm.RANDOM_SEARCH,
|
@@ -91,6 +94,46 @@ def _proto_parameter_value_spec(self) -> proto.Message:
|
91 | 94 | )
|
92 | 95 | return proto_parameter_value_spec
|
93 | 96 |
|
| 97 | + @property |
| 98 | + def _proto_parameter_value_spec_v1beta1(self) -> proto.Message: |
| 99 | + """Converts this parameter to it's parameter value representation.""" |
| 100 | + if isinstance( |
| 101 | + self._proto_parameter_value_class(), |
| 102 | + gca_study_compat.StudySpec.ParameterSpec.DoubleValueSpec, |
| 103 | + ): |
| 104 | + proto_parameter_value_spec = ( |
| 105 | + gca_study_compat_v1beta1.StudySpec.ParameterSpec.DoubleValueSpec() |
| 106 | + ) |
| 107 | + elif isinstance( |
| 108 | + self._proto_parameter_value_class(), |
| 109 | + gca_study_compat.StudySpec.ParameterSpec.IntegerValueSpec, |
| 110 | + ): |
| 111 | + proto_parameter_value_spec = ( |
| 112 | + gca_study_compat_v1beta1.StudySpec.ParameterSpec.IntegerValueSpec() |
| 113 | + ) |
| 114 | + elif isinstance( |
| 115 | + self._proto_parameter_value_class(), |
| 116 | + gca_study_compat.StudySpec.ParameterSpec.CategoricalValueSpec, |
| 117 | + ): |
| 118 | + proto_parameter_value_spec = ( |
| 119 | + gca_study_compat_v1beta1.StudySpec.ParameterSpec.CategoricalValueSpec() |
| 120 | + ) |
| 121 | + elif isinstance( |
| 122 | + self._proto_parameter_value_class(), |
| 123 | + gca_study_compat.StudySpec.ParameterSpec.DiscreteValueSpec, |
| 124 | + ): |
| 125 | + proto_parameter_value_spec = ( |
| 126 | + gca_study_compat_v1beta1.StudySpec.ParameterSpec.DiscreteValueSpec() |
| 127 | + ) |
| 128 | + else: |
| 129 | + proto_parameter_value_spec = self._proto_parameter_value_class() |
| 130 | + |
| 131 | + for self_attr_key, proto_attr_key in self._parameter_value_map: |
| 132 | + setattr( |
| 133 | + proto_parameter_value_spec, proto_attr_key, getattr(self, self_attr_key) |
| 134 | + ) |
| 135 | + return proto_parameter_value_spec |
| 136 | + |
94 | 137 | def _to_parameter_spec(
|
95 | 138 | self, parameter_id: str
|
96 | 139 | ) -> gca_study_compat.StudySpec.ParameterSpec:
|
@@ -129,6 +172,46 @@ def _to_parameter_spec(
|
129 | 172 |
|
130 | 173 | return parameter_spec
|
131 | 174 |
|
| 175 | + def _to_parameter_spec_v1beta1( |
| 176 | + self, parameter_id: str |
| 177 | + ) -> gca_study_compat_v1beta1.StudySpec.ParameterSpec: |
| 178 | + """Converts this parameter to ParameterSpec.""" |
| 179 | + conditions = [] |
| 180 | + if self.conditional_parameter_spec is not None: |
| 181 | + for (conditional_param_id, spec) in self.conditional_parameter_spec.items(): |
| 182 | + condition = ( |
| 183 | + gca_study_compat_v1beta1.StudySpec.ParameterSpec.ConditionalParameterSpec() |
| 184 | + ) |
| 185 | + if self._parameter_spec_value_key == _INT_VALUE_SPEC: |
| 186 | + condition.parent_int_values = gca_study_compat_v1beta1.StudySpec.ParameterSpec.ConditionalParameterSpec.IntValueCondition( |
| 187 | + values=spec.parent_values |
| 188 | + ) |
| 189 | + elif self._parameter_spec_value_key == _CATEGORICAL_VALUE_SPEC: |
| 190 | + condition.parent_categorical_values = gca_study_compat_v1beta1.StudySpec.ParameterSpec.ConditionalParameterSpec.CategoricalValueCondition( |
| 191 | + values=spec.parent_values |
| 192 | + ) |
| 193 | + elif self._parameter_spec_value_key == _DISCRETE_VALUE_SPEC: |
| 194 | + condition.parent_discrete_values = gca_study_compat_v1beta1.StudySpec.ParameterSpec.ConditionalParameterSpec.DiscreteValueCondition( |
| 195 | + values=spec.parent_values |
| 196 | + ) |
| 197 | + condition.parameter_spec = spec._to_parameter_spec_v1beta1( |
| 198 | + conditional_param_id |
| 199 | + ) |
| 200 | + conditions.append(condition) |
| 201 | + parameter_spec = gca_study_compat_v1beta1.StudySpec.ParameterSpec( |
| 202 | + parameter_id=parameter_id, |
| 203 | + scale_type=_SCALE_TYPE_MAP.get(getattr(self, "scale", "unspecified")), |
| 204 | + conditional_parameter_specs=conditions, |
| 205 | + ) |
| 206 | + |
| 207 | + setattr( |
| 208 | + parameter_spec, |
| 209 | + self._parameter_spec_value_key, |
| 210 | + self._proto_parameter_value_spec_v1beta1, |
| 211 | + ) |
| 212 | + |
| 213 | + return parameter_spec |
| 214 | + |
132 | 215 |
|
133 | 216 | class DoubleParameterSpec(_ParameterSpec):
|
134 | 217 |
|
|
0 commit comments