23
23
from google .cloud .aiplatform import initializer
24
24
from google .cloud .aiplatform import utils
25
25
from google .cloud .aiplatform .utils import resource_manager_utils
26
- from google .cloud .aiplatform_v1 .types import persistent_resource_service
26
+ from google .cloud .aiplatform_v1beta1 .types import persistent_resource_service
27
27
28
- from google .cloud .aiplatform_v1 .types .persistent_resource import (
28
+ from google .cloud .aiplatform_v1beta1 .types .persistent_resource import (
29
29
PersistentResource ,
30
+ RayLogsSpec ,
30
31
RaySpec ,
31
32
RayMetricSpec ,
32
33
ResourcePool ,
33
34
ResourceRuntimeSpec ,
34
35
ServiceAccountSpec ,
35
36
)
36
-
37
+ from google .cloud .aiplatform_v1beta1 .types .service_networking import (
38
+ PscInterfaceConfig ,
39
+ )
37
40
from google .cloud .aiplatform .vertex_ray .util import (
38
41
_gapic_utils ,
39
42
_validation_utils ,
@@ -56,6 +59,8 @@ def create_ray_cluster(
56
59
worker_node_types : Optional [List [resources .Resources ]] = [resources .Resources ()],
57
60
custom_images : Optional [resources .NodeImages ] = None ,
58
61
enable_metrics_collection : Optional [bool ] = True ,
62
+ enable_logging : Optional [bool ] = True ,
63
+ psc_interface_config : Optional [resources .PscIConfig ] = None ,
59
64
labels : Optional [Dict [str , str ]] = None ,
60
65
) -> str :
61
66
"""Create a ray cluster on the Vertex AI.
@@ -119,6 +124,8 @@ def create_ray_cluster(
119
124
head/worker_node_type(s). Note that configuring `Resources.custom_image`
120
125
will override `custom_images` here. Allowlist only.
121
126
enable_metrics_collection: Enable Ray metrics collection for visualization.
127
+ enable_logging: Enable exporting Ray logs to Cloud Logging.
128
+ psc_interface_config: PSC-I config.
122
129
labels:
123
130
The labels with user-defined metadata to organize Ray cluster.
124
131
@@ -258,10 +265,17 @@ def create_ray_cluster(
258
265
i += 1
259
266
260
267
resource_pools = [resource_pool_0 ] + worker_pools
261
- disabled = not enable_metrics_collection
262
- ray_metric_spec = RayMetricSpec (disabled = disabled )
268
+
269
+ metrics_collection_disabled = not enable_metrics_collection
270
+ ray_metric_spec = RayMetricSpec (disabled = metrics_collection_disabled )
271
+
272
+ logging_disabled = not enable_logging
273
+ ray_logs_spec = RayLogsSpec (disabled = logging_disabled )
274
+
263
275
ray_spec = RaySpec (
264
- resource_pool_images = resource_pool_images , ray_metric_spec = ray_metric_spec
276
+ resource_pool_images = resource_pool_images ,
277
+ ray_metric_spec = ray_metric_spec ,
278
+ ray_logs_spec = ray_logs_spec ,
265
279
)
266
280
if service_account :
267
281
service_account_spec = ServiceAccountSpec (
@@ -274,11 +288,18 @@ def create_ray_cluster(
274
288
)
275
289
else :
276
290
resource_runtime_spec = ResourceRuntimeSpec (ray_spec = ray_spec )
291
+ if psc_interface_config :
292
+ gapic_psc_interface_config = PscInterfaceConfig (
293
+ network_attachment = psc_interface_config .network_attachment ,
294
+ )
295
+ else :
296
+ gapic_psc_interface_config = None
277
297
persistent_resource = PersistentResource (
278
298
resource_pools = resource_pools ,
279
299
network = network ,
280
300
labels = labels ,
281
301
resource_runtime_spec = resource_runtime_spec ,
302
+ psc_interface_config = gapic_psc_interface_config ,
282
303
)
283
304
284
305
location = initializer .global_config .location
0 commit comments