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

子網路分配最佳做法

使用私有服務存取 (PSA) 在 Vertex AI 上部署 Ray 時,請務必確保分配的 IP 位址範圍夠大且連續,可容納叢集可能擴充的最大節點數。如果為 PSA 連線保留的 IP 範圍過小或過於分散,就可能發生 IP 耗盡的情況,導致部署失敗。

或者,建議您透過 Private Service Connect 介面在 Vertex AI 上部署 Ray,將 IP 用量降至 /28 子網路。

私人服務存取權監控

最佳做法是使用網路分析器,這是 Google Cloud Network Intelligence Center 中的診斷工具,可自動監控虛擬私有雲 (VPC) 網路設定,偵測錯誤和不盡理想的設定。網路分析器會持續運作,主動執行測試並產生洞察資料,協助您找出、診斷及解決網路問題,避免影響服務可用性。

網路分析器可監控用於私人服務存取權 (PSA) 的子網路,並提供相關的深入分析。這項功能對於管理使用 PSA 的服務 (例如 Cloud SQL、Memorystore 和 Vertex AI) 至關重要。

網路分析器監控 PSA 子網路的主要方式,是提供已分配範圍的 IP 位址使用率洞察資料。

  • PSA 範圍使用率:網路分析器會主動追蹤您為 PSA 分配的專屬 CIDR 區塊中,IP 位址的分配百分比。這項作業非常重要,因為當您建立代管服務 (例如 Vertex AI) 時,Google 會建立服務供應商虛擬私有雲,並在其中建立子網路,從您分配的區塊中提取 IP 範圍。

  • 主動式快訊:如果 PSA 分配範圍的 IP 位址使用率超過特定門檻 (例如 75%),網路分析器就會產生警告洞察資訊。這項功能會主動提醒您潛在的容量問題,讓您有時間擴充分配的 IP 範圍,以免新服務資源的可用位址用盡。

更新私人服務存取權子網路

如果是 Ray on Vertex AI 部署作業,Google 建議為 PSA 連線分配 /16 或 /17 CIDR 區塊。這會提供足夠大的連續 IP 位址區塊,支援大幅擴充,分別可容納最多 65,536 個或 32,768 個不重複的 IP 位址。即使是大型 Ray 叢集,也能避免 IP 位址耗盡。

如果分配的 IP 位址空間用盡,系統會 Google Cloud 傳回這項錯誤:

無法建立子網路。無法在已分配的 IP 範圍中找到可用區塊。

建議您擴充目前的子網路範圍,或分配可因應未來成長的範圍

節點數量上限計算

如果您使用私人服務存取權 (虛擬私有雲對等互連) 連線至節點,請使用下列公式檢查您是否未超過節點數量上限 (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. 按一下「Update」

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

  6. 點選「建立」