在 Vertex AI 上擴充 Ray 叢集

Vertex AI 上的 Ray 叢集提供兩種資源調度選項:自動調度資源手動調度資源。叢集可透過自動調度資源功能,根據 Ray 工作和參與者所需的資源,自動調整工作站節點數量。如果您執行大量工作負載,但不確定需要多少資源,建議使用自動調度資源。手動調整節點大小可讓使用者更精細地控管節點。

自動調度資源可降低工作負載成本,但會增加節點啟動負擔,且設定可能較為複雜。如果您是 Ray 新手,請先從非自動調度叢集開始,並使用手動調度功能。

自動調度資源

指定工作站集區的副本數量下限 (min_replica_count) 和上限 (max_replica_count),即可啟用 Ray 叢集的自動調度資源功能。

注意事項:

  • 設定所有工作站集區的自動調度規格。
  • 不支援自訂放大和縮小速度。如需預設值,請參閱 Ray 說明文件中的「Upscaling and downscaling speed」。

設定工作站集區自動調度規格

使用 Google Cloud 控制台或 Python 適用的 Vertex AI SDK,啟用 Ray 叢集的自動調度資源功能。

Ray on Vertex AI SDK

from google.cloud import aiplatform
import vertex_ray
from vertex_ray import AutoscalingSpec

autoscaling_spec = AutoscalingSpec(
 min_replica_count=1,
 max_replica_count=3,
)

head_node_type = Resources(
 machine_type="n1-standard-16",
 node_count=1,
)

worker_node_types = [Resources(
 machine_type="n1-standard-16",
 accelerator_type="NVIDIA_TESLA_T4",
 accelerator_count=1,
 autoscaling_spec=autoscaling_spec,
)]

# Create the Ray cluster on Vertex AI
CLUSTER_RESOURCE_NAME = vertex_ray.create_ray_cluster(
head_node_type=head_node_type,
worker_node_types=worker_node_types,
...
)

主控台

根據 OSS Ray 最佳做法建議,系統會強制將 Ray 頭部節點的邏輯 CPU 數量設為 0,避免在頭部節點上執行任何工作負載。

  1. 前往 Google Cloud 控制台的 Ray on Vertex AI 頁面。

    前往「Ray on Vertex AI」頁面

  2. 按一下「建立叢集」,開啟「建立叢集」面板。

  3. 在「建立叢集」面板中,檢查或取代每個步驟的預設叢集資訊。點選「繼續」完成各個步驟:

    1. 在「名稱和區域」部分,指定「名稱」,然後選擇叢集的位置。
    2. 在「Compute settings」(運算設定) 中,指定首節點上 Ray 叢集的設定,包括機器類型、加速器類型和數量、磁碟類型和大小,以及副本數量。視需要新增自訂映像檔 URI,指定自訂容器映像檔,以新增預設容器映像檔未提供的 Python 依附元件。請參閱「自訂映像檔」。

      在「進階選項」下方,你可以:

      • 指定自己的加密金鑰。
      • 指定自訂服務帳戶
      • 如果不需要在訓練期間監控工作負載的資源統計資料,請停用指標收集功能。
    3. 如要建立具有自動調度資源工作站集區的叢集,請提供工作站集區的副本數量上限值。自動調度資源的運算設定

  4. 點選「建立」

手動調整資源配置

當 Vertex AI 上的 Ray 叢集工作負載增加或減少時,請手動調整副本數量,以符合需求。舉例來說,如果容量過剩,請縮減工作站集區,以節省費用。

虛擬私有雲對等互連的限制

調整叢集時,您只能變更現有工作站集區中的副本數量。舉例來說,您無法在叢集中新增或移除工作站集區,也無法變更工作站集區的機器類型。此外,工作站集區的副本數量不得少於一。

如果您使用 VPC 對等互連連線連線至叢集,節點數量上限會受到限制。節點數量上限取決於您建立叢集時的節點數量。詳情請參閱節點數量上限的計算方式。這個上限包含工作站集區和頭部節點。如果您使用預設網路設定,節點數量不得超過建立叢集文件所述的上限。

節點數量上限計算

如果您使用私人服務存取權 (虛擬私有雲對等互連) 連線至節點,請使用下列公式檢查是否超過節點數量上限 (M),假設 f(x) = min(29, (32 - ceiling(log2(x)))

  • f(2 * M) = f(2 * N)
  • f(64 * M) = f(64 * N)
  • f(max(32, 16 + M)) = f(max(32, 16 + N))

您可以擴充的 Ray on Vertex AI 叢集節點總數上限 (M),取決於您設定的初始節點總數 (N)。建立 Ray on Vertex AI 叢集後,您可以將節點總數擴充至 PM 之間 (含兩者),其中 P 是叢集中的集區數量。

叢集的初始節點總數和擴充目標節點數必須位於同一個顏色方塊中。

圖表:顯示初始節點計數與縮放節點計數之間的關係

更新備用資源數量

使用 Google Cloud 控制台或 Python 適用的 Vertex AI SDK,更新工作站集區的副本數量。如果叢集包含多個工作站集區,您可以在單一要求中個別變更每個集區的副本數量。

Ray on Vertex AI SDK

import vertexai
import vertex_ray

vertexai.init()
cluster = vertex_ray.get_ray_cluster("CLUSTER_NAME")

# Get the resource name.
cluster_resource_name = cluster.cluster_resource_name

# Create the new worker pools
new_worker_node_types = []
for worker_node_type in cluster.worker_node_types:
 worker_node_type.node_count = REPLICA_COUNT # new worker pool size
 new_worker_node_types.append(worker_node_type)

# Make update call
updated_cluster_resource_name = vertex_ray.update_ray_cluster(
 cluster_resource_name=cluster_resource_name,
 worker_node_types=new_worker_node_types,
)

控制台

  1. 前往 Google Cloud 控制台的 Ray on Vertex AI 頁面。

    前往「Ray on Vertex AI」頁面

  2. 在叢集清單中,按一下要修改的叢集。

  3. 在「叢集詳細資料」頁面中,按一下「編輯叢集」

  4. 在「編輯叢集」窗格中,選取要更新的工作站集區,然後修改副本數量。

  5. 按一下「更新」

    請稍候幾分鐘,等待叢集更新。更新完成後,您可以在「叢集詳細資料」頁面查看更新後的副本數量。

  6. 點選「建立」