Skip to content

Commit

Permalink
feat: add samples (#56)
Browse files Browse the repository at this point in the history
* feat: Add sample and sample tests

Co-authored-by: Vinny Senthil <vinnysenthil@gmail.com>
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: Bu Sun Kim <8822365+busunkim96@users.noreply.github.com>
Co-authored-by: Ariana Bray <aribray@google.com>
Co-authored-by: aribray <45905583+aribray@users.noreply.github.com>
  • Loading branch information
6 people committed Nov 13, 2020
1 parent 9e3519f commit 53cc5f5
Show file tree
Hide file tree
Showing 128 changed files with 6,309 additions and 21 deletions.
36 changes: 36 additions & 0 deletions samples/snippets/cancel_batch_prediction_job_sample.py
@@ -0,0 +1,36 @@
# Copyright 2020 Google LLC
#
# 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
#
# https://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.

# [START aiplatform_cancel_batch_prediction_job_sample]
from google.cloud import aiplatform


def cancel_batch_prediction_job_sample(
project: str,
batch_prediction_job_id: str,
location: str = "us-central1",
api_endpoint: str = "us-central1-aiplatform.googleapis.com",
):
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)
name = client.batch_prediction_job_path(
project=project, location=location, batch_prediction_job=batch_prediction_job_id
)
response = client.cancel_batch_prediction_job(name=name)
print("response:", response)


# [END aiplatform_cancel_batch_prediction_job_sample]
36 changes: 36 additions & 0 deletions samples/snippets/cancel_custom_job_sample.py
@@ -0,0 +1,36 @@
# Copyright 2020 Google LLC
#
# 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
#
# https://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.

# [START aiplatform_cancel_custom_job_sample]
from google.cloud import aiplatform


def cancel_custom_job_sample(
project: str,
custom_job_id: str,
location: str = "us-central1",
api_endpoint: str = "us-central1-aiplatform.googleapis.com",
):
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)
name = client.custom_job_path(
project=project, location=location, custom_job=custom_job_id
)
response = client.cancel_custom_job(name=name)
print("response:", response)


# [END aiplatform_cancel_custom_job_sample]
36 changes: 36 additions & 0 deletions samples/snippets/cancel_data_labeling_job_sample.py
@@ -0,0 +1,36 @@
# Copyright 2020 Google LLC
#
# 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
#
# https://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.

# [START aiplatform_cancel_data_labeling_job_sample]
from google.cloud import aiplatform


def cancel_data_labeling_job_sample(
project: str,
data_labeling_job_id: str,
location: str = "us-central1",
api_endpoint: str = "us-central1-aiplatform.googleapis.com",
):
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)
name = client.data_labeling_job_path(
project=project, location=location, data_labeling_job=data_labeling_job_id
)
response = client.cancel_data_labeling_job(name=name)
print("response:", response)


# [END aiplatform_cancel_data_labeling_job_sample]
38 changes: 38 additions & 0 deletions samples/snippets/cancel_hyperparameter_tuning_job_sample.py
@@ -0,0 +1,38 @@
# Copyright 2020 Google LLC
#
# 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
#
# https://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.

# [START aiplatform_cancel_hyperparameter_tuning_job_sample]
from google.cloud import aiplatform


def cancel_hyperparameter_tuning_job_sample(
project: str,
hyperparameter_tuning_job_id: str,
location: str = "us-central1",
api_endpoint: str = "us-central1-aiplatform.googleapis.com",
):
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)
name = client.hyperparameter_tuning_job_path(
project=project,
location=location,
hyperparameter_tuning_job=hyperparameter_tuning_job_id,
)
response = client.cancel_hyperparameter_tuning_job(name=name)
print("response:", response)


# [END aiplatform_cancel_hyperparameter_tuning_job_sample]
36 changes: 36 additions & 0 deletions samples/snippets/cancel_training_pipeline_sample.py
@@ -0,0 +1,36 @@
# Copyright 2020 Google LLC
#
# 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
#
# https://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.

# [START aiplatform_cancel_training_pipeline_sample]
from google.cloud import aiplatform


