Search

Ray Core

대분류
프레임워크
소분류
Ray
유형
벡터
분산 컴퓨팅
모듈 분류
Ray Core
최종 편집 일시
2024/10/27 15:25
생성 일시
2024/09/12 02:25
14 more properties

Ray Core

분산 애플리케이션을 빌드하고 확장하기 위한 소수의 핵심 기본 요소(예: 작업, 액터, 객체)를 제공

핵심 개념

Task

Ray는 임의의 함수를 별도의 Python Workers에서 비동기적으로 실행할 수 있도록 함
Python Worker : 병렬 처리나 멀티스레딩을 통해 작업을 동시에 수행하는 작업 단위 ex) 프로세스, 스레드
여기서 이러한 비동기 Ray 함수를 ‘Task’라고 함

Actor

Ray API를 함수(Task)에서 클래스로 확장한 것
인스턴스화가 된다면 새 Worker가 생성되고 Actor의 메서드가 해당 특정 Worker에 예약되고 해당 Worker의 상태에 Access하여 변경 가능

(Remote) Objects

Task과 Actor는 객체를 생성하고 계산
이러한 객체를 원격 객체(Remote Object)라고 부름
Ray 클러스터의 어디에나 저장할 수 있고 객체 참조를 사용하여 참조하기 때문
원격 객체는 Ray의 분산 공유 메모리 객체 저장소 에 캐시되며 클러스터의 노드당 하나의 객체 저장소가 있음

Placement Groups

사용자가 여러 노드에서 리소스 그룹을 원자적으로 예약 가능
Ray Task 및 Actor를 지역성을 위해 최대한 가깝게 패킹(Pack)하거나 분산(Spread)하는데 사용 가능
패킹 : 여러 개를 하나로 묶는 것

Environment Dependencies

원격 컴퓨터에서 Task 및 Actor를 실행할 때 해당 환경 종속성(예: Python 패키지, 로컬 파일, 환경 변수)은 코드를 실행하는 데 사용할 수 있어야 한다.

초기 시작

import ray ray.init() # ray를 가져와서 초기화
Python
복사
Ray의 최신 버전(>=1.5)에서는 ray.init()이 Ray 원격 API를 처음 사용할 때 자동으로 호출

Task

클러스터에서 원격 작업으로 함수를 실행 가능
원격 호출을 하여 Future, Ray Object Ref를 반환
# Task 설정 @ray.remote def square(x): return x * x # Task 범위 지정 futures = [square.remote(i) for i in range(4)] # 결과 print(ray.get(futures)) # -> [0, 1, 4, 9]
Python
복사

Actor 호출

여러 Actor 인스턴스에서 계산을 병렬화
# Actor 설정 @ray.remote class Counter: def __init__(self): self.i = 0 def get(self): return self.i def incr(self, value): self.i += value # 인스턴스 생성 actor.c = Counter.remote() # Actor 호출 # 비동기적으로 실행 # 원격 Actor Process에서 for _ in range(10): c.incr.remote(1) # Retrieve final actor state. print(ray.get(c.get.remote())) # -> 10
Python
복사

핵심 API

기존 Ray 클러스터에 연결하거나 Ray 클러스터를 시작하여 연결
워커의 연결을 끊고 ray.init()로 시작된 프로세스 종료
ray.init가 호출되었는지 확인
작업 구성을 저장하는 데 사용되는 클래스
Ray 작업에 대한 로깅 구성

Task

원격 함수나 액터 클래스 정의
작업 호출 매개변수 구성 및 재정의
작업 취소

Actor

원격 함수나 액터 클래스를 정의
액터 인스턴스화 매개변수를 구성하고 재정의
액터 메서드 주석
Actor의 핸들 얻기
Actor 강제 종료

객체 (Object Ref)

객체 저장소에서 원격 객체나 원격 객체 목록을 가져옴
준비된 ID 목록과 준비되지 않은 ID 목록을 반환
객체 저장소에 객체 저장

Runtime Context

현재 드라이버/워커의 런타임 컨텍스트를 가져옴
런타임 컨텍스트를 얻는 데 사용되는 클래스
작업자가 사용할 수 있는 GPU의 ID를 가져옴