Slide 1

Slide 1 text

Anyscale Ray: 대규모 ML인프라를 위한 분산 시스템 프레임워크 SangBin Cho Software Engineer @ Anyscale

Slide 2

Slide 2 text

01 02 03 머신 러닝 인프라와 Ray 레이와 레이 libraries에 관한 기본적인 소개 레이의 실제 industry 사용 사례 Contents

Slide 3

Slide 3 text

01 02 레이에 대한 기본적인 이해 레이가 언제 어떤식으로 쓰이고 왜 쓰이는지에 관한 이해 Takeaway

Slide 4

Slide 4 text

Distributed apps will become the norm Anyscale • 소프트웨어 개발자 @ 에니스케일 • 레이 커미터 • 코어 분산 시스템 개발 담당 • Ray data processing 프로젝트 • 관심있으시면 Pycon / Ray summit 2021 Data processing on Ray를 검색해주세요 발표자

Slide 5

Slide 5 text

Distributed apps will become the norm Anyscale • 레이 창시자분들인 Robert Nishihara와 Philipp Moritz, 그리고 Ion Stoica 교수님 (Databricks 공동 창업자)가 설립한 스타트업 회사 • Open source 기반 회사. 비슷한 비즈니스 모델로는 Confluence (Kafka), Databricks (Spark), Elastic(Elastic Search) 등등이 있음 • Ray Open source 개발과 플랫폼 개발 Anyscale?

Slide 6

Slide 6 text

Anyscale 모던 머신러닝 인프라에서 왜 Ray가 유용한지에 대해 소개합니다 머신 러닝 인프라와 Ray

Slide 7

Slide 7 text

ML 플랫폼

Slide 8

Slide 8 text

Industry 주요 워크플로우 HPC AI Big Data Micro- services

Slide 9

Slide 9 text

트렌드: 워크플로우 접점 증가 HPC AI Training, Simulations Big Data Micro- services MPI를 이용한 분산 트레이닝 강화 학습을 위한 고성능 시뮬레이터

Slide 10

Slide 10 text

트렌드: 워크플로우 접점 증가 HPC AI Training, Simulations Micro- services Big Data Log processing, Featurization 온라인 러닝 & 대규모 데이타 학습

Slide 11

Slide 11 text

트렌드: 워크플로우 접점 증가 HPC AI Training, Simulations Big Data Log processing, Featurization Micro- services Serving, Business logic 백엔드 서비스, 모델 서빙, 온라인 러닝

Slide 12

Slide 12 text

결과: 시스템 복잡성 증가 DL Big Data Microservices HPC ? 대규모 처리를 위한 분산시스템 복잡성 증가 범용적인 해결책 X

Slide 13

Slide 13 text

레이란? DL Big Data Microservices HPC 이러한 트렌드에서 범용적인 해결책으로 개발됨

Slide 14

Slide 14 text

머신 러닝 파이프라인: 다양한 분산 시스템이 접합됨 피쳐 프로세싱/전처리 (Spark) 스코어링/ 서빙 (Spark, Neuropod) 분산 훈련 (Horovod, XGBoost, etc)

Slide 15

Slide 15 text

현대 머신러닝 인프라: 계산 집약적인 분산 처리 필수 레슨: 분산 처리 시스템 개발은 여전히 어려움!

Slide 16

Slide 16 text

레이란? 레이는 분산처리를 쉽게 해결할 수 있도록 만들어짐. 프레임워크의 목표 ● 유연성: task와 actor 모델을 이용한 범용 분산 처리 코드 개발 ● 간단함: 인프라 & 코드 디커플링. 같은 코드로 한개의 머신에서 대규모 분산시스템까지 이용가능 ● 성능: 분산 시스템에서의 고성능의 빠른 스케쥴링 & 효율적인 메모리 관리 레이 와이트 페이퍼

Slide 17

Slide 17 text

ML 플렛폼에서 레이의 역할

Slide 18

Slide 18 text

ML 플렛폼에서 레이의 역할 계산 집약적 작업에 유용!

Slide 19

