Robert Nishihara와 Philipp Moritz, 그리고 Ion Stoica 교수님 (Databricks 공동 창업자)가 설립한 스타트업 회사 • Open source 기반 회사. 비슷한 비즈니스 모델로는 Confluence (Kafka), Databricks (Spark), Elastic(Elastic Search) 등등이 있음 • Ray Open source 개발과 플랫폼 개발 Anyscale?
필수 • 전처리 -> 스파크 • 데이타 로딩 -> Pytorch Dataloader / Petastorm • 모델 훈련 / 하이퍼 파라미터 최적화 -> Horovod • 모델 평가 / 디플로이먼트 -> K8s / 스파크 (스코어링) Scaling 페이즈, 분산처리 요구 요구사항 다양한 시스템 구축, 워크플로우 구축, 데이터 이동을 위한 시스템 구축, failure 대비한 상황 구축, 시스템 학습 등등
라이브러리 • 전처리 -> Spark / Dask on Ray • 데이타 로딩 -> Ray ML Dataset • 모델 훈련 / 하이퍼 파라미터 최적화 -> Horovod on Ray / Ray Tune • 모델 평가 -> Spark on Ray • 디플로이먼트 -> Ray Serve 레이를 이용한 파이프라인 구축
구축 Distributed apps will become the orm ETL library Training library Tuning library Load & shuffle Distributed apps will become the orm ETL Cluster Training cluster Tuning cluster Load & shuffle
a def add(a, b): return np.add(a, b) a = read_array(file1) b = read_array(file2) sum = add(a, b) Function class Counter(object): def __init__(self): self.value = 0 def inc(self): self.value += 1 return self.value c = Counter() c.inc() c.inc() Class
return a @ray.remote def add(a, b): return np.add(a, b) a = read_array(file1) b = read_array(file2) sum = add(a, b) @ray.remote class Counter(object): def __init__(self): self.value = 0 def inc(self): self.value += 1 return self.value c = Counter() c.inc() c.inc() Function → Task Class → Actor
(자바도 현재 지원중) 이지만 Critical path는 Cython • 코어 component: Cpp로 개발 • Decentralized 스케쥴러 -> 대규모 클러스터에서도 짧은 스케쥴링 오버헤드 • Distributed object store -> 공유 메모리와 Zero-copy Read가 탑재된 분산 오브젝트 스토어로 메모리 관리를 쉽게 함 High Performance
창시자분들)가 분산 머신러닝 훈련 & 강화학습을 위한 연구하던 중 ML을 위한 분산 시스템 개발이 쉽지 않다는걸 깨달음 ML 분산 시스템 개발을 더 쉽게 만들기 위해 Ray가 개발됨 1. TRPO: Monotone Policy Improvement for Deep RL (ICML 2015) 2. GAE: Variance Reduction Techniques for Speeding Up Learning 3. SparkNet: Communication Efficient Deep Learning on Spark Trust Region Policy Optimization John Schulman, Sergey Levine, Philipp Moritz, Michael I. Jordan, Pieter Abbeel (ICML, 2015) Generalized Advantage Estimation John Schulman, Philipp Moritz, Sergey Levine, Michael I. Jordan, Pieter Abbeel (ICLR, 2016) SparkNet: Training Deep Networks in Spark Philipp Moritz, Robert Nishihara, Ion Stoica, Michael I. Jordan (ICLR, 2016)
인프라에서 계산 집약적 작업이 필요한 클러스터를 구현할 때 • 소규모 / 대규모 분산 / 병렬 처리작업 • Scalable한 라이브러리 개발 왜 • 범용성 + 고성능 • 성장하는 에코시스템 • end to end ML 인프라에서 분산 시스템 관리 부담 저하 레이는 언제/왜 써야하나요?
end to end ML 분산 처리를 할 수 있게 도와줌 현재 Ray의 가장 중요한 use case고 많은 개발이 이뤄지는중. 예시: 우버의 Michelangelo 플랫폼에서 레이 adoption이 활발하게 일어나는 중임 이 use case에 관한 Ray summit 발표
프로세싱을 이용한 Pytorch Dataloader을 사용 실제 프로덕션 사용 중 여러 문제에 직면 (예를들면 특별한 디버깅 정보 없이 로딩이 멈춰버리는 경우). 레이를 이용하여 Pytorch Dataloader drop in 대체 라이브러리를 내부적으로 개발해서 사용중 이 use case에 관한 Ray summit 발표
사용해 왔으나 안정성이나 스피드에서 의문이 제시됨 레이와 Arrow를 이용하여 최적화된 분산 Compactor 프로그램을 개발, 기본 Map reduce 패턴에 의존하는 스파크에 비해 높은 성능 향상을 보임 레이의 범용성을 이용하여 실제 데이타프로세싱 특화된 프로젝트보다 더 높은 성능을 가진 컴팩터를 개발함 이 use case에 관한 Ray summit 발표
(MLOps페이지에도 다시 링크를 올릴 예정입니다). 서밋은 무료고 이 링크를 통해 가입해주시면 됩니다! https://bit.ly/3fJiYt7 레이를 사용하고 싶으시거나 사용하는데 어려움을 겪는 분들이 계시면 레이 slack이나 Discourse에서 @sangcho에게 연락하시면 도와드리겠습니다! 레이 Github 링크 (방문하셔서 star 부탁드립니다)