레이 오브젝트 스토어

IT 위키

레이 오브젝트 스토어는 Ray에서 분산된 객체 데이터를 저장하고 공유하기 위한 메모리 기반 저장소이다.

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

Ray의 오브젝트 스토어는 Plasma를 기반으로 구현되었으며, 각 노드에 로컬 저장소가 존재하지만, 클러스터 전체에서 논리적으로 연결되어 하나의 분산 캐시처럼 동작한다. Remote 함수나 액터 메서드의 결과값은 이 오브젝트 스토어에 저장되며, ObjectRef를 통해 참조된다.

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

  • 모든 객체는 불변(immutable)이며, 직렬화되어 저장된다.
  • 각 노드는 자체 오브젝트 스토어를 가지며, 객체는 요청이 있을 때 다른 노드로 전송된다.
  • 객체는 수동 복제가 아닌 요청 기반 복사를 통해 전파된다.
  • Ray는 참조 횟수를 추적하여 더 이상 필요하지 않은 객체를 자동으로 제거한다.
  • 객체 크기가 작을 경우 인라인으로 직접 반환되고, 클 경우 오브젝트 스토어에 저장된다.

3 주요 기능[편집 | 원본 편집]

  • Remote 함수와 액터의 반환값 또는 인자로 사용되는 객체 저장
  • `ray.put()`을 통해 직접 객체를 저장하고 ObjectRef를 생성할 수 있음
  • 다른 노드가 객체를 필요로 하면 원 소유자에게 요청하여 복사
  • 메모리 부족 시 가비지 컬렉션 또는 디스크로 스필링 수행

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

import ray
ray.init()

data = [1, 2, 3]
obj_ref = ray.put(data)
result = ray.get(obj_ref)

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

  • 소유자 노드가 소실되면 해당 객체도 손실된다.
  • 모든 복사본이 존재하는 노드가 사라진 경우에도 객체가 소실되며, ObjectLostError가 발생한다.
  • 객체 재구성이 가능할 경우, lineage 정보를 기반으로 자동 재생성할 수 있다.

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

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

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

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