Skip to content

Commit ac542f2

Browse files
authored
samples: ucaip samples batch 6 of 6 (#17)
1 parent 69d7c85 commit ac542f2

25 files changed

+2566
-2
lines changed

aiplatform/snippets/pom.xml

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,24 @@
2222
<maven.compiler.source>1.8</maven.compiler.source>
2323
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
2424
</properties>
25-
26-
2725
<!-- [START aiplatform_install_with_bom] -->
2826
<dependencies>
2927
<dependency>
3028
<groupId>com.google.cloud</groupId>
3129
<artifactId>google-cloud-aiplatform</artifactId>
3230
<version>0.0.1-SNAPSHOT</version>
3331
</dependency>
32+
<!-- [END aiplatform_install_with_bom] -->
33+
<dependency>
34+
<groupId>com.google.protobuf</groupId>
35+
<artifactId>protobuf-java-util</artifactId>
36+
<version>4.0.0-rc-1</version>
37+
</dependency>
38+
<dependency>
39+
<groupId>com.google.cloud</groupId>
40+
<artifactId>google-cloud-storage</artifactId>
41+
<version>1.111.0</version>
42+
</dependency>
3443
<dependency>
3544
<groupId>com.google.cloud</groupId>
3645
<artifactId>google-cloud-storage</artifactId>
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
/*
2+
* Copyright 2020 Google LLC
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package aiplatform;
18+
19+
// [START aiplatform_create_dataset_text_sample]
20+
21+
import com.google.api.gax.longrunning.OperationFuture;
22+
import com.google.cloud.aiplatform.v1beta1.CreateDatasetOperationMetadata;
23+
import com.google.cloud.aiplatform.v1beta1.Dataset;
24+
import com.google.cloud.aiplatform.v1beta1.DatasetServiceClient;
25+
import com.google.cloud.aiplatform.v1beta1.DatasetServiceSettings;
26+
import com.google.cloud.aiplatform.v1beta1.LocationName;
27+
import java.io.IOException;
28+
import java.util.concurrent.ExecutionException;
29+
import java.util.concurrent.TimeUnit;
30+
import java.util.concurrent.TimeoutException;
31+
32+
public class CreateDatasetTextSample {
33+
34+
public static void main(String[] args)
35+
throws IOException, InterruptedException, ExecutionException, TimeoutException {
36+
// TODO(developer): Replace these variables before running the sample.
37+
String project = "YOUR_PROJECT_ID";
38+
String datasetDisplayName = "YOUR_DATASET_DISPLAY_NAME";
39+
40+
createDatasetTextSample(project, datasetDisplayName);
41+
}
42+
43+
static void createDatasetTextSample(String project, String datasetDisplayName)
44+
throws IOException, InterruptedException, ExecutionException, TimeoutException {
45+
DatasetServiceSettings datasetServiceSettings =
46+
DatasetServiceSettings.newBuilder()
47+
.setEndpoint("us-central1-aiplatform.googleapis.com:443")
48+
.build();
49+
50+
// Initialize client that will be used to send requests. This client only needs to be created
51+
// once, and can be reused for multiple requests. After completing all of your requests, call
52+
// the "close" method on the client to safely clean up any remaining background resources.
53+
try (DatasetServiceClient datasetServiceClient =
54+
DatasetServiceClient.create(datasetServiceSettings)) {
55+
String location = "us-central1";
56+
String metadataSchemaUri =
57+
"gs://google-cloud-aiplatform/schema/dataset/metadata/text_1.0.0.yaml";
58+
59+
LocationName locationName = LocationName.of(project, location);
60+
Dataset dataset =
61+
Dataset.newBuilder()
62+
.setDisplayName(datasetDisplayName)
63+
.setMetadataSchemaUri(metadataSchemaUri)
64+
.build();
65+
66+
OperationFuture<Dataset, CreateDatasetOperationMetadata> datasetFuture =
67+
datasetServiceClient.createDatasetAsync(locationName, dataset);
68+
System.out.format("Operation name: %s\n", datasetFuture.getInitialFuture().get().getName());
69+
70+
System.out.println("Waiting for operation to finish...");
71+
Dataset datasetResponse = datasetFuture.get(120, TimeUnit.SECONDS);
72+
73+
System.out.println("Create Text Dataset Response");
74+
System.out.format("\tName: %s\n", datasetResponse.getName());
75+
System.out.format("\tDisplay Name: %s\n", datasetResponse.getDisplayName());
76+
System.out.format("\tMetadata Schema Uri: %s\n", datasetResponse.getMetadataSchemaUri());
77+
System.out.format("\tMetadata: %s\n", datasetResponse.getMetadata());
78+
System.out.format("\tCreate Time: %s\n", datasetResponse.getCreateTime());
79+
System.out.format("\tUpdate Time: %s\n", datasetResponse.getUpdateTime());
80+
System.out.format("\tLabels: %s\n", datasetResponse.getLabelsMap());
81+
}
82+
}
83+
}
84+
// [END aiplatform_create_dataset_text_sample]
Lines changed: 235 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,235 @@
1+
/*
2+
* Copyright 2020 Google LLC
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package aiplatform;
18+
19+
// [START aiplatform_create_training_pipeline_text_classification_sample]
20+
21+
import com.google.cloud.aiplatform.v1beta1.DeployedModelRef;
22+
import com.google.cloud.aiplatform.v1beta1.EnvVar;
23+
import com.google.cloud.aiplatform.v1beta1.ExplanationMetadata;
24+
import com.google.cloud.aiplatform.v1beta1.ExplanationParameters;
25+
import com.google.cloud.aiplatform.v1beta1.ExplanationSpec;
26+
import com.google.cloud.aiplatform.v1beta1.FilterSplit;
27+
import com.google.cloud.aiplatform.v1beta1.FractionSplit;
28+
import com.google.cloud.aiplatform.v1beta1.InputDataConfig;
29+
import com.google.cloud.aiplatform.v1beta1.LocationName;
30+
import com.google.cloud.aiplatform.v1beta1.Model;
31+
import com.google.cloud.aiplatform.v1beta1.Model.ExportFormat;
32+
import com.google.cloud.aiplatform.v1beta1.ModelContainerSpec;
33+
import com.google.cloud.aiplatform.v1beta1.PipelineServiceClient;
34+
import com.google.cloud.aiplatform.v1beta1.PipelineServiceSettings;
35+
import com.google.cloud.aiplatform.v1beta1.Port;
36+
import com.google.cloud.aiplatform.v1beta1.PredefinedSplit;
37+
import com.google.cloud.aiplatform.v1beta1.PredictSchemata;
38+
import com.google.cloud.aiplatform.v1beta1.SampledShapleyAttribution;
39+
import com.google.cloud.aiplatform.v1beta1.TimestampSplit;
40+
import com.google.cloud.aiplatform.v1beta1.TrainingPipeline;
41+
import com.google.protobuf.Any;
42+
import com.google.protobuf.Value;
43+
import com.google.protobuf.util.JsonFormat;
44+
import com.google.rpc.Status;
45+
import java.io.IOException;
46+
import java.util.List;
47+
48+
public class CreateTrainingPipelineTextClassificationSample {
49+
50+
public static void main(String[] args) throws IOException {
51+
// TODO(developer): Replace these variables before running the sample.
52+
String trainingPipelineDisplayName = "YOUR_TRAINING_PIPELINE_DISPLAY_NAME";
53+
String project = "YOUR_PROJECT_ID";
54+
String datasetId = "YOUR_DATASET_ID";
55+
String modelDisplayName = "YOUR_MODEL_DISPLAY_NAME";
56+
57+
createTrainingPipelineTextClassificationSample(
58+
project, trainingPipelineDisplayName, datasetId, modelDisplayName);
59+
}
60+
61+
static void createTrainingPipelineTextClassificationSample(
62+
String project, String trainingPipelineDisplayName, String datasetId, String modelDisplayName)
63+
throws IOException {
64+
PipelineServiceSettings pipelineServiceSettings =
65+
PipelineServiceSettings.newBuilder()
66+
.setEndpoint("us-central1-aiplatform.googleapis.com:443")
67+
.build();
68+
69+
// Initialize client that will be used to send requests. This client only needs to be created
70+
// once, and can be reused for multiple requests. After completing all of your requests, call
71+
// the "close" method on the client to safely clean up any remaining background resources.
72+
try (PipelineServiceClient pipelineServiceClient =
73+
PipelineServiceClient.create(pipelineServiceSettings)) {
74+
String location = "us-central1";
75+
String trainingTaskDefinition =
76+
"gs://google-cloud-aiplatform/schema/trainingjob/definition/"
77+
+ "automl_text_classification_1.0.0.yaml";
78+
String jsonString = "{\"multiLabel\": false}";
79+
80+
LocationName locationName = LocationName.of(project, location);
81+
82+
Value.Builder trainingTaskInputs = Value.newBuilder();
83+
JsonFormat.parser().merge(jsonString, trainingTaskInputs);
84+
85+
InputDataConfig trainingInputDataConfig =
86+
InputDataConfig.newBuilder().setDatasetId(datasetId).build();
87+
Model model = Model.newBuilder().setDisplayName(modelDisplayName).build();
88+
TrainingPipeline trainingPipeline =
89+
TrainingPipeline.newBuilder()
90+
.setDisplayName(trainingPipelineDisplayName)
91+
.setTrainingTaskDefinition(trainingTaskDefinition)
92+
.setTrainingTaskInputs(trainingTaskInputs)
93+
.setInputDataConfig(trainingInputDataConfig)
94+
.setModelToUpload(model)
95+
.build();
96+
97+
TrainingPipeline trainingPipelineResponse =
98+
pipelineServiceClient.createTrainingPipeline(locationName, trainingPipeline);
99+
100+
System.out.println("Create Training Pipeline Text Classification Response");
101+
System.out.format("\tName: %s\n", trainingPipelineResponse.getName());
102+
System.out.format("\tDisplay Name: %s\n", trainingPipelineResponse.getDisplayName());
103+
104+
System.out.format(
105+
"\tTraining Task Definition %s\n", trainingPipelineResponse.getTrainingTaskDefinition());
106+
System.out.format(
107+
"\tTraining Task Inputs: %s\n", trainingPipelineResponse.getTrainingTaskInputs());
108+
System.out.format(
109+
"\tTraining Task Metadata: %s\n", trainingPipelineResponse.getTrainingTaskMetadata());
110+
System.out.format("State: %s\n", trainingPipelineResponse.getState());
111+
112+
System.out.format("\tCreate Time: %s\n", trainingPipelineResponse.getCreateTime());
113+
System.out.format("\tStartTime %s\n", trainingPipelineResponse.getStartTime());
114+
System.out.format("\tEnd Time: %s\n", trainingPipelineResponse.getEndTime());
115+
System.out.format("\tUpdate Time: %s\n", trainingPipelineResponse.getUpdateTime());
116+
System.out.format("\tLabels: %s\n", trainingPipelineResponse.getLabelsMap());
117+
118+
InputDataConfig inputDataConfig = trainingPipelineResponse.getInputDataConfig();
119+
System.out.println("\tInput Data Config");
120+
System.out.format("\t\tDataset Id: %s", inputDataConfig.getDatasetId());
121+
System.out.format("\t\tAnnotations Filter: %s\n", inputDataConfig.getAnnotationsFilter());
122+
123+
FractionSplit fractionSplit = inputDataConfig.getFractionSplit();
124+
System.out.println("\t\tFraction Split");
125+
System.out.format("\t\t\tTraining Fraction: %s\n", fractionSplit.getTrainingFraction());
126+
System.out.format("\t\t\tValidation Fraction: %s\n", fractionSplit.getValidationFraction());
127+
System.out.format("\t\t\tTest Fraction: %s\n", fractionSplit.getTestFraction());
128+
129+
FilterSplit filterSplit = inputDataConfig.getFilterSplit();
130+
System.out.println("\t\tFilter Split");
131+
System.out.format("\t\t\tTraining Filter: %s\n", filterSplit.getTrainingFilter());
132+
System.out.format("\t\t\tValidation Filter: %s\n", filterSplit.getValidationFilter());
133+
System.out.format("\t\t\tTest Filter: %s\n", filterSplit.getTestFilter());
134+
135+
PredefinedSplit predefinedSplit = inputDataConfig.getPredefinedSplit();
136+
System.out.println("\t\tPredefined Split");
137+
System.out.format("\t\t\tKey: %s\n", predefinedSplit.getKey());
138+
139+
TimestampSplit timestampSplit = inputDataConfig.getTimestampSplit();
140+
System.out.println("\t\tTimestamp Split");
141+
System.out.format("\t\t\tTraining Fraction: %s\n", timestampSplit.getTrainingFraction());
142+
System.out.format("\t\t\tValidation Fraction: %s\n", timestampSplit.getValidationFraction());
143+
System.out.format("\t\t\tTest Fraction: %s\n", timestampSplit.getTestFraction());
144+
System.out.format("\t\t\tKey: %s\n", timestampSplit.getKey());
145+
146+
Model modelResponse = trainingPipelineResponse.getModelToUpload();
147+
System.out.println("\tModel To Upload");
148+
System.out.format("\t\tName: %s\n", modelResponse.getName());
149+
System.out.format("\t\tDisplay Name: %s\n", modelResponse.getDisplayName());
150+
System.out.format("\t\tDescription: %s\n", modelResponse.getDescription());
151+
152+
System.out.format("\t\tMetadata Schema Uri: %s\n", modelResponse.getMetadataSchemaUri());
153+
System.out.format("\t\tMetadata: %s\n", modelResponse.getMetadata());
154+
System.out.format("\t\tTraining Pipeline: %s\n", modelResponse.getTrainingPipeline());
155+
System.out.format("\t\tArtifact Uri: %s\n", modelResponse.getArtifactUri());
156+
157+
System.out.format(
158+
"\t\tSupported Deployment Resources Types: %s\n",
159+
modelResponse.getSupportedDeploymentResourcesTypesList());
160+
System.out.format(
161+
"\t\tSupported Input Storage Formats: %s\n",
162+
modelResponse.getSupportedInputStorageFormatsList());
163+
System.out.format(
164+
"\t\tSupported Output Storage Formats: %s\n",
165+
modelResponse.getSupportedOutputStorageFormatsList());
166+
167+
System.out.format("\t\tCreate Time: %s\n", modelResponse.getCreateTime());
168+
System.out.format("\t\tUpdate Time: %s\n", modelResponse.getUpdateTime());
169+
System.out.format("\t\tLabels: %sn\n", modelResponse.getLabelsMap());
170+
171+
PredictSchemata predictSchemata = modelResponse.getPredictSchemata();
172+
System.out.println("\t\tPredict Schemata");
173+
System.out.format("\t\t\tInstance Schema Uri: %s\n", predictSchemata.getInstanceSchemaUri());
174+
System.out.format(
175+
"\t\t\tParameters Schema Uri: %s\n", predictSchemata.getParametersSchemaUri());
176+
System.out.format(
177+
"\t\t\tPrediction Schema Uri: %s\n", predictSchemata.getPredictionSchemaUri());
178+
179+
for (ExportFormat exportFormat : modelResponse.getSupportedExportFormatsList()) {
180+
System.out.println("\t\tSupported Export Format");
181+
System.out.format("\t\t\tId: %s\n", exportFormat.getId());
182+
}
183+
184+
ModelContainerSpec modelContainerSpec = modelResponse.getContainerSpec();
185+
System.out.println("\t\tContainer Spec");
186+
System.out.format("\t\t\tImage Uri: %s\n", modelContainerSpec.getImageUri());
187+
System.out.format("\t\t\tCommand: %s\n", modelContainerSpec.getCommandList());
188+
System.out.format("\t\t\tArgs: %s\n", modelContainerSpec.getArgsList());
189+
System.out.format("\t\t\tPredict Route: %s\n", modelContainerSpec.getPredictRoute());
190+
System.out.format("\t\t\tHealth Route: %s\n", modelContainerSpec.getHealthRoute());
191+
192+
for (EnvVar envVar : modelContainerSpec.getEnvList()) {
193+
System.out.println("\t\t\tEnv");
194+
System.out.format("\t\t\t\tName: %s\n", envVar.getName());
195+
System.out.format("\t\t\t\tValue: %s\n", envVar.getValue());
196+
}
197+
198+
for (Port port : modelContainerSpec.getPortsList()) {
199+
System.out.println("\t\t\tPort");
200+
System.out.format("\t\t\t\tContainer Port: %s\n", port.getContainerPort());
201+
}
202+
203+
for (DeployedModelRef deployedModelRef : modelResponse.getDeployedModelsList()) {
204+
System.out.println("\t\tDeployed Model");
205+
System.out.format("\t\t\tEndpoint: %s\n", deployedModelRef.getEndpoint());
206+
System.out.format("\t\t\tDeployed Model Id: %s\n", deployedModelRef.getDeployedModelId());
207+
}
208+
209+
ExplanationSpec explanationSpec = modelResponse.getExplanationSpec();
210+
System.out.println("\t\tExplanation Spec");
211+
212+
ExplanationParameters explanationParameters = explanationSpec.getParameters();
213+
System.out.println("\t\t\tParameters");
214+
215+
SampledShapleyAttribution sampledShapleyAttribution =
216+
explanationParameters.getSampledShapleyAttribution();
217+
System.out.println("\t\t\t\tSampled Shapley Attribution");
218+
System.out.format("\t\t\t\t\tPath Count: %s\n", sampledShapleyAttribution.getPathCount());
219+
220+
ExplanationMetadata explanationMetadata = explanationSpec.getMetadata();
221+
System.out.println("\t\t\tMetadata");
222+
System.out.format("\t\t\t\tInputs: %s\n", explanationMetadata.getInputsMap());
223+
System.out.format("\t\t\t\tOutputs: %s\n", explanationMetadata.getOutputsMap());
224+
System.out.format(
225+
"\t\t\t\tFeature Attributions Schema_uri: %s\n",
226+
explanationMetadata.getFeatureAttributionsSchemaUri());
227+
228+
Status status = trainingPipelineResponse.getError();
229+
System.out.println("\tError");
230+
System.out.format("\t\tCode: %s\n", status.getCode());
231+
System.out.format("\t\tMessage: %s\n", status.getMessage());
232+
}
233+
}
234+
}
235+
// [END aiplatform_create_training_pipeline_text_classification_sample]

0 commit comments

Comments
 (0)