def cancel_training_pipeline_sample(
project: str,
training_pipeline_id: str,
location: str = "us-central1",
api_endpoint: str = "us-central1-aiplatform.googleapis.com",
):
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.PipelineServiceClient(client_options=client_options)
name = client.training_pipeline_path(
project=project, location=location, training_pipeline=training_pipeline_id
)
response = client.cancel_training_pipeline(name=name)
print("response:", response)


# [END aiplatform_cancel_training_pipeline_sample]
78 changes: 78 additions & 0 deletions samples/snippets/cancel_training_pipeline_sample_test.py
@@ -0,0 +1,78 @@
# Copyright 2020 Google LLC
#
# 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
#
# https://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.

from uuid import uuid4
import pytest
import os

import helpers

import create_training_pipeline_sample
import cancel_training_pipeline_sample
import delete_training_pipeline_sample
import get_training_pipeline_sample

from google.cloud import aiplatform

PROJECT_ID = os.getenv("BUILD_SPECIFIC_GCLOUD_PROJECT")
LOCATION = "us-central1"
DATASET_ID = "1084241610289446912" # Permanent 50 Flowers Dataset
DISPLAY_NAME = f"temp_create_training_pipeline_test_{uuid4()}"
TRAINING_DEFINITION_GCS_PATH = "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_image_classification_1.0.0.yaml"


@pytest.fixture(scope="function")
def training_pipeline_id(capsys):
create_training_pipeline_sample.create_training_pipeline_sample(
project=PROJECT_ID,
display_name=DISPLAY_NAME,
training_task_definition=TRAINING_DEFINITION_GCS_PATH,
dataset_id=DATASET_ID,
model_display_name=f"Temp Model for {DISPLAY_NAME}",
)

out, _ = capsys.readouterr()

training_pipeline_name = helpers.get_name(out)

assert "/" in training_pipeline_name

training_pipeline_id = training_pipeline_name.split("/")[-1]

yield training_pipeline_id

delete_training_pipeline_sample.delete_training_pipeline_sample(
project=PROJECT_ID, training_pipeline_id=training_pipeline_id
)


def test_ucaip_generated_cancel_training_pipeline_sample(capsys, training_pipeline_id):
# Run cancel pipeline sample
cancel_training_pipeline_sample.cancel_training_pipeline_sample(
project=PROJECT_ID, training_pipeline_id=training_pipeline_id
)

pipeline_client = aiplatform.gapic.PipelineServiceClient(
client_options={"api_endpoint": "us-central1-aiplatform.googleapis.com"}
)

# Waiting for training pipeline to be in CANCELLED state, otherwise raise error
helpers.wait_for_job_state(
get_job_method=pipeline_client.get_training_pipeline,
name=pipeline_client.training_pipeline_path(
project=PROJECT_ID,
location=LOCATION,
training_pipeline=training_pipeline_id,
),
)
@@ -0,0 +1,64 @@
# Copyright 2020 Google LLC
#
# 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
#
# https://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.

# [START aiplatform_create_batch_prediction_job_video_classification_sample]
from google.cloud import aiplatform
from google.protobuf import json_format
from google.protobuf.struct_pb2 import Value


def create_batch_prediction_job_video_classification_sample(
project: str,
display_name: str,
model_name: str,
gcs_source_uri: str,
gcs_destination_output_uri_prefix: str,
location: str = "us-central1",
api_endpoint: str = "us-central1-aiplatform.googleapis.com",
):
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)
model_parameters_dict = {
"confidenceThreshold": 0.5,
"maxPredictions": 10000,
"segmentClassification": True,
"shotClassification": True,
"oneSecIntervalClassification": True,
}
model_parameters = json_format.ParseDict(model_parameters_dict, Value())

batch_prediction_job = {
"display_name": display_name,
# Format: 'projects/{project}/locations/{location}/models/{model_id}'
"model": model_name,
"model_parameters": model_parameters,
"input_config": {
"instances_format": "jsonl",
"gcs_source": {"uris": [gcs_source_uri]},
},
"output_config": {
"predictions_format": "jsonl",
"gcs_destination": {"output_uri_prefix": gcs_destination_output_uri_prefix},
},
}
parent = f"projects/{project}/locations/{location}"
response = client.create_batch_prediction_job(
parent=parent, batch_prediction_job=batch_prediction_job
)
print("response:", response)


# [END aiplatform_create_batch_prediction_job_video_classification_sample]

0 comments on commit 53cc5f5

Please sign in to comment.