Slide 19 text

좀 더 구체적인 예시

Slide 20

Slide 20 text

Distributed apps will become the norm Anyscale 데이타 전처리 / 피쳐 프로세싱 모델 훈련 하이퍼 파라미터 최적화 모델 디플로이먼트 / 평가 반복! 기본 ML pipeline 출처: https://valohai.com/machine-learning-pipeline/

Slide 21

Slide 21 text

Distributed apps will become the norm Anyscale 간단한 파이선 프로그램 • 전처리 -> 판다 • 모델 훈련 / 하이퍼 파라미터 최적화 -> XGboost • 모델 평가 / 디플로이먼트 -> pickling 모델 -> 콘테이너 시작: 간단한 파이선 프로그램

Slide 22

Slide 22 text

Distributed apps will become the norm Anyscale 분산 시스템 접합 필수 • 전처리 -> 스파크 • 데이타 로딩 -> Pytorch Dataloader / Petastorm • 모델 훈련 / 하이퍼 파라미터 최적화 -> Horovod • 모델 평가 / 디플로이먼트 -> K8s / 스파크 (스코어링) • 자동화 -> Airflow / Metaflow Scaling 페이즈, 분산처리 요구

Slide 23

Slide 23 text

Distributed apps will become the norm Anyscale 분산 시스템 접합 필수 • 전처리 -> 스파크 • 데이타 로딩 -> Pytorch Dataloader / Petastorm • 모델 훈련 / 하이퍼 파라미터 최적화 -> Horovod • 모델 평가 / 디플로이먼트 -> K8s / 스파크 (스코어링) Scaling 페이즈, 분산처리 요구 요구사항 다양한 시스템 구축, 워크플로우 구축, 데이터 이동을 위한 시스템 구축, failure 대비한 상황 구축, 시스템 학습 등등

Slide 24

Slide 24 text

Distributed apps will become the norm Anyscale 레이 & 레이 라이브러리 • 전처리 -> Spark / Dask on Ray • 데이타 로딩 -> Ray ML Dataset • 모델 훈련 / 하이퍼 파라미터 최적화 -> Horovod on Ray / Ray Tune • 모델 평가 -> Spark on Ray • 디플로이먼트 -> Ray Serve 레이를 이용한 파이프라인 구축

Slide 25

Slide 25 text

Distributed apps will become the norm Anyscale 레이를 이용한 파이프라인 구축 Distributed apps will become the orm ETL Cluster Training cluster Tuning cluster Load & shuffle

Slide 26

Slide 26 text

Distributed apps will become the norm Anyscale 레이를 이용한 파이프라인 구축 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

Slide 27

Slide 27 text

Distributed apps will become the norm Anyscale 3가지 워크로드를 Ray library를 이용하여 구축 • Modin/Dask dataframe (피쳐 프로세싱/전처리) • XGBoost on Ray (트레이닝) • Ray Tune (하이퍼 파라미터 튜닝) 샘플 코드

Slide 28

Slide 28 text

Distributed apps will become the norm Anyscale 모딘을 이용한 데이터 프로세싱 (판다와 똑같은 API) 특별한 데이터 로딩없이 in memory에서 모딘 데이터프레임 -> XGBoost on Ray 모델 훈련과 하이퍼 파라미터 최적화

Slide 29

Slide 29 text

Distributed apps will become the norm Anyscale Actor Actor Actor XGBoost on Ray 데이터 병렬 훈련 데이터 파티션 하이퍼 파라미터 최적화

Slide 30

Slide 30 text

Distributed apps will become the norm Anyscale 범용 클러스터 -> 클러스터를 쉽게 구축할 수 있는 환경을 만들어 놓으면 다양하게 사용 가능 이 코드 샘플이 레이의 대표적인 사용 사례인가요?

Slide 31

Slide 31 text

Anyscale 레이에 대해 좀 더 자세히 알아봅시다 레이와 레이 libraries에 관한 기본적인 소개

Slide 32

Slide 32 text

