Search in sources :

Example 6 with MachineSpec

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());
    }
}
Also used : ModelName(com.google.cloud.aiplatform.v1.ModelName) HashMap(java.util.HashMap) DedicatedResources(com.google.cloud.aiplatform.v1.DedicatedResources) MachineSpec(com.google.cloud.aiplatform.v1.MachineSpec) DeployedModel(com.google.cloud.aiplatform.v1.DeployedModel) DeployModelResponse(com.google.cloud.aiplatform.v1.DeployModelResponse) DeployModelOperationMetadata(com.google.cloud.aiplatform.v1.DeployModelOperationMetadata) EndpointName(com.google.cloud.aiplatform.v1.EndpointName) AutomaticResources(com.google.cloud.aiplatform.v1.AutomaticResources) EndpointServiceClient(com.google.cloud.aiplatform.v1.EndpointServiceClient) EndpointServiceSettings(com.google.cloud.aiplatform.v1.EndpointServiceSettings)

Example 7 with MachineSpec

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());
    }
}
Also used : JobServiceSettings(com.google.cloud.aiplatform.v1.JobServiceSettings) StudySpec(com.google.cloud.aiplatform.v1.StudySpec) DoubleValueSpec(com.google.cloud.aiplatform.v1.StudySpec.ParameterSpec.DoubleValueSpec) ParameterSpec(com.google.cloud.aiplatform.v1.StudySpec.ParameterSpec) ConditionalParameterSpec(com.google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ConditionalParameterSpec) MetricSpec(com.google.cloud.aiplatform.v1.StudySpec.MetricSpec) JobServiceClient(com.google.cloud.aiplatform.v1.JobServiceClient) CustomJobSpec(com.google.cloud.aiplatform.v1.CustomJobSpec) MachineSpec(com.google.cloud.aiplatform.v1.MachineSpec) ConditionalParameterSpec(com.google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ConditionalParameterSpec) PythonPackageSpec(com.google.cloud.aiplatform.v1.PythonPackageSpec) LocationName(com.google.cloud.aiplatform.v1.LocationName) DiscreteValueCondition(com.google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ConditionalParameterSpec.DiscreteValueCondition) HyperparameterTuningJob(com.google.cloud.aiplatform.v1.HyperparameterTuningJob) DiscreteValueSpec(com.google.cloud.aiplatform.v1.StudySpec.ParameterSpec.DiscreteValueSpec) WorkerPoolSpec(com.google.cloud.aiplatform.v1.WorkerPoolSpec)

Example 8 with MachineSpec

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());
    }
}
Also used : JsonArray(com.google.gson.JsonArray) ModelContainerSpec(com.google.cloud.aiplatform.v1.ModelContainerSpec) TrainingPipeline(com.google.cloud.aiplatform.v1.TrainingPipeline) Value(com.google.protobuf.Value) Model(com.google.cloud.aiplatform.v1.Model) PipelineServiceSettings(com.google.cloud.aiplatform.v1.PipelineServiceSettings) JsonObject(com.google.gson.JsonObject) PipelineServiceClient(com.google.cloud.aiplatform.v1.PipelineServiceClient) LocationName(com.google.cloud.aiplatform.v1.LocationName)

Example 9 with MachineSpec

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());
    }
}
Also used : JobServiceSettings(com.google.cloud.aiplatform.v1.JobServiceSettings) BatchDedicatedResources(com.google.cloud.aiplatform.v1.BatchDedicatedResources) GcsSource(com.google.cloud.aiplatform.v1.GcsSource) BatchPredictionJob(com.google.cloud.aiplatform.v1.BatchPredictionJob) Value(com.google.protobuf.Value) JobServiceClient(com.google.cloud.aiplatform.v1.JobServiceClient) MachineSpec(com.google.cloud.aiplatform.v1.MachineSpec) GcsDestination(com.google.cloud.aiplatform.v1.GcsDestination) LocationName(com.google.cloud.aiplatform.v1.LocationName)

Aggregations

LocationName (com.google.cloud.aiplatform.v1.LocationName)7 MachineSpec (com.google.cloud.aiplatform.v1.MachineSpec)7 JobServiceClient (com.google.cloud.aiplatform.v1.JobServiceClient)5 JobServiceSettings (com.google.cloud.aiplatform.v1.JobServiceSettings)5 Value (com.google.protobuf.Value)5 GcsDestination (com.google.cloud.aiplatform.v1.GcsDestination)4 BatchDedicatedResources (com.google.cloud.aiplatform.v1.BatchDedicatedResources)3 BatchPredictionJob (com.google.cloud.aiplatform.v1.BatchPredictionJob)3 GcsSource (com.google.cloud.aiplatform.v1.GcsSource)3 ModelName (com.google.cloud.aiplatform.v1.ModelName)3 InputConfig (com.google.cloud.aiplatform.v1.BatchPredictionJob.InputConfig)2 OutputConfig (com.google.cloud.aiplatform.v1.BatchPredictionJob.OutputConfig)2 OutputInfo (com.google.cloud.aiplatform.v1.BatchPredictionJob.OutputInfo)2 BigQueryDestination (com.google.cloud.aiplatform.v1.BigQueryDestination)2 BigQuerySource (com.google.cloud.aiplatform.v1.BigQuerySource)2 CompletionStats (com.google.cloud.aiplatform.v1.CompletionStats)2 CustomJobSpec (com.google.cloud.aiplatform.v1.CustomJobSpec)2 DedicatedResources (com.google.cloud.aiplatform.v1.DedicatedResources)2 DeployModelOperationMetadata (com.google.cloud.aiplatform.v1.DeployModelOperationMetadata)2 DeployModelResponse (com.google.cloud.aiplatform.v1.DeployModelResponse)2