IT용어위키


레이 리모트 액터

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

개요

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

특징

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

예시

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

동작 방식

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

장애 허용

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

같이 보기

참고 문헌

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

각주


  출처: IT위키 (IT위키에서 최신 문서 보기)

  * 본 페이지는 IT Wiki에서 미러링된 페이지입니다. 일부 오류나 표현의 누락이 있을 수 있습니다. 원본 문서는 IT Wiki에서 확인하세요!