Distributed apps will become the norm Anyscale Last year’s talk @ PyCon 성윤님의 레이 블로그 포스트 • 분산 컴퓨팅을 위한 간단한 API • 범용 클러스터 / 서버레스 추상화 • 라이브러리 에코시스템 • 고성능 레이란?

Slide 33

Slide 33 text

Distributed apps will become the norm Anyscale • 분산 컴퓨팅을 위한 간단한 API • 범용 클러스터 / 서버레스 추상화 • 라이브러리 에코시스템 • 고성능 간단하고 직관적인 API를 제공 레이란?

Slide 34

Slide 34 text

def read_array(file): # read ndarray “a” # from “file” return 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

Slide 35

Slide 35 text

@ray.remote def read_array(file): # read ndarray “a” # from “file” 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

Slide 36

Slide 36 text

@ray.remote def read_array(file): # read ndarray “a” # from “file” return a @ray.remote def add(a, b): return np.add(a, b) id1 = read_array.remote(file1) id2 = read_array.remote(file2) id = add.remote(id1, id2) sum = ray.get(id) @ray.remote(num_gpus=1) class Counter(object): def __init__(self): self.value = 0 def inc(self): self.value += 1 return self.value c = Counter.remote() id4 = c.inc.remote() id5 = c.inc.remote() Function → Task Class → Actor

Slide 37

Slide 37 text

Distributed apps will become the norm Anyscale • 분산 컴퓨팅을 위한 간단한 API • 범용 클러스터 / 서버레스 추상화 • 라이브러리 에코시스템 • 고성능 다용도 클러스터 & 서버레스 추상화를 제공, 손쉽게 이용가능 레이란?

Slide 38

Slide 38 text

Distributed apps will become the norm Anyscale Task / Actor • Task/Actor 추상화를 이용해 stateless 와 stateful 한 계산 가능 • Stateless: 대규모 데이터 분산처리 (DAG) • Stateful: 모델 서빙/강화 학습/스트리밍 프로세싱 범용 클러스터 / 서버레스 추상화

Slide 39

Slide 39 text

Distributed apps will become the norm Anyscale Resource / Autoscaler • 다양한 하드웨어 지원 (CPU/GPU) • Resource를 시스템에 요구하면 Autoscaler가 자동적으로 클러스터를 스케일링함 • 결과적으로 유저 프로그램은 Resource만 제공 -> 시스템과 코드 디커플링 범용 클러스터 / 서버레스 추상화

Slide 40

Slide 40 text

Distributed apps will become the norm Anyscale • 분산 컴퓨팅을 위한 간단한 API • 범용 클러스터 / 서버레스 추상화 • 라이브러리 에코시스템 • 고성능 성장하는 에코시스템과 다양한 라이브러리가 존재 레이란?

Slide 41

Slide 41 text

Native Libraries 3rd Party Libraries universal framework for distributed computing 레이 에코시스템

Slide 42

Slide 42 text

Distributed apps will become the norm Anyscale • 분산 컴퓨팅을 위한 간단한 API • 범용 클러스터 / 서버레스 추상화 • 라이브러리 에코시스템 • 고성능 소규모부터 대규모 분산처리를 손쉽게 만들어주는 고성능 스케쥴러 + 메모리 관리 What is Ray?

Slide 43

Slide 43 text

Distributed apps will become the norm Anyscale • 파이선 중심 (자바도 현재 지원중) 이지만 Critical path는 Cython • 코어 component: Cpp로 개발 • Decentralized 스케쥴러 -> 대규모 클러스터에서도 짧은 스케쥴링 오버헤드 • Distributed object store -> 공유 메모리와 Zero-copy Read가 탑재된 분산 오브젝트 스토어로 메모리 관리를 쉽게 함 High Performance

Slide 44

Slide 44 text

레이 라이브러리

Slide 45

Slide 45 text

레이 프로젝트 역사 Amp lab에서 Robert nishihara와 Philipp Moritz (레이 창시자분들)가 분산 머신러닝 훈련 & 강화학습을 위한 연구하던 중 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)

Slide 46

Slide 46 text

No content

