use of com.google.cloud.aiplatform.v1.MachineSpec in project java-aiplatform by googleapis.
the class DeployModelSample method deployModelSample.
static void deployModelSample(String project, String deployedModelDisplayName, String endpointId, String modelId) throws IOException, InterruptedException, ExecutionException, TimeoutException {
EndpointServiceSettings endpointServiceSettings = EndpointServiceSettings.newBuilder().setEndpoint("us-central1-aiplatform.googleapis.com:443").build();
// the "close" method on the client to safely clean up any remaining background resources.
try (EndpointServiceClient endpointServiceClient = EndpointServiceClient.create(endpointServiceSettings)) {
String location = "us-central1";
EndpointName endpointName = EndpointName.of(project, location, endpointId);
// key '0' assigns traffic for the newly deployed model
// Traffic percentage values must add up to 100
// Leave dictionary empty if endpoint should not accept any traffic
Map<String, Integer> trafficSplit = new HashMap<>();
trafficSplit.put("0", 100);
ModelName modelName = ModelName.of(project, location, modelId);
AutomaticResources automaticResourcesInput = AutomaticResources.newBuilder().setMinReplicaCount(1).setMaxReplicaCount(1).build();
DeployedModel deployedModelInput = DeployedModel.newBuilder().setModel(modelName.toString()).setDisplayName(deployedModelDisplayName).setAutomaticResources(automaticResourcesInput).build();
OperationFuture<DeployModelResponse, DeployModelOperationMetadata> deployModelResponseFuture = endpointServiceClient.deployModelAsync(endpointName, deployedModelInput, trafficSplit);
System.out.format("Operation name: %s\n", deployModelResponseFuture.getInitialFuture().get().getName());
System.out.println("Waiting for operation to finish...");
DeployModelResponse deployModelResponse = deployModelResponseFuture.get(20, TimeUnit.MINUTES);
System.out.println("Deploy Model Response");
DeployedModel deployedModel = deployModelResponse.getDeployedModel();
System.out.println("\tDeployed Model");
System.out.format("\t\tid: %s\n", deployedModel.getId());
System.out.format("\t\tmodel: %s\n", deployedModel.getModel());
System.out.format("\t\tDisplay Name: %s\n", deployedModel.getDisplayName());
System.out.format("\t\tCreate Time: %s\n", deployedModel.getCreateTime());
DedicatedResources dedicatedResources = deployedModel.getDedicatedResources();
System.out.println("\t\tDedicated Resources");
System.out.format("\t\t\tMin Replica Count: %s\n", dedicatedResources.getMinReplicaCount());
MachineSpec machineSpec = dedicatedResources.getMachineSpec();
System.out.println("\t\t\tMachine Spec");
System.out.format("\t\t\t\tMachine Type: %s\n", machineSpec.getMachineType());
System.out.format("\t\t\t\tAccelerator Type: %s\n", machineSpec.getAcceleratorType());
System.out.format("\t\t\t\tAccelerator Count: %s\n", machineSpec.getAcceleratorCount());
AutomaticResources automaticResources = deployedModel.getAutomaticResources();
System.out.println("\t\tAutomatic Resources");
System.out.format("\t\t\tMin Replica Count: %s\n", automaticResources.getMinReplicaCount());
System.out.format("\t\t\tMax Replica Count: %s\n", automaticResources.getMaxReplicaCount());
}
}
use of com.google.cloud.aiplatform.v1.MachineSpec in project java-aiplatform by googleapis.
the class CreateHyperparameterTuningJobPythonPackageSample method createHyperparameterTuningJobPythonPackageSample.
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";
// 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(// Use the same min/max as for decay
doubleValueSpec).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());
}
}
use of com.google.cloud.aiplatform.v1.MachineSpec in project java-aiplatform by googleapis.
the class CreateTrainingPipelineCustomJobSample method createTrainingPipelineCustomJobSample.
static void createTrainingPipelineCustomJobSample(String project, String displayName, String modelDisplayName, String containerImageUri, String baseOutputDirectoryPrefix) throws IOException {
PipelineServiceSettings settings = PipelineServiceSettings.newBuilder().setEndpoint("us-central1-aiplatform.googleapis.com:443").build();
String location = "us-central1";
// the "close" method on the client to safely clean up any remaining background resources.
try (PipelineServiceClient client = PipelineServiceClient.create(settings)) {
JsonObject jsonMachineSpec = new JsonObject();
jsonMachineSpec.addProperty("machineType", "n1-standard-4");
JsonArray jsonArgs = new JsonArray();
jsonArgs.add("--model_dir=$(AIP_MODEL_DIR)");
// A working docker image can be found at
// gs://cloud-samples-data/ai-platform/mnist_tfrecord/custom_job
JsonObject jsonContainerSpec = new JsonObject();
jsonContainerSpec.addProperty("imageUri", containerImageUri);
jsonContainerSpec.add("args", jsonArgs);
JsonObject jsonJsonWorkerPoolSpec0 = new JsonObject();
jsonJsonWorkerPoolSpec0.addProperty("replicaCount", 1);
jsonJsonWorkerPoolSpec0.add("machineSpec", jsonMachineSpec);
jsonJsonWorkerPoolSpec0.add("containerSpec", jsonContainerSpec);
JsonArray jsonWorkerPoolSpecs = new JsonArray();
jsonWorkerPoolSpecs.add(jsonJsonWorkerPoolSpec0);
JsonObject jsonBaseOutputDirectory = new JsonObject();
// The GCS location for outputs must be accessible by the project's AI Platform
// service account.
jsonBaseOutputDirectory.addProperty("output_uri_prefix", baseOutputDirectoryPrefix);
JsonObject jsonTrainingTaskInputs = new JsonObject();
jsonTrainingTaskInputs.add("workerPoolSpecs", jsonWorkerPoolSpecs);
jsonTrainingTaskInputs.add("baseOutputDirectory", jsonBaseOutputDirectory);
Value.Builder trainingTaskInputsBuilder = Value.newBuilder();
JsonFormat.parser().merge(jsonTrainingTaskInputs.toString(), trainingTaskInputsBuilder);
Value trainingTaskInputs = trainingTaskInputsBuilder.build();
String trainingTaskDefinition = "gs://google-cloud-aiplatform/schema/trainingjob/definition/custom_task_1.0.0.yaml";
String imageUri = "gcr.io/cloud-aiplatform/prediction/tf-cpu.1-15:latest";
ModelContainerSpec containerSpec = ModelContainerSpec.newBuilder().setImageUri(imageUri).build();
Model modelToUpload = Model.newBuilder().setDisplayName(modelDisplayName).setContainerSpec(containerSpec).build();
TrainingPipeline trainingPipeline = TrainingPipeline.newBuilder().setDisplayName(displayName).setTrainingTaskDefinition(trainingTaskDefinition).setTrainingTaskInputs(trainingTaskInputs).setModelToUpload(modelToUpload).build();
LocationName parent = LocationName.of(project, location);
TrainingPipeline response = client.createTrainingPipeline(parent, trainingPipeline);
System.out.format("response: %s\n", response);
System.out.format("Name: %s\n", response.getName());
}
}
use of com.google.cloud.aiplatform.v1.MachineSpec in project java-aiplatform by googleapis.
the class CreateBatchPredictionJobSample method createBatchPredictionJobSample.
static void createBatchPredictionJobSample(String project, String displayName, String model, String instancesFormat, String gcsSourceUri, String predictionsFormat, String gcsDestinationOutputUriPrefix) throws IOException {
JobServiceSettings settings = JobServiceSettings.newBuilder().setEndpoint("us-central1-aiplatform.googleapis.com:443").build();
String location = "us-central1";
// the "close" method on the client to safely clean up any remaining background resources.
try (JobServiceClient client = JobServiceClient.create(settings)) {
// Passing in an empty Value object for model parameters
Value modelParameters = ValueConverter.EMPTY_VALUE;
GcsSource gcsSource = GcsSource.newBuilder().addUris(gcsSourceUri).build();
BatchPredictionJob.InputConfig inputConfig = BatchPredictionJob.InputConfig.newBuilder().setInstancesFormat(instancesFormat).setGcsSource(gcsSource).build();
GcsDestination gcsDestination = GcsDestination.newBuilder().setOutputUriPrefix(gcsDestinationOutputUriPrefix).build();
BatchPredictionJob.OutputConfig outputConfig = BatchPredictionJob.OutputConfig.newBuilder().setPredictionsFormat(predictionsFormat).setGcsDestination(gcsDestination).build();
MachineSpec machineSpec = MachineSpec.newBuilder().setMachineType("n1-standard-2").setAcceleratorType(AcceleratorType.NVIDIA_TESLA_K80).setAcceleratorCount(1).build();
BatchDedicatedResources dedicatedResources = BatchDedicatedResources.newBuilder().setMachineSpec(machineSpec).setStartingReplicaCount(1).setMaxReplicaCount(1).build();
String modelName = ModelName.of(project, location, model).toString();
BatchPredictionJob batchPredictionJob = BatchPredictionJob.newBuilder().setDisplayName(displayName).setModel(modelName).setModelParameters(modelParameters).setInputConfig(inputConfig).setOutputConfig(outputConfig).setDedicatedResources(dedicatedResources).build();
LocationName parent = LocationName.of(project, location);
BatchPredictionJob response = client.createBatchPredictionJob(parent, batchPredictionJob);
System.out.format("response: %s\n", response);
System.out.format("\tName: %s\n", response.getName());
}
}
Aggregations