레이 리모트 액터

IT 위키

레이 리모트 액터는 상태를 유지하는 객체를 분산 환경에서 실행할 수 있도록 지원하는 Ray의 실행 단위이다.

1 개요[편집 | 원본 편집]

Remote Actor는 @ray.remote 데코레이터가 붙은 클래스이며, 각 인스턴스는 클러스터 내의 단일 워커 프로세스로 생성된다. 일반 remote 함수와 달리 액터는 내부 상태를 유지할 수 있으며, 메서드 호출은 비동기적으로 실행되고 ObjectRef를 반환한다. 액터는 순차적으로 메시지를 처리하여 상태 충돌 없이 일관성을 유지한다.

2 특징[편집 | 원본 편집]

  • 상태(state)를 유지할 수 있음
  • 하나의 액터는 하나의 워커 프로세스에서 실행됨
  • 메서드 호출은 remote 함수처럼 ObjectRef를 반환
  • 모든 메서드 호출은 직렬화되어 순차적으로 실행됨
  • 액터 풀을 통해 병렬 처리 가능

3 예시[편집 | 원본 편집]

import ray
ray.init()

@ray.remote
class Counter:
    def __init__(self):
        self.n = 0

    def increment(self):
        self.n += 1

    def read(self):
        return self.n

counter = Counter.remote()
counter.increment.remote()
print(ray.get(counter.read.remote()))  # 출력: 1

4 동작 방식[편집 | 원본 편집]

  • 액터는 생성 시 GCS에 등록되며, 메타데이터(IP, 포트 등)가 저장된다.
  • 이후 메서드 호출은 gRPC를 통해 액터 프로세스에 직접 전달된다.
  • 액터 생성 요청은 먼저 Actor Creation Task로 등록되고, 완료 전이라도 핸들은 반환된다.
  • 자원 할당은 액터 생성 시 수행되며, 메서드 호출 시에는 별도 자원 할당이 필요 없다.

5 장애 허용[편집 | 원본 편집]

  • 액터는 상태를 가지므로 복구가 복잡하다.
  • 메시지 처리 중 실패: 자동 재시도되지 않음
  • 메시지 처리 전/후 실패: 최대 max_restarts 또는 max_retries`횟수까지 자동 복구 가능
  • 초기화 실패는 첫 번째 메시지 실패로 간주됨

6 같이 보기[편집 | 원본 편집]

7 참고 문헌[편집 | 원본 편집]

  • Moritz, Philipp et al. Ray: A Distributed Framework for Emerging AI Applications. OSDI 2018.
  • Ray Documentation. Actors. https://docs.ray.io

8 각주[편집 | 원본 편집]