Slide 47

Slide 47 text

레이는 저레벨 분산 시스템을 쉬운 파이선 코드로 작성 할 수 있게 도와줌

Slide 48

Slide 48 text

자연스럽게 저레벨 코드를 조합해서 만든 레이 “라이브러리”의 필요성이 생김. 강화학습 라이브러리가 레이 라이브러리의 대표적인 예시로 개발됨

Slide 49

Slide 49 text

Rllib: 가장 인기 있는 Scalable 강화학습 라이브러리. Ray actor을 통해 Simulator와 교류하며 Policy를 테스트하고 모델을 트레이닝함

Slide 50

Slide 50 text

Ray Tune: 인기있는 하이퍼 파라미터 튜닝 라이브러리. Rllib 개발 과정에서 파라미터 튜닝이 많은 계산을 요구하고 그걸 자동화하기위해 만들어짐

Slide 51

Slide 51 text

레이 Actor을 통해 스케쥴러를 구현하고 모델 훈련을 하는 actor들과 교류하며 하이퍼파라미터 최적화를 함.

Slide 52

Slide 52 text

저레벨 분산 시스템 작업 (네트워킹, Failure 핸들링, 스케쥴링, 스케일링) 등은 레이에 의존하고 Checkpoint를 이용하여 Fault tolerant한 분산 튜닝을 구현

Slide 53

Slide 53 text

현재: 다양한 라이브러리들이 Ray를 통해 분산처리됨.

Slide 54

Slide 54 text

Ray serve: 레이 모델 서빙 라이브러리. Ray actor를 이용해서 Fault tolerant하고 Scalable한 모델 서빙 파이프라인 구축 가능. 모델 파이프라이닝, 배치프로세싱등이 기본탑재

Slide 55

Slide 55 text

Ray serve: 레이 모델 서빙 라이브러리. Ray actor를 이용해서 Fault tolerant하고 Scalable한 모델 서빙 파이프라인 구축 가능

Slide 56

Slide 56 text

Horovod on Ray: Ray Actor를 이용해 Horovod worker를 분산 시스템에 분배함. 내부 딥러닝 커뮤니케이션은 Horovod 이용 (e.g., NCCL). 레이의 autoscaler를 이용한 Elastic training 지원

Slide 57

Slide 57 text

Dask on Ray: Ray Tasks를 이용해 Dask graph를 분산 실행 시킴. 대규모 클러스터를 이용할 때 Dask distributed보다 빠른 퍼포먼스를 보여줌.

Slide 58

Slide 58 text

Anyscale Ray가 인더스트리에서 어떤식으로 사용되는지에 대해 발표합니다 레이의 실제 industry 사용 사례

Slide 59

Slide 59 text

레이 서밋 발표 예정회사들

Slide 60

Slide 60 text

Distributed apps will become the norm Anyscale 언제 • ML 인프라에서 계산 집약적 작업이 필요한 클러스터를 구현할 때 • 소규모 / 대규모 분산 / 병렬 처리작업 • Scalable한 라이브러리 개발 왜 • 범용성 + 고성능 • 성장하는 에코시스템 • end to end ML 인프라에서 분산 시스템 관리 부담 저하 레이는 언제/왜 써야하나요?

Slide 61

Slide 61 text

ML 인프라

Slide 62

Slide 62 text

ML 인프라 레이의 다양한 ML 과 data processing 라이브러리는 쉽게 end to end ML 분산 처리를 할 수 있게 도와줌 현재 Ray의 가장 중요한 use case고 많은 개발이 이뤄지는중. 예시: 우버의 Michelangelo 플랫폼에서 레이 adoption이 활발하게 일어나는 중임 이 use case에 관한 Ray summit 발표

Slide 63

Slide 63 text

Case study: 우버 간단한 데이타 전처리 (Spark) 스코어링/서빙 (Spark, Neuropod) 분산 훈련 (Horovod, XGBoost, etc)

Slide 64

Slide 64 text

