레이 ObjectRef

IT 위키

레이 ObjectRef는 Ray에서 원격 함수 또는 액터 호출의 결과를 참조하기 위한 객체 참조자이다.

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

ObjectRef는 Ray에서 분산 비동기 실행을 지원하기 위해 사용하는 참조 메커니즘이다. remote 함수나 액터 메서드를 호출하면 즉시 결과값이 반환되는 것이 아니라, 해당 결과를 가리키는 ObjectRef 객체가 반환된다. ObjectRef는 작업이 완료되었을 때 결과를 가져올 수 있도록 연결된 참조 역할을 한다.

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

  • 비동기 실행 결과를 지연 참조(lazy reference)할 수 있다.
  • Ray 클러스터 내 객체의 위치를 추적할 수 있는 메타데이터를 포함한다.
  • `ray.get(ObjectRef)`를 호출하면 해당 결과를 가져온다.
  • 하나의 객체는 여러 ObjectRef를 통해 참조될 수 있다.

3 생성 방식[편집 | 원본 편집]

  • Remote 함수 또는 액터 메서드 호출 시 자동 생성된다.
  • ray.put()을 통해 명시적으로 객체를 저장하고 ObjectRef를 생성할 수도 있다.
import ray
ray.init()

@ray.remote
def f(x):
    return x + 1

obj_ref = f.remote(10)
result = ray.get(obj_ref)  # result = 11

4 내부 동작[편집 | 원본 편집]

  • ObjectRef는 고유 식별자(ID)를 통해 Ray의 객체 저장소에 저장된 데이터를 가리킨다.
  • 소유자(owner)는 ObjectRef의 수명 주기를 관리하며, 참조 카운트를 통해 자동 메모리 해제(GC)가 이루어진다.
  • 참조된 객체가 다른 노드에 있을 경우, Ray는 소유자로부터 복사 정보를 받아와 로컬 노드에 복제한다.

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

  • 소유자 노드가 사라질 경우, ObjectRef도 함께 소실될 수 있다.
  • 객체가 저장된 모든 노드가 사라지면, ObjectLostError가 발생한다.
  • GCS에 저장된 작업 계보(lineage)를 통해 객체 재생성(reconstruction)이 가능한 경우도 있다.

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

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

  • Moritz, Philipp et al. Ray: A Distributed Framework for Emerging AI Applications. OSDI 2018.
  • Ray Team. Object References in Ray. https://docs.ray.io

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