레이 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