Vertex AI 기반 Ray 클러스터 확장

Vertex AI에서 Ray 클러스터를 확장하는 방법에는 자동 확장수동 확장이라는 두 가지 옵션이 있습니다. 자동 확장을 사용하면 클러스터가 예를 들어 Ray 작업 및 행위에 필요한 리소스를 기반으로 워커 노드 수를 자동으로 조정할 수 있습니다. 워크로드가 많고 필요한 리소스가 확실하지 않은 경우 자동 확장이 권장됩니다. 수동 확장을 사용하면 노드를 더 세부적으로 제어할 수 있습니다.

자동 확장은 워크로드 비용을 줄일 수 있지만 노드 실행 오버헤드를 추가하며 구성하기가 까다로울 수 있습니다. Ray를 처음 사용하는 경우 자동 확장 처리가 아닌 클러스터로 시작하고 수동 확장 기능을 사용하는 것이 좋습니다.

자동 확장

워커 풀의 최소 복제본 수(min_replica_count) 및 최대 복제본 수(max_replica_count)를 지정하여 Ray 클러스터의 자동 확장 기능을 사용 설정할 수 있습니다.

다음 사항을 참고하세요.

  • 모든 작업자 풀의 자동 확장 사양을 구성해야 합니다.
  • min_replica_count1 이상이어야 합니다.
  • 커스텀 업스케일링 및 다운스케일링 속도는 지원되지 않습니다. 기본값은 Ray 문서의 업스케일링 및 다운스케일링 속도를 참조하세요.

작업자 풀 자동 확장 사양 설정

Google Cloud 콘솔 또는 Vertex AI SDK for Python를 사용하여 Ray 클러스터의 자동 확장 기능을 사용 설정할 수 있습니다.

Vertex AI SDK의 Ray

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 콘솔에서 Vertex AI의 Ray 페이지로 이동합니다.

    Vertex AI의 Ray 페이지로 이동

  2. 클러스터 만들기를 클릭하여 클러스터 만들기 패널을 엽니다.

  3. 클러스터 만들기 패널의 각 단계에서 기본 클러스터 정보를 검토하거나 바꿉니다. 계속을 클릭하여 각 단계를 완료합니다.

    1. 이름 및 리전에서 이름을 지정하고 클러스터의 위치를 선택합니다.
    2. 컴퓨팅 설정에서 머신 유형, 가속기 유형 및 수, 디스크 유형 및 크기, 복제본 수를 포함하여 헤드 노드에서 Ray 클러스터의 구성을 지정합니다. 원하는 경우 커스텀 이미지 URI를 추가하여 커스텀 컨테이너 이미지를 지정하여 기본 컨테이너 이미지에서 제공하지 않는 Python 종속 항목을 추가할 수 있습니다. 커스텀 이미지를 참조하세요.

      고급 옵션에서 다음 작업을 할 수 있습니다.

      • 자체 암호화 키를 지정합니다.
      • 커스텀 서비스 계정을 지정합니다.
      • 학습 중에 워크로드의 리소스 통계를 모니터링할 필요가 없는 경우 측정항목 수집을 사용 중지합니다.
    3. 자동 확장 작업자 풀이 있는 클러스터를 만들려면 작업자 풀의 최대 복제본 수를 지정합니다. autoscaling-compute-settings

  4. 만들기를 클릭합니다.

수동 확장

Vertex AI 기반 Ray 클러스터에서 워크로드가 급증하거나 감소하면 수요에 맞게 복제본 수를 수동으로 확장할 수 있습니다. 예를 들어 용량이 초과된 경우 작업자 풀을 축소하여 비용을 절감합니다.

제한사항

클러스터를 확장할 때 기존 작업자 풀의 복제본 수만 변경할 수 있습니다. 예를 들어 클러스터에서 작업자 풀을 추가 또는 삭제하거나 작업자 풀의 머신 유형을 변경할 수 없습니다. 또한 작업자 풀의 복제본 수가 1개 이상이어야 합니다.

VPC 피어링 연결을 사용하여 클러스터에 연결하는 경우 최대 노드 수에 제한이 있습니다. 최대 노드 수는 클러스터 생성 시의 노드 수에 따라 다릅니다. 자세한 내용은 최대 노드 수 계산을 참조하세요. 이 최대 수에는 작업자 풀뿐만 아니라 헤드 노드도 포함됩니다. 기본값 네트워크 구성을 사용하는 경우 노드 수는 클러스터 만들기 문서에 설명된 상한값을 초과할 수 없습니다.

최대 노드 수 계산

비공개 서비스 액세스(VPC 피어링)를 사용하여 노드에 연결하는 경우, f(x) = min(29, (32 - ceiling(log2(x)))라고 가정하고 다음 수식을 사용하여 최대 노드 수(M)를 초과하지 않는지 확인하세요.

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

수직 확장할 수 있는 Vertex AI 기반 Ray 클러스터의 최대 총 노드 수(M)는 설정한 초기 총 노드 수(N)에 따라 다릅니다. Vertex AI 기반 Ray 클러스터를 만든 후 총 노드 수를 P에서 M(포함) 사이의 값으로 확장할 수 있습니다. 여기서 P는 클러스터의 풀 수입니다.

클러스터의 초기 총 노드 수와 확장 대상 수는 동일한 색상 블록이어야 합니다.

노드 수

복제본 수 업데이트

Google Cloud 콘솔 또는 Vertex AI SDK for Python을 사용하여 작업자 풀의 복제본 수를 업데이트할 수 있습니다. 클러스터에 여러 작업자 풀이 포함된 경우 단일 요청에서 각 복제본 수를 개별적으로 변경할 수 있습니다.

Vertex AI SDK의 Ray

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 콘솔에서 Vertex AI의 Ray 페이지로 이동합니다.

    Vertex AI 기반 Ray 페이지로 이동

  2. 클러스터 목록에서 수정할 클러스터를 클릭합니다.

  3. 클러스터 세부정보 페이지에서 클러스터 수정을 클릭합니다.

  4. 클러스터 수정 창에서 업데이트할 작업자 풀을 선택한 다음 복제본 수를 수정합니다.

  5. 업데이트를 클릭합니다.

    클러스터가 업데이트될 때까지 몇 분 정도 기다립니다. 업데이트가 완료되면 클러스터 세부정보 페이지에서 업데이트된 복제본 수를 확인할 수 있습니다.

  6. 만들기를 클릭합니다.