Ray란?

  • 버클리 대학 RISE 연구실에서 만들었다
  • 분산 어플리케이션을 만들기 위해 단순하고 범용적인 API를 제공하는 라이브러리
  • 확장 가능한 고성능 분산/병렬 머신러닝 프레임워크
  • 다수의 분산 머신러닝 라이브러리를 보강한다
  • 최소화한 구문 때문에 기존 앱의 많은 부분을 재작업하지 않고도 병렬화가 가능하다. 기존의 코드 변경을 하지 않고 기존의 순차 코드 베이스에서 몇줄의 코드만 추가하여 병렬 처리를 쉽게할 수 있다.
  • 필요에 따라 로컬 하드웨어, 주요 클라우드 컴퓨팅 플랫폼에서 자동으로 노드를 가동할 수 있는 자체 클러스터 관리자도 내장돼 있다.

Ray 서밋 내용:

  • Ray로 게놈 데이터 분석하기 프로젝트
  • 빅데이터 로딩 & 전처리하는 기능이 있다.
  • MLSQL, Spark, Ray 같이 사용하는 방법이 있다 (빅데이터 & AI)

Ray의 분산/병렬 시스템 Ray Core의 장점:

  1. 다수의 컴퓨터에서 동일한 코드를 실행시킬 수 있다.
  2. State of the Art하고 통신 가능한 Microservice 및 Actor를 구축할 수 있다.
  3. 기계 고장 및 시스템 고장을 훌륭하게 처리할 수 있다.
  4.  거대한 데이터와 수치 데이터를 효율적으로 처리할 수 있다.

Ray의 성능:

벤치마크 결과에 따르면 Core의 수가 증가함에 따라서 압도적으로 성능이 향상하는 것을 볼 수 있다. 이 성능 차이는 프로세스간의 객체 전달을 위한 과정에서 발생한다. 또한 48물리 코어를 가지는 환경에서 Ray가 Multiprocessing보다 9배 빠르고, 싱글스레드 환경보다 28배 빠르다.

 

Python Multiprocessing: 

  • 큰 데이터를 다른 프로세스에 전달할때... pickle사용 → 직렬화 → 전달
  • 단점: 모든 프로세스가 데이터에 대한 복사본을 만들어야 한다 → 큰 메모리를 할당한다 → 역직렬화에서 발생하는 큰 오버헤드를 가질 수 밖에 없다.

Ray:

Python Multiprocessing의 문제를 해결하기 위해… 직렬화 오버헤드가 적은 Apache Arrow를 사용한다 → Zero-Copy 직렬화를 수행한다 → 직렬화된 데이터를 In-Memory Object Store인 Plasma를 이용하여 빠르게 공유한다.

 

Ray Core API 정리:



+ Recent posts