레이 리모트 함수
IT 위키
레이 리모트 함수는 Ray에서 분산 비동기 처리를 위해 사용하는 기본 실행 단위이다.
1 개요[편집 | 원본 편집]
리모트 함수(Remote Function)는 `@ray.remote` 데코레이터를 통해 정의되며, 클러스터의 여러 노드에서 병렬로 실행될 수 있는 비동기 태스크를 생성한다. 함수 호출 시 결과값이 즉시 반환되는 대신, 미래 결과를 참조하는 ObjectRef 객체가 반환되며, `ray.get()`을 통해 최종 값을 가져올 수 있다.
2 특징[편집 | 원본 편집]
- 함수 호출 시 즉시 ObjectRef 반환
- 비동기 실행을 통해 병렬 처리 가능
- 클러스터 자원 상황에 따라 실행 노드가 자동으로 결정됨
- 작은 결과는 직접 반환되며, 큰 결과는 객체 저장소에 저장됨
- `@ray.remote(max_retries=n)`으로 자동 재시도 횟수 지정 가능
3 실행 과정[편집 | 원본 편집]
1. 사용자가 remote 함수를 호출하면 ObjectRef가 반환된다. 2. 호출자는 해당 작업의 소유자가 되며, 의존성 객체가 준비될 때까지 대기한다. 3. 준비 완료 시 Ray 스케줄러가 적절한 노드에 자원을 할당한다. 4. 작업 명세는 gRPC를 통해 워커에게 전달된다. 5. 작업이 실행되고 결과는 object store에 저장되며 ObjectRef와 연결된다.
4 예시[편집 | 원본 편집]
import ray
ray.init()
@ray.remote
def square(x):
return x * x
futures = [square.remote(i) for i in range(4)]
print(ray.get(futures)) # [0, 1, 4, 9]
5 장애 허용[편집 | 원본 편집]
- 응용 수준 오류: 예외가 결과로 반환되며 자동 재시도되지 않음
- 시스템 수준 오류: 워커 프로세스 장애 등의 경우 최대 설정 횟수만큼 자동 재시도됨
6 같이 보기[편집 | 원본 편집]
7 참고 문헌[편집 | 원본 편집]
- Moritz, Philipp et al. Ray: A Distributed Framework for Emerging AI Applications. OSDI 2018.
- Ray Documentation. Remote Functions. https://docs.ray.io