얼마 전 한빛미디어에서 출간한 "Learning Ray"라는 책이 눈에 들어와서 읽게되었다.
Ray를 처음들어보았는가? 라고 묻는다면 아니오다.
AI 분야를 오랜기간 공부하며 분산 시스템, 그리고 스케줄링 자동화 등의 중요성을 직접 느끼고 있었으며, 3년도 더 전부터 Ray, Airflow 등에 대해서 공부도 해보고 발을 들여본 상태였다.
이는 아래 사이트에 Ray 프레임워크를 2년도 더 전부터 적어둔것으로 제 관심도를 대변하겠다. https://cpprhtn.github.io/AI-Learning-Guide/AI/
이 책은 실습을 통해 분산 시스템 개념을 엿볼 수 있는 Ray에 대한 실제적인 접근법을 제공한다.
분산 시스템, ML, DL, FastAPI 등의 개념이 책을 읽다보면 나오는데 여기에 대한 이론적 개념들을 자세히 다루지는 않는다.
먼저 머신러닝 파이프라인은 아래와 같이 크게 6단계로 분류 된다.
책에서 Ray를 활용해서 다루는 내용은 데이터 처리(6장), 모델 학습 및 평가(4장, 7장), 하이퍼파라미터 튜닝(5장), 모델 서빙(8장) 순서대로 이루어져 있었다.
책을 읽으면서 느꼈던점이라면 ML pipline 순서에 맞는 목차 배치였다면 조금 더 읽는 흐름이 유연해지지 않았을까라는 생각이 들었다.
책에서 소개하는 Ray 프레임워크 생태계의 일부를 파이프라인 순서에 맞게 조정해서 아래에 간단하게 정리해본다.
Ray Dataset은 Distributed Arrow라는 열 지향 메모리 모델을 기반으로 분산된 데이터를 처리한다.
데이터 처리 작업을 여러 노드 또는 CPU 코어에 분산하여 처리 성능을 향상시킬 수 있다.
ray.tune
은 분산 하이퍼파라미터 튜닝을 위한 도구로, 다양한 하이퍼파라미터 검색 알고리즘을 지원하여 모델의 성능을 향상시킨다.
ray.tune에서는 아래와 같은 특징을 가진다.
머신러닝을 수행하면 때에 따라 많은 양의 연산을 필요로 한다. 여기에 따른 일반적인 문제점들이 몇가지가 있다.
각 모든 상황들에 대해서 병렬화를 통해 해결가능하다.
Ray Train은 Ray에서 분산 데이터 병렬화를 위한 라이브러리다.
기억의 남는 내용이라면, Training 프로세스를 ray.train을 사용하여 분산 훈련을 위한 병렬 프로세스로 쉽게 마이그레이션 할 수 있었다는 내용이다. 예전에 공부했던 기억을 떠올려보면 데코레이션을 사용해서 병렬 프로세스를 끌어다 썼던 것 같았는데, 이번에 책을 읽으며 느낀 최신 버전의 Ray는 라이브러리로 포장이 잘되어있어 사용자가 데코레이션을 쓰지 않더라도 쉽게 병렬화를 적용 할 수 있음을 느꼈다.
분산 시스템과 마찬가지로, 강화학습에 이론에 대한 내용은 많이 생략되어있다. 따라서 강화학습에 대한 선행학습이 없다면, 책에서의 실습을 원활하게 따라가기는 어렵겠다고 느꼈다. 강화학습의 발전과정에서 단일 에이전트에서 다중 에이전트로 넘어가는 추세이며, 책을 따라가다보면 Ray의 RLlib를 통해서 그나마 쉽게(?) 다중 에이전트 학습 환경을 구축하고 진행해볼 수 있다.
Ray Serve는 Ray 프레임워크의 일부로, 확장 가능하고 프로그래밍 가능한 모델 서빙을 위한 라이브러리이다.
만들어진 모델은 온라인으로 서빙하여 사용자가 직간접적으로 사용할 수 있어야하는 레이턴시가 중요한 상황에서는, 단순히 백그라운드에서 모델을 돌리는 정도로는 이 문제를 해결할 수 없다.
이 책에서는 Ray Serve를 사용하여 여러 자연어 처리 모델로 구성된 End2End 온라인 추론 API를 구축해볼 수 있다.
이 책에서는 ray.serve
에 FastAPI를 래핑하여 사용했다. 평소에 다양한 프로젝트에 FastAPI를 사용했던 입장에서 이해하며 넘어갔지만, 책에서는 별도의 설명없이 넘어갔다.
최종적으로는 쿠버네티스에 배포해보며 책이 끝난다.
Ray Air는 책의 가장 마지막장에서 간략하게 나오는 내용이며, 앞에서 소개한 Ray 라이브러리들이 복잡한 AI 워크로드에서 원활하게 결합하며 대규모 클러스터로 확장이 가능하도록 하는 라이브러리이다.
위 그림처럼 Ray의 생태계를 이 책에서 하나씩 다뤄볼 수 있었다.
Ray는 Python으로 작성되어 있으며, TensorFlow, PyTorch와 같은 다른 ML 프레임워크와의 호환성이 뛰어나면서 이미 구축된 ML 솔루션에 쉽게 통합할 수 있다는 느낌을 받았다.
이 글을 읽으면서 기존의 AI 워크로드에서 Ray를 효과적으로 도입할 수 있는 방법을 알 수 있었으며 Ray를 이용하여 분산 시스템과 MLOps인프라를 구축한다는 측면에서 AI의 자원적 한계를 극복할 수 있음을 느꼈다.
Ray를 통해 확장성을 갖추고 배포 가능한 방법으로 AI를 활용하는 것을 경험할 수 있었다. 로컬 환경이든 클라우드 환경이든, Ray를 통해 트래픽에 따라 쉽게 확장하여 안정적으로 서비스를 제공할 수 있는 방법을 익힐 수 있을것이다.
이 글은 "한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 제공 받아 작성된 서평입니다."