def test_deploy_with_traffic_percent(self, deploy_model_mock, sync): with mock.patch.object(endpoint_service_client.EndpointServiceClient, "get_endpoint") as get_endpoint_mock: get_endpoint_mock.return_value = gca_endpoint.Endpoint( display_name=_TEST_DISPLAY_NAME, name=_TEST_ENDPOINT_NAME, traffic_split={"model1": 100}, ) test_endpoint = models.Endpoint(_TEST_ENDPOINT_NAME) test_model = models.Model(_TEST_ID) test_endpoint.deploy(model=test_model, traffic_percentage=70, sync=sync) if not sync: test_endpoint.wait() automatic_resources = gca_machine_resources.AutomaticResources( min_replica_count=1, max_replica_count=1, ) deployed_model = gca_endpoint.DeployedModel( automatic_resources=automatic_resources, model=test_model.resource_name, display_name=None, ) deploy_model_mock.assert_called_once_with( endpoint=test_endpoint.resource_name, deployed_model=deployed_model, traffic_split={ "model1": 30, "0": 70 }, metadata=(), )
def test_undeploy_with_traffic_split(self, undeploy_model_mock, sync): with mock.patch.object(endpoint_service_client.EndpointServiceClient, "get_endpoint") as get_endpoint_mock: get_endpoint_mock.return_value = gca_endpoint.Endpoint( display_name=_TEST_DISPLAY_NAME, name=_TEST_ENDPOINT_NAME, traffic_split={ "model1": 40, "model2": 60 }, ) test_endpoint = models.Endpoint(_TEST_ENDPOINT_NAME) test_endpoint.undeploy( deployed_model_id="model1", traffic_split={ "model1": 0, "model2": 100 }, sync=sync, ) if not sync: test_endpoint.wait() undeploy_model_mock.assert_called_once_with( endpoint=test_endpoint.resource_name, deployed_model_id="model1", traffic_split={"model2": 100}, metadata=(), )
def create_endpoint_mock(): with mock.patch.object(endpoint_service_client.EndpointServiceClient, "create_endpoint") as create_endpoint_mock: create_endpoint_lro_mock = mock.Mock(ga_operation.Operation) create_endpoint_lro_mock.result.return_value = gca_endpoint.Endpoint( name=_TEST_ENDPOINT_NAME, display_name=_TEST_DISPLAY_NAME) create_endpoint_mock.return_value = create_endpoint_lro_mock yield create_endpoint_mock
def get_endpoint_alt_location_mock(): with mock.patch.object(endpoint_service_client.EndpointServiceClient, "get_endpoint") as get_endpoint_mock: get_endpoint_mock.return_value = gca_endpoint.Endpoint( display_name=_TEST_DISPLAY_NAME, name=_TEST_ENDPOINT_NAME_ALT_LOCATION, encryption_spec=_TEST_ENCRYPTION_SPEC, ) yield get_endpoint_mock
def get_endpoint_with_models_mock(): with mock.patch.object(endpoint_service_client.EndpointServiceClient, "get_endpoint") as get_endpoint_mock: get_endpoint_mock.return_value = gca_endpoint.Endpoint( display_name=_TEST_DISPLAY_NAME, name=_TEST_ENDPOINT_NAME, deployed_models=_TEST_DEPLOYED_MODELS, ) yield get_endpoint_mock
def get_endpoint_with_models_with_explanation_mock(): with mock.patch.object(endpoint_service_client.EndpointServiceClient, "get_endpoint") as get_endpoint_mock: get_endpoint_mock.return_value = gca_endpoint.Endpoint( display_name=_TEST_DISPLAY_NAME, name=_TEST_ENDPOINT_NAME, deployed_models=_TEST_DEPLOYED_MODELS_WITH_EXPLANATION, traffic_split=_TEST_TRAFFIC_SPLIT, ) yield get_endpoint_mock
def test_create_with_labels(self, create_endpoint_mock, sync): my_endpoint = models.Endpoint.create(display_name=_TEST_DISPLAY_NAME, labels=_TEST_LABELS, sync=sync) if not sync: my_endpoint.wait() expected_endpoint = gca_endpoint.Endpoint( display_name=_TEST_DISPLAY_NAME, labels=_TEST_LABELS, ) create_endpoint_mock.assert_called_once_with( parent=_TEST_PARENT, endpoint=expected_endpoint, metadata=(), )
def test_create_with_description(self, create_endpoint_mock, sync): my_endpoint = models.Endpoint.create(display_name=_TEST_DISPLAY_NAME, description=_TEST_DESCRIPTION, sync=sync) if not sync: my_endpoint.wait() expected_endpoint = gca_endpoint.Endpoint( display_name=_TEST_DISPLAY_NAME, description=_TEST_DESCRIPTION, ) create_endpoint_mock.assert_called_once_with( parent=_TEST_PARENT, endpoint=expected_endpoint, metadata=(), )
def _setUpVertexPredictionMocks(self): importlib.reload(initializer) importlib.reload(aiplatform) self._serving_container_image_uri = 'gcr.io/path/to/container' self._serving_path = os.path.join(self._output_data_dir, 'serving_path') self._endpoint_name = 'endpoint-name' self._endpoint_region = 'us-central1' self._deployed_model_id = 'model_id' self._mock_create_client = mock.Mock() initializer.global_config.create_client = self._mock_create_client self._mock_create_client.return_value = mock.Mock( spec=endpoint_service_client.EndpointServiceClient) self._mock_get_endpoint = mock.Mock() endpoint_service_client.EndpointServiceClient.get_endpoint = self._mock_get_endpoint self._mock_get_endpoint.return_value = endpoint.Endpoint( display_name=self._endpoint_name,) aiplatform.init( project=self._project_id, location=None, credentials=mock.Mock(spec=auth_credentials.AnonymousCredentials())) self._mock_endpoint = aiplatform.Endpoint( endpoint_name='projects/{}/locations/us-central1/endpoints/1234'.format( self._project_id)) self._mock_endpoint_create = mock.Mock() aiplatform.Endpoint.create = self._mock_endpoint_create self._mock_endpoint_create.return_value = self._mock_endpoint self._mock_endpoint_list = mock.Mock() aiplatform.Endpoint.list = self._mock_endpoint_list self._mock_endpoint_list.return_value = [] self._mock_model_upload = mock.Mock() aiplatform.Model.upload = self._mock_model_upload self._mock_model_deploy = mock.Mock() self._mock_model_upload.return_value.deploy = self._mock_model_deploy self._ai_platform_serving_args_vertex = { 'endpoint_name': self._endpoint_name, 'project_id': self._project_id, }
def test_accessing_properties_with_no_resource_raises(self, ): """Ensure a descriptive RuntimeError is raised when the GAPIC object has not been populated""" my_endpoint = aiplatform.Endpoint(_TEST_ENDPOINT_NAME) # Create a gca_resource without `name` being populated my_endpoint._gca_resource = gca_endpoint.Endpoint( create_time=datetime.now()) with pytest.raises(RuntimeError) as e: my_endpoint.gca_resource e.match(regexp=r"Endpoint resource has not been created.") with pytest.raises(RuntimeError) as e: my_endpoint.network e.match(regexp=r"Endpoint resource has not been created.")
def _setUpDeleteVertexModelMocks(self): importlib.reload(initializer) importlib.reload(aiplatform) self._endpoint_name = 'endpoint_name' self._deployed_model_id = 'model_id' self._mock_create_client = mock.Mock() initializer.global_config.create_client = self._mock_create_client self._mock_create_client.return_value = mock.Mock( spec=endpoint_service_client.EndpointServiceClient) self._mock_get_endpoint = mock.Mock() endpoint_service_client.EndpointServiceClient.get_endpoint = self._mock_get_endpoint self._mock_get_endpoint.return_value = endpoint.Endpoint( display_name=self._endpoint_name) aiplatform.init( project=self._project_id, location=None, credentials=mock.Mock(spec=auth_credentials.AnonymousCredentials())) self._mock_endpoint = aiplatform.Endpoint( endpoint_name='projects/{}/locations/us-central1/endpoints/1234'.format( self._project_id)) self._mock_endpoint_list = mock.Mock() aiplatform.Endpoint.list = self._mock_endpoint_list self._mock_endpoint_list.return_value = [self._mock_endpoint] self._mock_model_delete = mock.Mock() self._mock_endpoint.undeploy = self._mock_model_delete self._mock_list_models = mock.Mock() self._mock_list_models.return_value = [ endpoint.DeployedModel( display_name=self._model_name, id=self._deployed_model_id) ] self._mock_endpoint.list_models = self._mock_list_models self._ai_platform_serving_args_vertex = { 'endpoint_name': self._endpoint_name, 'project_id': self._project_id, }
def test_create(self, create_endpoint_mock, sync): my_endpoint = models.Endpoint.create( display_name=_TEST_DISPLAY_NAME, encryption_spec_key_name=_TEST_ENCRYPTION_KEY_NAME, sync=sync, ) if not sync: my_endpoint.wait() expected_endpoint = gca_endpoint.Endpoint( display_name=_TEST_DISPLAY_NAME, encryption_spec=_TEST_ENCRYPTION_SPEC) create_endpoint_mock.assert_called_once_with( parent=_TEST_PARENT, endpoint=expected_endpoint, metadata=(), ) expected_endpoint.name = _TEST_ENDPOINT_NAME assert my_endpoint._gca_resource == expected_endpoint
def test_init_aiplatform_with_encryption_key_name_and_create_endpoint( self, create_endpoint_mock, sync): aiplatform.init( project=_TEST_PROJECT, location=_TEST_LOCATION, encryption_spec_key_name=_TEST_ENCRYPTION_KEY_NAME, ) my_endpoint = models.Endpoint.create(display_name=_TEST_DISPLAY_NAME, sync=sync) if not sync: my_endpoint.wait() expected_endpoint = gca_endpoint.Endpoint( display_name=_TEST_DISPLAY_NAME, encryption_spec=_TEST_ENCRYPTION_SPEC) create_endpoint_mock.assert_called_once_with( parent=_TEST_PARENT, endpoint=expected_endpoint, metadata=(), ) expected_endpoint.name = _TEST_ENDPOINT_NAME assert my_endpoint._gca_resource == expected_endpoint
def get_empty_endpoint_mock(): with mock.patch.object(endpoint_service_client.EndpointServiceClient, "get_endpoint") as get_endpoint_mock: get_endpoint_mock.return_value = gca_endpoint.Endpoint( name=_TEST_ENDPOINT_NAME) yield get_endpoint_mock
"medv": explain.ExplanationMetadata.OutputMetadata( {"output_tensor_name": "dense_2"}) }, ) _TEST_EXPLANATION_PARAMETERS = explain.ExplanationParameters( {"sampled_shapley_attribution": { "path_count": 10 }}) # CMEK encryption _TEST_ENCRYPTION_KEY_NAME = "key_1234" _TEST_ENCRYPTION_SPEC = gca_encryption_spec.EncryptionSpec( kms_key_name=_TEST_ENCRYPTION_KEY_NAME) _TEST_ENDPOINT_GAPIC = gca_endpoint.Endpoint(display_name=_TEST_DISPLAY_NAME, name=_TEST_ENDPOINT_NAME) _TEST_ENDPOINT_LIST = [ gca_endpoint.Endpoint( name=_TEST_ENDPOINT_NAME, display_name="aac", create_time=datetime.now() - timedelta(minutes=15), ), gca_endpoint.Endpoint( name=_TEST_ENDPOINT_NAME, display_name="aab", create_time=datetime.now() - timedelta(minutes=5), ), gca_endpoint.Endpoint( name=_TEST_ENDPOINT_NAME, display_name="aaa",