在 Gemini Enterprise Agent Platform 上擴充 Ray 叢集

Gemini Enterprise Agent Platform 的 Ray 叢集提供兩種擴充選項:自動調度資源和手動調度資源。自動調度資源功能可讓叢集根據 Ray 工作和 actor 所需的資源,自動調整 worker 節點數量。如果您執行繁重的工作負載,但不確定所需的資源,建議使用自動調度資源功能。手動調度資源可讓使用者更精細地控管節點。

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

自動調度資源

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

注意事項:

  • 設定所有 worker 集區的自動調度資源規格。
  • 不支援自訂向上和向下調整速度。如要瞭解預設值,請參閱 Ray 說明文件中的「向上和向下調整資源配置的速度」。

設定 worker 集區自動調度資源規格

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

Ray on Agent Platform 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 Gemini Enterprise Agent Platform
CLUSTER_RESOURCE_NAME = vertex_ray.create_ray_cluster(
head_node_type=head_node_type,
worker_node_types=worker_node_types,
...
)

控制台

根據 OSS Ray 最佳做法建議,Ray head 節點的邏輯 CPU 數量必須設為 0,以免在 head 節點上執行任何工作負載。

  1. 前往 Google Cloud 控制台的「Ray on Agent Platform」頁面。

    前往 Ray on Agent Platform 頁面

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

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

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

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

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

  4. 點選「建立」。

手動調整資源配置

Gemini Enterprise Agent Platform 的 Ray 叢集工作負載增減時,您可以手動調整副本數量,舉例來說,如果容量過剩,可以縮減 worker 集區來節省費用。

虛擬私有雲對接的限制

縮放叢集時,您只能變更現有 worker 集區中的副本數量。例如,您無法在叢集中新增或移除 worker 集區,也無法變更 worker 集區的機器類型。此外,worker 集區的副本數量不得少於一個。

如果您使用虛擬私有雲對等互連連線連至叢集,節點數量上限會受到限制。節點數量上限取決於叢集建立時的節點數量。詳情請參閱「節點數量上限計算」。這個數量上限不只包含 worker 集區,也包含頭節點。如果使用預設網路設定,節點數量不得超過建立叢集說明文件所述的上限。

子網路分配最佳做法

使用私人服務存取權 (PSA) 在 Gemini Enterprise Agent Platform 部署 Ray 時,請務必確保分配的 IP 位址範圍夠大且連續,足以容納叢集可能擴充到的最大節點數。如果為 PSA 連線保留的 IP 範圍過小或分散,可能會導致 IP 耗盡,進而造成部署作業失敗。

建議您改用 Private Service Connect 介面,在 Agent Platform 上部署 Ray,將 IP 消耗量減少至 /28 子網路。

私人服務存取權監控

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

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

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

  • PSA 範圍使用率:網路分析器會主動追蹤您為 PSA 分配的專用 CIDR 區塊中,IP 位址的分配百分比。這點很重要,因為建立代管服務 (例如 Agent Platform) 時,Google 會建立服務生產者虛擬私有雲和子網路,並從您分配的區塊中提取 IP 範圍。

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

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

如果是 Ray on Agent Platform 部署作業,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 Agent Platform 叢集可擴充的節點總數上限 (M),取決於您設定的初始節點總數 (N)。建立 Ray on Agent Platform 叢集後,您可以將節點總數擴充至 P 到 M 之間的任何數量 (含 P 和 M),其中 P 是叢集中的集區數量。

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

初始和調整後的節點數量關係圖

更新副本數量

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

Ray on Agent Platform 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 Agent Platform」頁面。

    前往 Ray on Agent Platform 頁面

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

  3. 在「Cluster details」(叢集詳細資料) 頁面中,按一下「Edit cluster」(編輯叢集)。

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

  5. 按一下「Update」。

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

  6. 點選「建立」。