IT용어위키


레이 리모트 함수

레이 리모트 함수는 Ray에서 분산 비동기 처리를 위해 사용하는 기본 실행 단위이다.

개요

리모트 함수(Remote Function)는 `@ray.remote` 데코레이터를 통해 정의되며, 클러스터의 여러 노드에서 병렬로 실행될 수 있는 비동기 태스크를 생성한다. 함수 호출 시 결과값이 즉시 반환되는 대신, 미래 결과를 참조하는 ObjectRef 객체가 반환되며, `ray.get()`을 통해 최종 값을 가져올 수 있다.

특징

  • 함수 호출 시 즉시 ObjectRef 반환
  • 비동기 실행을 통해 병렬 처리 가능
  • 클러스터 자원 상황에 따라 실행 노드가 자동으로 결정됨
  • 작은 결과는 직접 반환되며, 큰 결과는 객체 저장소에 저장됨
  • `@ray.remote(max_retries=n)`으로 자동 재시도 횟수 지정 가능

실행 과정

1. 사용자가 remote 함수를 호출하면 ObjectRef가 반환된다. 2. 호출자는 해당 작업의 소유자가 되며, 의존성 객체가 준비될 때까지 대기한다. 3. 준비 완료 시 Ray 스케줄러가 적절한 노드에 자원을 할당한다. 4. 작업 명세는 gRPC를 통해 워커에게 전달된다. 5. 작업이 실행되고 결과는 object store에 저장되며 ObjectRef와 연결된다.

예시

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]

장애 허용

  • 응용 수준 오류: 예외가 결과로 반환되며 자동 재시도되지 않음
  • 시스템 수준 오류: 워커 프로세스 장애 등의 경우 최대 설정 횟수만큼 자동 재시도됨

같이 보기

참고 문헌

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

각주


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

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