Source code for google_cloud_pipeline_components.v1.hyperparameter_tuning_job.utils

# Copyright 2023 The Kubeflow Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Module for supporting Google Vertex AI Hyperparameter Tuning Job Op."""

from typing import Any, Dict, List

from google.cloud.aiplatform import hyperparameter_tuning
from google.cloud.aiplatform_v1.types import study


[docs]def serialize_parameters( parameters: Dict[str, hyperparameter_tuning._ParameterSpec] ) -> List[Dict[str, Any]]: # fmt: off """Utility for converting a hyperparameter tuning [ParameterSpec](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/StudySpec#ParameterSpec) into a list of dictionaries. Args: parameters (Dict[str, hyperparameter_tuning._ParameterSpec]): Dictionary of parameter ids to subclasses of [_ParameterSpec](https://github.com/googleapis/python-aiplatform/blob/1fda4172baaf200414d95e7217bfef0e500cc16a/google/cloud/aiplatform/hyperparameter_tuning.py#L51). Supported subclasses include: `DoubleParameterSpec`, `IntegerParameterSpec`, `CategoricalParameterSpace`, `DiscreteParameterSpec`. Example: from google.cloud.aiplatform import hyperparameter_tuning as hpt parameters = { 'decay': hpt.DoubleParameterSpec(min=1e-7, max=1, scale='linear'), 'learning_rate': hpt.DoubleParameterSpec(min=1e-7, max=1, scale='linear'), 'batch_size': hpt.DiscreteParamterSpec( values=[4, 8, 16, 32, 64, 128], scale='linear') } Returns: List of `ParameterSpec` dictionaries. """ # fmt: on # the to_dict function is used here instead of the to_json function for compatibility with GAPIC return [ study.StudySpec.ParameterSpec.to_dict( parameter._to_parameter_spec(parameter_id=parameter_id) ) for parameter_id, parameter in parameters.items() ]
[docs]def serialize_metrics(metric_spec: Dict[str, str]) -> List[Dict[str, Any]]: # fmt: off """Utility for converting a hyperparameter tuning [MetricSpec](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/StudySpec#metricspec) into a list of dictionaries. Args: metric_spec (Dict[str, str]): Dictionary representing metrics to optimize. The dictionary key is the metric_id, which is reported by your training job, and the dictionary value is the optimization goal of the metric (`'minimize'` or `'maximize'`). Example: metrics = {'loss': 'minimize', 'accuracy': 'maximize'} Returns: List of `MetricSpec` dictionaries. """ # fmt: on return [ study.StudySpec.MetricSpec.to_dict( study.StudySpec.MetricSpec( {'metric_id': metric_id, 'goal': goal.upper()} ) ) for metric_id, goal in metric_spec.items() ]