Python/ray

Ray 개요 :: 파이썬 기반 분산 컴퓨팅

검정비니 2024. 2. 11. 00:16
728x90
반응형

Ray는 파이썬 데이터 과학 커뮤니티를 위해서 만든 유연한 분산 컴퓨팅 프레임워크이다.

Ray는 간결한 구조를 바탕으로 분산 프로그램을 효율적으로 작성 가능하다.

노트북에서 Ray를 사용하면 파이썬 프로그램을 효율적으로 병렬화하고, 로컬에서 테스트한 코드를 변경 없이도 클러스터에서 실행한다.

 

Ray Core(Ray의 기본 API)는 C++로 개발되었으나, 애초에 파이썬을 위한 프레임워크이며 자바를 비롯한 여러 언어를 바인딩하도록 설계되었다.

Ray가 데이터 과학 생태계에 여러 중요한 언어를 지원하기 때문에 데이터 과학자들 및 엔지니어들이 더 쉽게 효율적인 분산 데이터 처리 파이프라인 및 엔진을 구축할 수 있도록 큰 기여를 했다는 점은 부정할 수 없는 사실이다.

 

알다시피, 분산 컴퓨팅은 매우 어렵다는 인식이 널리 퍼진 분야이다.

개별 시스템과 상호 운용 방식에 대해서 계속 고려하지 않고 클러스터에서 코드를 실행할 좋은 추상화를 찾는 것이 얼마나 어려운지는 직접 해당 작업에 뛰어들어본 사람들이라면 누구나 공감할 수 있는 부분일 것이다.

Ray는 이러한 문제를 해결하기 위해 UC Buckeley의 RISELab에서 만든 프레임워크로, 분산 처리를 해야 하는 로직 자체에는 신경쓰지 않고 분산해서 처리해야 하는 작업 자체의 분산 방법을 관리하는 시스템을 만드는 것에 집중하면서 현재와 같이 놀라운 툴로 발전하게 되었다.

 

Ray의 디자인 철학은 단순하고 일반성을 가지는 API에 높은 유연성을 목표로하고 있으며, Ray의 시스템 아키텍처는 성능과 확장성을 위해 설계되었다. Ray의 파이써닉(pythonic)한 API는 높은 수준의 추상화를 통해 단순하면서도 강건한 기능을 제공하며, 오픈소스 기반의 프로젝트 특성에 의해 집단지성의 힘을 입어 다양한 문제들을 해결하면서 꾸준히 발전을 해왔다.

 

분산 시스템의 속도가 빨라지려면 뛰어난 확장성을 가져야 하는데, Ray는 효율적으로 작업을 분산시키고 스케줄링을 하는 것을 가능하게 한다.

 

Ray는 사용 목적에 따라 여러 추가 라이브러리들을 추가하면서 기능을 확장할 수가 있다.

예를 들어, 분산 학습을 위한 기능을 제공하는 Ray-Train은 Microsoft의 DeepSpeed나 HuggingFace의 accelerate 등의 고성능 라이브러리와 함께 더 강건하고 빠른 분산 학습 환경을 구축할 수 있게 한다.

또한, Ray-rllib은 분산 컴퓨팅 기반의 강화학습 환경을 쉽게 구축할 수 있다.

Ray-Serve는 분산컴퓨팅 기반의 머신러닝 모델 서빙을 가능하게 하기에 MLOps에서 핵심적인 라이브러리로 꼽힌다.

Ray-AIR는 Ray 라이브러리끼리 연결하고 일반적인 AI 워크로드를 처리하기 위한 일관된 프레임워크를 제공하는 도구이다.

 

반응형