메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

파이썬 분산 컴퓨팅 프레임워크, Ray는 무엇인가?

한빛미디어

|

2024-02-15

|

by 에드워드 옥스 외 2인

5,854

다양한 데이터를 더 빠른 속도로 수집해야 하는 시대입니다. 어느 때보다 효율적인 분산 컴퓨팅이 필요하죠. 

 

지난 10년간 등장한 스토리지 시스템, 데이터 처리 및 분석 엔진은 많은 기업이 성공하는 데 중요한 요소가 되었습니다. 빅데이터 기술의 대부분은 데이터 수집 및 처리를 담당하는 엔지니어를 위해 구축되고 운영됩니다. 데이터 과학자가 가장 잘하는 일을 하도록 하기 위함입니다. 어떤 데이터 과학자는 복잡한 머신러닝 모델을 학습시키고, 효율적인 하이퍼파라미터를 선택하면서 완전히 새로운 커스텀 모델 혹은 시뮬레이션을 구축하거나 모델을 서빙serve하는 데 집중하고 싶어합니다. 

 

동시에 컴퓨팅 클러스터에서 다양한 워크로드를 확장하는 건 필수적일 수도 있습니다. 이를 위해서는 선택한 분산 시스템이 세세한 ‘빅 컴퓨팅’ 작업을 모두 지원해야 하며 특수 하드웨어 위에서도 작동해야 합니다. 이상적으로는 빅데이터 툴킷을 지원하며 레이턴시 요구 사항을 충족하는 빠른 속도를 가져야 합니다. 즉, 분산 컴퓨팅은 복잡한 데이터 과학 작업에 충분히 강력하고 유연해야 합니다. 레이는 그런 면에 도움이 되죠.

 

오늘날 데이터 과학에서 가장 인기 있는 프로그래밍 언어는 아마 파이썬일 겁니다. 파이썬은 일상적으로 사용하는 언어로, 30년 이상의 역사와 계속해서 성장 중인 활발한 커뮤니티를 가지고 있습니다. PyData는 데이터 과학자의 필수적인 툴킷으로 풍부한 생태계를 제공합니다. 필요한 도구를 그대로 사용하면서 워크로드를 스케일 아웃 할 방법이 있을까요? 특히 커뮤니티가 활발한 기존 도구나 프로그래밍 언어는 더욱 쉽게 포기하기 어렵습니다. 데이터 과학을 위한 분산 컴퓨팅 도구도 기존 커뮤니티가 그대로 활용하도록 만들어져야 한다는 이야기입니다. 

 

 

레이는 무엇인가? 

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

 

레이는 시작하기 쉽습니다. 핵심 API는 매우 간결하며, 이를 통해 분산 프로그램을 효율적으로 작성할 수 있죠. 노트북에서 레이를 사용하면 파이썬 프로그램을 효율적으로 병렬화하고 로컬에서 테스트한 코드를 변경 없이도 클러스터에서 실행합니다. 레이의 하이레벨 라이브러리는 구성하기 쉽고 사용하기 편합니다. 레이의 강화학습 라이브러리를 비롯한 일부 라이브러리는 분산 컴퓨팅에 관계없이 훌륭해 하나만 사용해도 충분합니다. 레이의 코어는 C+ +로 개발되었으나 애초에 파이썬을 위한 프레임워크이며 자바를 비롯한 여러 언어를 바인딩하도록 설계되었습니다. 레이가 데이터 과학 생태계에 여러 중요한 언어를 지원한다는 뜻입니다. 레이는 중요한 데이터 과학 도구들과 통합해 성장하는 생태계의 지원을 받을 수 있습니다. 

 

또한 레이가 첫 번째 파이썬 분산 컴퓨팅 프레임워크는 아니지만(아마 마지막도 아니겠지만) 매우 특별합니다. 레이는 여러 모듈을 결합하고 다른 방법으로는 구현하기 어려운 커스텀 머신러닝 중심 워크로드가 있을 때 특히 강력합니다. 이미 아는 파이썬 도구를 그대로 사용해서 복잡한 워크로드를 유연하게 실행할 정도로 분산 컴퓨팅을 쉽게 만듭 니다. 즉, 레이를 배우면 머신러닝을 위한 유연한 분산 파이썬을 사용하는 셈입니다. 

 

 

레이가 추구하는 목적

 

분산 시스템 프로그래밍은 어렵습니다. 여러분이 모르는 지식과 경험이 필요할 수도 있죠. 이상적인 시스템은 여러분이 필요한 일에만 집중할 수 있도록 추상화를 제공해야 하지만 조엘 스폴스키Joel Spolsky의 말처럼 “명확하지 않은 추상화는 어느 정도 누수가 있기 마련”이며, 컴퓨터 클러스터가 사용자가 원하는 대로 작동하게 하는 건 정말 어렵습니다. 

 

많은 소프트웨어 시스템은 단일 서버의 한계를 훨씬 초과하는 리소스를 필요로 합니다. 서버 하나로 충분히 작동할지라도, 최신 시스템은 장애에 대응failsafe하고, 고가용성을 가져야 합니다. 즉, 애플리케이션은 여러 시스템이나 데이터 센터에서 실행할 만큼 신뢰를 갖춰야 합니다. 

 

알파폴드(AlphaFold)의 주요 신경망 모델 아키텍처 (출처: 딥마인드 블로그)

