使用 create_hyperparameter_tuning_job 方法为 python 软件包创建超参数调节作业。
深入探索
如需查看包含此代码示例的详细文档,请参阅以下内容:
代码示例
Java
在尝试此示例之前,请按照《Vertex AI 快速入门:使用客户端库》中的 Java 设置说明执行操作。如需了解详情,请参阅 Vertex AI Java API 参考文档。
如需向 Vertex AI 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
import com.google.cloud.aiplatform.v1.AcceleratorType;
import com.google.cloud.aiplatform.v1.CustomJobSpec;
import com.google.cloud.aiplatform.v1.HyperparameterTuningJob;
import com.google.cloud.aiplatform.v1.JobServiceClient;
import com.google.cloud.aiplatform.v1.JobServiceSettings;
import com.google.cloud.aiplatform.v1.LocationName;
import com.google.cloud.aiplatform.v1.MachineSpec;
import com.google.cloud.aiplatform.v1.PythonPackageSpec;
import com.google.cloud.aiplatform.v1.StudySpec;
import com.google.cloud.aiplatform.v1.StudySpec.MetricSpec;
import com.google.cloud.aiplatform.v1.StudySpec.MetricSpec.GoalType;
import com.google.cloud.aiplatform.v1.StudySpec.ParameterSpec;
import com.google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ConditionalParameterSpec;
import com.google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ConditionalParameterSpec.DiscreteValueCondition;
import com.google.cloud.aiplatform.v1.StudySpec.ParameterSpec.DiscreteValueSpec;
import com.google.cloud.aiplatform.v1.StudySpec.ParameterSpec.DoubleValueSpec;
import com.google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ScaleType;
import com.google.cloud.aiplatform.v1.WorkerPoolSpec;
import java.io.IOException;
import java.util.Arrays;
public class CreateHyperparameterTuningJobPythonPackageSample {
public static void main(String[] args) throws IOException {
// TODO(developer): Replace these variables before running the sample.
String project = "PROJECT";
String displayName = "DISPLAY_NAME";
String executorImageUri = "EXECUTOR_IMAGE_URI";
String packageUri = "PACKAGE_URI";
String pythonModule = "PYTHON_MODULE";
createHyperparameterTuningJobPythonPackageSample(
project, displayName, executorImageUri, packageUri, pythonModule);
}
static void createHyperparameterTuningJobPythonPackageSample(
String project,
String displayName,
String executorImageUri,
String packageUri,
String pythonModule)
throws IOException {
JobServiceSettings settings =
JobServiceSettings.newBuilder()
.setEndpoint("us-central1-aiplatform.googleapis.com:443")
.build();
String location = "us-central1";
// Initialize client that will be used to send requests. This client only needs to be created
// once, and can be reused for multiple requests. After completing all of your requests, call
// the "close" method on the client to safely clean up any remaining background resources.
try (JobServiceClient client = JobServiceClient.create(settings)) {
// study spec
MetricSpec metric =
MetricSpec.newBuilder().setMetricId("val_rmse").setGoal(GoalType.MINIMIZE).build();
// decay
DoubleValueSpec doubleValueSpec =
DoubleValueSpec.newBuilder().setMinValue(1e-07).setMaxValue(1).build();
ParameterSpec parameterDecaySpec =
ParameterSpec.newBuilder()
.setParameterId("decay")
.setDoubleValueSpec(doubleValueSpec)
.setScaleType(ScaleType.UNIT_LINEAR_SCALE)
.build();
Double[] decayValues = {32.0, 64.0};
DiscreteValueCondition discreteValueDecay =
DiscreteValueCondition.newBuilder().addAllValues(Arrays.asList(decayValues)).build();
ConditionalParameterSpec conditionalParameterDecay =
ConditionalParameterSpec.newBuilder()
.setParameterSpec(parameterDecaySpec)
.setParentDiscreteValues(discreteValueDecay)
.build();
// learning rate
ParameterSpec parameterLearningSpec =
ParameterSpec.newBuilder()
.setParameterId("learning_rate")
.setDoubleValueSpec(doubleValueSpec) // Use the same min/max as for decay
.setScaleType(ScaleType.UNIT_LINEAR_SCALE)
.build();
Double[] learningRateValues = {4.0, 8.0, 16.0};
DiscreteValueCondition discreteValueLearning =
DiscreteValueCondition.newBuilder()
.addAllValues(Arrays.asList(learningRateValues))
.build();
ConditionalParameterSpec conditionalParameterLearning =
ConditionalParameterSpec.newBuilder()
.setParameterSpec(parameterLearningSpec)
.setParentDiscreteValues(discreteValueLearning)
.build();
// batch size
Double[] batchSizeValues = {4.0, 8.0, 16.0, 32.0, 64.0, 128.0};
DiscreteValueSpec discreteValueSpec =
DiscreteValueSpec.newBuilder().addAllValues(Arrays.asList(batchSizeValues)).build();
ParameterSpec parameter =
ParameterSpec.newBuilder()
.setParameterId("batch_size")
.setDiscreteValueSpec(discreteValueSpec)
.setScaleType(ScaleType.UNIT_LINEAR_SCALE)
.addConditionalParameterSpecs(conditionalParameterDecay)
.addConditionalParameterSpecs(conditionalParameterLearning)
.build();
// trial_job_spec
MachineSpec machineSpec =
MachineSpec.newBuilder()
.setMachineType("n1-standard-4")
.setAcceleratorType(AcceleratorType.NVIDIA_TESLA_K80)
.setAcceleratorCount(1)
.build();
PythonPackageSpec pythonPackageSpec =
PythonPackageSpec.newBuilder()
.setExecutorImageUri(executorImageUri)
.addPackageUris(packageUri)
.setPythonModule(pythonModule)
.build();
WorkerPoolSpec workerPoolSpec =
WorkerPoolSpec.newBuilder()
.setMachineSpec(machineSpec)
.setReplicaCount(1)
.setPythonPackageSpec(pythonPackageSpec)
.build();
StudySpec studySpec =
StudySpec.newBuilder()
.addMetrics(metric)
.addParameters(parameter)
.setAlgorithm(StudySpec.Algorithm.RANDOM_SEARCH)
.build();
CustomJobSpec trialJobSpec =
CustomJobSpec.newBuilder().addWorkerPoolSpecs(workerPoolSpec).build();
// hyperparameter_tuning_job
HyperparameterTuningJob hyperparameterTuningJob =
HyperparameterTuningJob.newBuilder()
.setDisplayName(displayName)
.setMaxTrialCount(4)
.setParallelTrialCount(2)
.setStudySpec(studySpec)
.setTrialJobSpec(trialJobSpec)
.build();
LocationName parent = LocationName.of(project, location);
HyperparameterTuningJob response =
client.createHyperparameterTuningJob(parent, hyperparameterTuningJob);
System.out.format("response: %s\n", response);
System.out.format("Name: %s\n", response.getName());
}
}
}
Python
在尝试此示例之前,请按照《Vertex AI 快速入门:使用客户端库》中的 Python 设置说明执行操作。如需了解详情,请参阅 Vertex AI Python API 参考文档。
如需向 Vertex AI 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
from google.cloud import aiplatform
def create_hyperparameter_tuning_job_python_package_sample(
project: str,
display_name: str,
executor_image_uri: str,
package_uri: str,
python_module: str,
location: str = "us-central1",
api_endpoint: str = "us-central1-aiplatform.googleapis.com",
):
# The AI Platform services require regional API endpoints.
client_options = {"api_endpoint": api_endpoint}
# Initialize client that will be used to create and send requests.
# This client only needs to be created once, and can be reused for multiple requests.
client = aiplatform.gapic.JobServiceClient(client_options=client_options)
# study_spec
metric = {
"metric_id": "val_rmse",
"goal": aiplatform.gapic.StudySpec.MetricSpec.GoalType.MINIMIZE,
}
conditional_parameter_decay = {
"parameter_spec": {
"parameter_id": "decay",
"double_value_spec": {"min_value": 1e-07, "max_value": 1},
"scale_type": aiplatform.gapic.StudySpec.ParameterSpec.ScaleType.UNIT_LINEAR_SCALE,
},
"parent_discrete_values": {"values": [32, 64]},
}
conditional_parameter_learning_rate = {
"parameter_spec": {
"parameter_id": "learning_rate",
"double_value_spec": {"min_value": 1e-07, "max_value": 1},
"scale_type": aiplatform.gapic.StudySpec.ParameterSpec.ScaleType.UNIT_LINEAR_SCALE,
},
"parent_discrete_values": {"values": [4, 8, 16]},
}
parameter = {
"parameter_id": "batch_size",
"discrete_value_spec": {"values": [4, 8, 16, 32, 64, 128]},
"scale_type": aiplatform.gapic.StudySpec.ParameterSpec.ScaleType.UNIT_LINEAR_SCALE,
"conditional_parameter_specs": [
conditional_parameter_decay,
conditional_parameter_learning_rate,
],
}
# trial_job_spec
machine_spec = {
"machine_type": "n1-standard-4",
"accelerator_type": aiplatform.gapic.AcceleratorType.NVIDIA_TESLA_K80,
"accelerator_count": 1,
}
worker_pool_spec = {
"machine_spec": machine_spec,
"replica_count": 1,
"python_package_spec": {
"executor_image_uri": executor_image_uri,
"package_uris": [package_uri],
"python_module": python_module,
"args": [],
},
}
# hyperparameter_tuning_job
hyperparameter_tuning_job = {
"display_name": display_name,
"max_trial_count": 4,
"parallel_trial_count": 2,
"study_spec": {
"metrics": [metric],
"parameters": [parameter],
"algorithm": aiplatform.gapic.StudySpec.Algorithm.RANDOM_SEARCH,
},
"trial_job_spec": {"worker_pool_specs": [worker_pool_spec]},
}
parent = f"projects/{project}/locations/{location}"
response = client.create_hyperparameter_tuning_job(
parent=parent, hyperparameter_tuning_job=hyperparameter_tuning_job
)
print("response:", response)
后续步骤
如需搜索和过滤其他 Google Cloud 产品的代码示例,请参阅 Google Cloud 示例浏览器。