Skip to content

Commit d02099c

Browse files
vertex-sdk-botcopybara-github
authored andcommitted
feat: expose PSC for CustomModel
PiperOrigin-RevId: 815235726
1 parent 55b54a2 commit d02099c

File tree

2 files changed

+61
-0
lines changed

2 files changed

+61
-0
lines changed

tests/unit/vertexai/model_garden/test_model_garden.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1551,6 +1551,45 @@ def test_deploy_custom_model_with_all_config_success(self, deploy_mock):
15511551
)
15521552
)
15531553

1554+
def test_deploy_custom_model_with_psc_success(self, deploy_mock):
1555+
aiplatform.init(
1556+
project=_TEST_PROJECT,
1557+
location=_TEST_LOCATION,
1558+
)
1559+
model = model_garden_preview.CustomModel(gcs_uri=_TEST_GCS_URI)
1560+
model.deploy(
1561+
machine_type="n1-standard-4",
1562+
accelerator_type="NVIDIA_TESLA_T4",
1563+
accelerator_count=1,
1564+
enable_private_service_connect=True,
1565+
psc_project_allow_list=["test-project"],
1566+
)
1567+
deploy_mock.assert_called_once_with(
1568+
types.DeployRequest(
1569+
destination=f"projects/{_TEST_PROJECT}/locations/{_TEST_LOCATION}",
1570+
custom_model=types.DeployRequest.CustomModel(
1571+
gcs_uri=_TEST_GCS_URI,
1572+
),
1573+
endpoint_config=types.DeployRequest.EndpointConfig(
1574+
private_service_connect_config=types.PrivateServiceConnectConfig(
1575+
enable_private_service_connect=True,
1576+
project_allowlist=["test-project"],
1577+
),
1578+
),
1579+
deploy_config=types.DeployRequest.DeployConfig(
1580+
dedicated_resources=types.DedicatedResources(
1581+
min_replica_count=1,
1582+
max_replica_count=1,
1583+
machine_spec=types.MachineSpec(
1584+
machine_type="n1-standard-4",
1585+
accelerator_type="NVIDIA_TESLA_T4",
1586+
accelerator_count=1,
1587+
),
1588+
),
1589+
),
1590+
)
1591+
)
1592+
15541593
def test_deploy_custom_model_with_reservation_success(self, deploy_mock):
15551594
aiplatform.init(
15561595
project=_TEST_PROJECT,

vertexai/model_garden/_model_garden.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1063,6 +1063,8 @@ def deploy(
10631063
reservation_affinity_values: Optional[List[str]] = None,
10641064
endpoint_display_name: Optional[str] = None,
10651065
model_display_name: Optional[str] = None,
1066+
enable_private_service_connect: bool = False,
1067+
psc_project_allow_list: Optional[List[str]] = None,
10661068
deploy_request_timeout: Optional[float] = None,
10671069
) -> aiplatform.Endpoint:
10681070
"""Deploys a Custom Model to an endpoint.
@@ -1105,6 +1107,10 @@ def deploy(
11051107
'projects/{project_id_or_number}/zones/{zone}/reservations/{reservation_name}'
11061108
endpoint_display_name: The display name of the created endpoint.
11071109
model_display_name: The display name of the custom model.
1110+
enable_private_service_connect (bool): Whether to enable private service
1111+
connect.
1112+
psc_project_allow_list (List[str]): The list of projects that are allowed to
1113+
access the endpoint over private service connect.
11081114
deploy_request_timeout: The timeout for the deploy request. Default is 2
11091115
hours.
11101116
@@ -1123,6 +1129,8 @@ def deploy(
11231129
reservation_affinity_values=reservation_affinity_values,
11241130
endpoint_display_name=endpoint_display_name,
11251131
model_display_name=model_display_name,
1132+
enable_private_service_connect=enable_private_service_connect,
1133+
psc_project_allow_list=psc_project_allow_list,
11261134
deploy_request_timeout=deploy_request_timeout,
11271135
)
11281136

@@ -1139,6 +1147,8 @@ def _deploy_gcs_uri(
11391147
max_replica_count: int = 1,
11401148
accelerator_type: Optional[str] = None,
11411149
accelerator_count: Optional[int] = None,
1150+
enable_private_service_connect: bool = False,
1151+
psc_project_allow_list: Optional[List[str]] = None,
11421152
reservation_affinity_type: Optional[str] = None,
11431153
reservation_affinity_key: Optional[str] = None,
11441154
reservation_affinity_values: Optional[List[str]] = None,
@@ -1188,6 +1198,10 @@ def _deploy_gcs_uri(
11881198
'projects/{project_id_or_number}/zones/{zone}/reservations/{reservation_name}'
11891199
endpoint_display_name: The display name of the created endpoint.
11901200
model_display_name: The display name of the custom model.
1201+
enable_private_service_connect (bool): Whether to enable private service
1202+
connect.
1203+
psc_project_allow_list (List[str]): The list of projects that are allowed to
1204+
access the endpoint over private service connect.
11911205
deploy_request_timeout: The timeout for the deploy request. Default is 2
11921206
hours.
11931207
@@ -1217,6 +1231,14 @@ def has_all_or_none_values(var1, var2, var3) -> bool:
12171231
if model_display_name:
12181232
request.model_config.model_display_name = model_display_name
12191233

1234+
if enable_private_service_connect and psc_project_allow_list:
1235+
request.endpoint_config.private_service_connect_config = (
1236+
types.PrivateServiceConnectConfig(
1237+
enable_private_service_connect=enable_private_service_connect,
1238+
project_allowlist=psc_project_allow_list,
1239+
)
1240+
)
1241+
12201242
if machine_type and accelerator_type and accelerator_count:
12211243
request.deploy_config.dedicated_resources = types.DedicatedResources(
12221244
machine_spec=types.MachineSpec(

0 commit comments

Comments
 (0)