우리는 레이가 머신러닝 프로덕션에 꼭 필요한 공유된 인프라와 기준화된 머신 러닝 에코시스템을 우버와 그 외 industry에 지속적으로 제공할 중요한 역할을 할 것이라 믿습니다. - 우버 블로그

Slide 65

Slide 65 text

소규모 ~ 대규모 분산 / 병렬 처리 가속화

Slide 66

Slide 66 text

소규모 대규모 분산 병렬처리 가속화 레이는 Single 머신이나 분산 클러스터에서 코드 변화 없이 사용가능 직관적 API제공으로 큰 코드변화 없이 병렬처리 가능 Multi processing에 익숙한 사람들은 레이의 Multi Processing Pool 사용가능 (똑같은 API를 지원하나 Process 대신 Ray actor를 이용)

Slide 67

Slide 67 text

Case study: Nvidia Nvidia self driving car 팀은 기존에 멀티 프로세싱을 이용한 Pytorch Dataloader을 사용 실제 프로덕션 사용 중 여러 문제에 직면 (예를들면 특별한 디버깅 정보 없이 로딩이 멈춰버리는 경우). 레이를 이용하여 Pytorch Dataloader drop in 대체 라이브러리를 내부적으로 개발해서 사용중 이 use case에 관한 Ray summit 발표

Slide 68

Slide 68 text

라이브러리 개발

Slide 69

Slide 69 text

라이브러리 개발 기존에 제공되는 라이브러리가 분산 처리가 필요 But, 분산 시스템 개발을 많은 시간이 필요한 작업임 레이를 이용하여 손쉽게 분산처리를 지원할 수 있음

Slide 70

Slide 70 text

Case study: Modin Modin은 pandas 라이브러리와 동일한 API를 제공하지만 실제 처리는 분산처리되는 라이브러리임 레이 Task를 이용하여 특별한 추가 개발없이 쉽게 분산처리 지원중임 이 use case에 관한 Ray summit 발표

Slide 71

Slide 71 text

Case study: ActiveloopAI의 Hub Hub은 대규모 데이타셋을 머신러닝 작업을 위해 쉽게 로딩할 수 있게 지원해주는 라이브러리임 라이브러리의 스피드를 올리고 데이타 로딩 문제에 집중하기 위해 Ray를 이용하여 Scale함 이 use case에 관한 Ray summit 발표

Slide 72

Slide 72 text

재밌는 사용사례

Slide 73

Slide 73 text

Case study: Amazon compactor 아마존에서 Spark를 이용한 Log Compactor을 오랫동안 사용해 왔으나 안정성이나 스피드에서 의문이 제시됨 레이와 Arrow를 이용하여 최적화된 분산 Compactor 프로그램을 개발, 기본 Map reduce 패턴에 의존하는 스파크에 비해 높은 성능 향상을 보임 레이의 범용성을 이용하여 실제 데이타프로세싱 특화된 프로젝트보다 더 높은 성능을 가진 컴팩터를 개발함 이 use case에 관한 Ray summit 발표

Slide 74

Slide 74 text

Case study: Ant group의 online learning platform

Slide 75

Slide 75 text

Fun fact: Sagemaker / Quantum black 아마존 세이지메이커는 Ray의 Rllib을 로보틱스 강화학습을 위해 제공함 Quantum black은 Rllib을 이용하여 36th 아메리칸 컵에서 우승함 (테크놀로지를 이용해 가장 빠른 Yacht를 디자인하는 대회)

Slide 76

Slide 76 text

감사합니다! 레이에 더 관심이 있으신 분들은 꼭 레이 서밋에 참석해주세요! (MLOps페이지에도 다시 링크를 올릴 예정입니다). 서밋은 무료고 이 링크를 통해 가입해주시면 됩니다! https://bit.ly/3fJiYt7 레이를 사용하고 싶으시거나 사용하는데 어려움을 겪는 분들이 계시면 레이 slack이나 Discourse에서 @sangcho에게 연락하시면 도와드리겠습니다! 레이 Github 링크 (방문하셔서 star 부탁드립니다)

Slide 77

Slide 77 text

Q&A