머신러닝(ML)이나 인공지능(AI)에 대해서 잘 알지 못하더라도, 최근에 크게 발전 중인 분야라는 이야기는 들으셨을 겁니다. 최근 많은 관심을 끈 2가지 예를 들면, 단백질 접기protein folding 문제를 해결하기 위한 딥마인드의 알파폴드AlphaFold와 소프트웨어 개발자의 지루한 작업을 도와주는 오픈AI의 코덱스Codex같은 시스템이 있습니다.

 

 이와 함께, 머신러닝 시스템은 훈련에 많은 양의 데이터를 사용해야 하며 점점 더 머신러닝 모델이 커지고 있다는 소식도 들었을 겁니다. 오픈AI의 논문인 「AI and Compute」는 AI 모델 훈련에 사용하는 컴퓨팅 기술이 폭발적으로 발전하고 있음을 설명했습니다. 또한, AI 시스템에 필요한 연산 수가 페타 플롭(초당 1000조번의 연산)으로 측정되며 2012년 이후부터 3~4개월 주기로 2배씩 증가하고 있다고 합니다. 

 

이를 컴퓨터의 트랜지스터 수가 2년마다 2배로 증가한다는 무어의 법칙과 비교하겠습니다. 무어의 법칙이 맞다고 해도 머신러닝에서 분산 컴퓨팅은 필요합니다. 또한 많은 머신러닝 작업이 자연스럽게 나눠져서 병렬적으로 실행된다는 점도 이해해야 합니다. 속도를 높여보면 어떨까요? 

Distributed Computing - YouTube
이미지 출처: Distributed Computing (유튜브 채널 0612 TV w/NERDfirst)

분산 컴퓨팅은 어렵다는 인식이 강합니다. 왜 그럴까요? 개별 시스템과 상호 운용 방식에 대해서 계속 고려하지 않고 클러스터에서 코드를 실행할 좋은 추상화를 찾는 게 현실적이지 않을까요? AI 워크로드만 특히 집중한다면 어떨까요?

 

UC 버클리UC Berkeley의 RISELab은 이런 문제를 해결하기 위해 레이를 만들었습니다. RISELab에서는 워크로드를 분산시켜서 가속화하는 효율적인 방법을 탐색했습니다. 하지만 다루던 워크로드가 본질적으로 매우 유연해, 당시 있던 프레임워크로는 적합한 후보가 없었습니다. 그렇게 RISELab은 작업 분산 방법을 관리하는 시스템을 만들기로 합니다. 레이는 연구원이 세부 내용에 상관없이 작업에만 집중하도록 합리적인 기본 작동만을 사용하고, 각자 선호하는 파이썬 도구와 결합하도록 고성능 이종 워크로드에 집중해 구축되었습니다. 

 

 

성장하는 생태계

 

레이 생태계는 데이터 과학 실험의 라이프사이클에서 매우 뛰어나지만 레이가 모든 문제를 해결 한다고 말하려는 건 아닙니다. 훌륭하고 성공적인 프레임워크는 기존 솔루션과 아이디어에 잘 통합되어야 합니다. 도구의 핵심적인 강점에 집중하고 부족한 부분은 다른 도구를 활용하는 게 좋습니다. 레이는 이에 정말 알맞습니다.

 

레이 생태계는 기존 도구와도 많이 통합되어 있습니다. 예를 들어서 레이 데이터셋Ray Datasets은 레이가 제공하는 데이터 로드 및 연산 라이브러리입니다. 스파크Spark 나 다스크Dask 같은 다른 데이터 처리 엔진을 사용했다면 이런 도구를 레이와 함께 사용할 수 있습니다. 특히 다스크 온 레이Dask on Ray 스케줄러를 사용해 레이 클러스터Ray Cluster에서 다스크의 생태계를 사용해 실행하거나 스파크 온 레이Spark on Ray를 사용해 스파크 워크로드를 레이와 통합할 수도 있습니다. 마찬가지로 모딘Modin은 분산 실행 엔진으로 레이를 사용하는 판다스 데이터프레임Pandas DataFrame 의 분산화된 버전입니다. 여기서 중요한 사실은 레이가 이런 도구를 대체하지 않고, 레이 데이터셋 라이브러리에 접근하는 방식으로 통합된다는 점입니다. 

 

레이 라이브러리가 지닌 중요한 장점 중 하나는 모든 공통 도구가 백엔드에서 매끄럽게 통합된다는 점입니다. 레이는 새로운 표준이 아니라 공통 인터페이스를 만드는 경우가 많습니다. 공통 인터페이스를 사용하면 대부분의 백엔드는 제공하지 않는 기능인 분산 방식의 작업이 가능해집니다. 예를 들어 레이RLlib과 레이 트레인은 텐서플로와 파이토치의 모든 기능을 지원합니다. 또한 레이튠은 하이퍼옵트HyperOpt, 옵튜나Optuna, 네버그라드Nevergrad, 액스Ax, 시그옵트SigOpt 등을 포함한 대부분의 인기 있는 HPO 도구의 알고리즘을 지원합니다. 이런 도구는 기본적으로는 분산되지 않지만, 레이 튠에서는 분산 워크로드를 위한 공통 인터페이스 위에서 통합되어 분산 실행을 적용할 수 있습니다.


위 콘텐츠는 『러닝 레이』의 내용을 발췌하여 재구성하였습니다. 

챗GPT를 만드는 데 사용할 정도로 대규모 모델 훈련에 효율적인 라이브러리, Ray(레이)로 빠르게 구현하는 파이썬 분산 처리에 대해 더욱 자세히 알고 싶으시다면 아래 도서를 확인해 보세요.

레이로 빠르게 구현하는 파이선 분산 처리

 『러닝 레이

댓글 입력
자료실

최근 본 책0