-
Notifications
You must be signed in to change notification settings - Fork 354
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: Added deploy_model_with_dedicated_resources_sample, deploy_mode…
…l_with_automatic_resources_sample, upload_model and get_model samples (#337) * Added deploy_model and upload_model samples * Fixed tests * Fixed tests * Added get_model sample and fixed errors * Added get_model sample and fixed errors * Added get_model sample and fixed errors * Added deploy_model_custom_trained_model_sample.py * Small tweaks * Fixed arguments * Removed explain args from custom training sample * Removed comment about AutoML * Renamed samples * Added note about explanations * Fixed test * Fixed tests * Ran linter
- Loading branch information
Showing
11 changed files
with
505 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
57 changes: 57 additions & 0 deletions
57
samples/model-builder/deploy_model_with_automatic_resources_sample.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
# Copyright 2021 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 typing import Dict, Optional, Sequence, Tuple | ||
|
||
from google.cloud import aiplatform | ||
|
||
|
||
# [START aiplatform_sdk_deploy_model_with_automatic_resources_sample] | ||
def deploy_model_with_automatic_resources_sample( | ||
project, | ||
location, | ||
model_name: str, | ||
endpoint: Optional[aiplatform.Endpoint] = None, | ||
deployed_model_display_name: Optional[str] = None, | ||
traffic_percentage: Optional[int] = 0, | ||
traffic_split: Optional[Dict[str, int]] = None, | ||
min_replica_count: int = 1, | ||
max_replica_count: int = 1, | ||
metadata: Optional[Sequence[Tuple[str, str]]] = (), | ||
sync: bool = True, | ||
): | ||
|
||
aiplatform.init(project=project, location=location) | ||
|
||
model = aiplatform.Model(model_name=model_name) | ||
|
||
model.deploy( | ||
endpoint=endpoint, | ||
deployed_model_display_name=deployed_model_display_name, | ||
traffic_percentage=traffic_percentage, | ||
traffic_split=traffic_split, | ||
min_replica_count=min_replica_count, | ||
max_replica_count=max_replica_count, | ||
metadata=metadata, | ||
sync=sync, | ||
) | ||
|
||
model.wait() | ||
|
||
print(model.display_name) | ||
print(model.resource_name) | ||
return model | ||
|
||
|
||
# [END aiplatform_sdk_deploy_model_with_automatic_resources_sample] |
52 changes: 52 additions & 0 deletions
52
samples/model-builder/deploy_model_with_automatic_resources_test.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
# Copyright 2021 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. | ||
|
||
|
||
import deploy_model_with_automatic_resources_sample | ||
import test_constants as constants | ||
|
||
|
||
def test_deploy_model_with_automatic_resources_sample( | ||
mock_sdk_init, mock_model, mock_init_model, mock_deploy_model, | ||
): | ||
|
||
deploy_model_with_automatic_resources_sample.deploy_model_with_automatic_resources_sample( | ||
project=constants.PROJECT, | ||
location=constants.LOCATION, | ||
model_name=constants.MODEL_NAME, | ||
endpoint=constants.ENDPOINT_NAME, | ||
deployed_model_display_name=constants.DEPLOYED_MODEL_DISPLAY_NAME, | ||
traffic_percentage=constants.TRAFFIC_PERCENTAGE, | ||
traffic_split=constants.TRAFFIC_SPLIT, | ||
min_replica_count=constants.MIN_REPLICA_COUNT, | ||
max_replica_count=constants.MAX_REPLICA_COUNT, | ||
metadata=constants.ENDPOINT_DEPLOY_METADATA, | ||
) | ||
|
||
mock_sdk_init.assert_called_once_with( | ||
project=constants.PROJECT, location=constants.LOCATION | ||
) | ||
|
||
mock_init_model.assert_called_once_with(model_name=constants.MODEL_NAME) | ||
|
||
mock_deploy_model.assert_called_once_with( | ||
endpoint=constants.ENDPOINT_NAME, | ||
deployed_model_display_name=constants.DEPLOYED_MODEL_DISPLAY_NAME, | ||
traffic_percentage=constants.TRAFFIC_PERCENTAGE, | ||
traffic_split=constants.TRAFFIC_SPLIT, | ||
min_replica_count=constants.MIN_REPLICA_COUNT, | ||
max_replica_count=constants.MAX_REPLICA_COUNT, | ||
metadata=constants.ENDPOINT_DEPLOY_METADATA, | ||
sync=True, | ||
) |
70 changes: 70 additions & 0 deletions
70
samples/model-builder/deploy_model_with_dedicated_resources_sample.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
# Copyright 2021 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 typing import Dict, Optional, Sequence, Tuple | ||
|
||
from google.cloud import aiplatform | ||
from google.cloud.aiplatform import explain | ||
|
||
|
||
# [START aiplatform_sdk_deploy_model_with_dedicated_resources_sample] | ||
def deploy_model_with_dedicated_resources_sample( | ||
project, | ||
location, | ||
model_name: str, | ||
machine_type: str, | ||
endpoint: Optional[aiplatform.Endpoint] = None, | ||
deployed_model_display_name: Optional[str] = None, | ||
traffic_percentage: Optional[int] = 0, | ||
traffic_split: Optional[Dict[str, int]] = None, | ||
min_replica_count: int = 1, | ||
max_replica_count: int = 1, | ||
accelerator_type: Optional[str] = None, | ||
accelerator_count: Optional[int] = None, | ||
explanation_metadata: Optional[explain.ExplanationMetadata] = None, | ||
explanation_parameters: Optional[explain.ExplanationParameters] = None, | ||
metadata: Optional[Sequence[Tuple[str, str]]] = (), | ||
sync: bool = True, | ||
): | ||
|
||
aiplatform.init(project=project, location=location) | ||
|
||
model = aiplatform.Model(model_name=model_name) | ||
|
||
# The explanation_metadata and explanation_parameters should only be | ||
# provided for a custom trained model and not an AutoML model. | ||
model.deploy( | ||
endpoint=endpoint, | ||
deployed_model_display_name=deployed_model_display_name, | ||
traffic_percentage=traffic_percentage, | ||
traffic_split=traffic_split, | ||
machine_type=machine_type, | ||
min_replica_count=min_replica_count, | ||
max_replica_count=max_replica_count, | ||
accelerator_type=accelerator_type, | ||
accelerator_count=accelerator_count, | ||
explanation_metadata=explanation_metadata, | ||
explanation_parameters=explanation_parameters, | ||
metadata=metadata, | ||
sync=sync, | ||
) | ||
|
||
model.wait() | ||
|
||
print(model.display_name) | ||
print(model.resource_name) | ||
return model | ||
|
||
|
||
# [END aiplatform_sdk_deploy_model_with_dedicated_resources_sample] |
62 changes: 62 additions & 0 deletions
62
samples/model-builder/deploy_model_with_dedicated_resources_test.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
# Copyright 2021 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. | ||
|
||
|
||
import deploy_model_with_dedicated_resources_sample | ||
import test_constants as constants | ||
|
||
|
||
def test_deploy_model_with_dedicated_resources_sample( | ||
mock_sdk_init, mock_model, mock_init_model, mock_deploy_model | ||
): | ||
|
||
deploy_model_with_dedicated_resources_sample.deploy_model_with_dedicated_resources_sample( | ||
project=constants.PROJECT, | ||
location=constants.LOCATION, | ||
machine_type=constants.MACHINE_TYPE, | ||
model_name=constants.MODEL_NAME, | ||
endpoint=constants.ENDPOINT_NAME, | ||
deployed_model_display_name=constants.DEPLOYED_MODEL_DISPLAY_NAME, | ||
traffic_percentage=constants.TRAFFIC_PERCENTAGE, | ||
traffic_split=constants.TRAFFIC_SPLIT, | ||
min_replica_count=constants.MIN_REPLICA_COUNT, | ||
max_replica_count=constants.MAX_REPLICA_COUNT, | ||
accelerator_type=constants.ACCELERATOR_TYPE, | ||
accelerator_count=constants.ACCELERATOR_COUNT, | ||
explanation_metadata=constants.EXPLANATION_METADATA, | ||
explanation_parameters=constants.EXPLANATION_PARAMETERS, | ||
metadata=constants.ENDPOINT_DEPLOY_METADATA, | ||
) | ||
|
||
mock_sdk_init.assert_called_once_with( | ||
project=constants.PROJECT, location=constants.LOCATION | ||
) | ||
|
||
mock_init_model.assert_called_once_with(model_name=constants.MODEL_NAME) | ||
|
||
mock_deploy_model.assert_called_once_with( | ||
endpoint=constants.ENDPOINT_NAME, | ||
deployed_model_display_name=constants.DEPLOYED_MODEL_DISPLAY_NAME, | ||
traffic_percentage=constants.TRAFFIC_PERCENTAGE, | ||
traffic_split=constants.TRAFFIC_SPLIT, | ||
machine_type=constants.MACHINE_TYPE, | ||
min_replica_count=constants.MIN_REPLICA_COUNT, | ||
max_replica_count=constants.MAX_REPLICA_COUNT, | ||
accelerator_type=constants.ACCELERATOR_TYPE, | ||
accelerator_count=constants.ACCELERATOR_COUNT, | ||
explanation_metadata=constants.EXPLANATION_METADATA, | ||
explanation_parameters=constants.EXPLANATION_PARAMETERS, | ||
metadata=constants.ENDPOINT_DEPLOY_METADATA, | ||
sync=True, | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
# Copyright 2021 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 google.cloud import aiplatform | ||
|
||
|
||
# [START aiplatform_sdk_get_model_sample] | ||
def get_model_sample(project: str, location: str, model_name: str): | ||
|
||
aiplatform.init(project=project, location=location) | ||
|
||
model = aiplatform.Model(model_name=model_name) | ||
|
||
print(model.display_name) | ||
print(model.resource_name) | ||
return model | ||
|
||
|
||
# [END aiplatform_sdk_get_model_sample] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
# Copyright 2021 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. | ||
|
||
|
||
import get_model_sample | ||
import test_constants as constants | ||
|
||
|
||
def test_get_model_sample(mock_sdk_init, mock_init_model): | ||
|
||
get_model_sample.get_model_sample( | ||
project=constants.PROJECT, | ||
location=constants.LOCATION, | ||
model_name=constants.MODEL_NAME, | ||
) | ||
|
||
mock_sdk_init.assert_called_once_with( | ||
project=constants.PROJECT, location=constants.LOCATION | ||
) | ||
|
||
mock_init_model.assert_called_once_with(model_name=constants.MODEL_NAME) |
Oops, something went wrong.