Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ray: 대규모 ML인프라를 위한 분산 시스템 프레임워크(조상빈)

Ray: 대규모 ML인프라를 위한 분산 시스템 프레임워크(조상빈)

MLOps KR(https://www.facebook.com/groups/mlopskr)에서 주최한 1회 온라인 이벤트 발표 자료입니다

13824f545937c1ae0a80739aea2e396c?s=128

MLOpsKR

June 05, 2021
Tweet

Transcript

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

    Software Engineer @ Anyscale
  2. 01 02 03 머신 러닝 인프라와 Ray 레이와 레이 libraries에

    관한 기본적인 소개 레이의 실제 industry 사용 사례 Contents
  3. 01 02 레이에 대한 기본적인 이해 레이가 언제 어떤식으로 쓰이고

    왜 쓰이는지에 관한 이해 Takeaway
  4. Distributed apps will become the norm Anyscale • 소프트웨어 개발자

    @ 에니스케일 • 레이 커미터 • 코어 분산 시스템 개발 담당 • Ray data processing 프로젝트 • 관심있으시면 Pycon / Ray summit 2021 Data processing on Ray를 검색해주세요 발표자
  5. 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?
  6. Anyscale 모던 머신러닝 인프라에서 왜 Ray가 유용한지에 대해 소개합니다 머신

    러닝 인프라와 Ray
  7. ML 플랫폼

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

  9. 트렌드: 워크플로우 접점 증가 HPC AI Training, Simulations Big Data

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

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

    Log processing, Featurization Micro- services Serving, Business logic 백엔드 서비스, 모델 서빙, 온라인 러닝
  12. 결과: 시스템 복잡성 증가 DL Big Data Microservices HPC ?

    대규모 처리를 위한 분산시스템 복잡성 증가 범용적인 해결책 X
  13. 레이란? DL Big Data Microservices HPC 이러한 트렌드에서 범용적인 해결책으로

    개발됨
  14. 머신 러닝 파이프라인: 다양한 분산 시스템이 접합됨 피쳐 프로세싱/전처리 (Spark)

    스코어링/ 서빙 (Spark, Neuropod) 분산 훈련 (Horovod, XGBoost, etc)
  15. 현대 머신러닝 인프라: 계산 집약적인 분산 처리 필수 레슨: 분산

    처리 시스템 개발은 여전히 어려움!
  16. 레이란? 레이는 분산처리를 쉽게 해결할 수 있도록 만들어짐. 프레임워크의 목표

    • 유연성: task와 actor 모델을 이용한 범용 분산 처리 코드 개발 • 간단함: 인프라 & 코드 디커플링. 같은 코드로 한개의 머신에서 대규모 분산시스템까지 이용가능 • 성능: 분산 시스템에서의 고성능의 빠른 스케쥴링 & 효율적인 메모리 관리 레이 와이트 페이퍼
  17. ML 플렛폼에서 레이의 역할

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

  19. 좀 더 구체적인 예시

  20. Distributed apps will become the norm Anyscale 데이타 전처리 /

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

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

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

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

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

    구축 Distributed apps will become the orm ETL Cluster Training cluster Tuning cluster Load & shuffle
  26. 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
  27. Distributed apps will become the norm Anyscale 3가지 워크로드를 Ray

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

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

    XGBoost on Ray 데이터 병렬 훈련 데이터 파티션 하이퍼 파라미터 최적화
  30. Distributed apps will become the norm Anyscale 범용 클러스터 ->

    클러스터를 쉽게 구축할 수 있는 환경을 만들어 놓으면 다양하게 사용 가능 이 코드 샘플이 레이의 대표적인 사용 사례인가요?
  31. Anyscale 레이에 대해 좀 더 자세히 알아봅시다 레이와 레이 libraries에

    관한 기본적인 소개
  32. Distributed apps will become the norm Anyscale Last year’s talk

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

    위한 간단한 API • 범용 클러스터 / 서버레스 추상화 • 라이브러리 에코시스템 • 고성능 간단하고 직관적인 API를 제공 레이란?
  34. 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
  35. @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
  36. @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
  37. Distributed apps will become the norm Anyscale • 분산 컴퓨팅을

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

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

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

    위한 간단한 API • 범용 클러스터 / 서버레스 추상화 • 라이브러리 에코시스템 • 고성능 성장하는 에코시스템과 다양한 라이브러리가 존재 레이란?
  41. Native Libraries 3rd Party Libraries universal framework for distributed computing

    레이 에코시스템
  42. Distributed apps will become the norm Anyscale • 분산 컴퓨팅을

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

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

  45. 레이 프로젝트 역사 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)
  46. None
  47. 레이는 저레벨 분산 시스템을 쉬운 파이선 코드로 작성 할 수

    있게 도와줌
  48. 자연스럽게 저레벨 코드를 조합해서 만든 레이 “라이브러리”의 필요성이 생김. 강화학습

    라이브러리가 레이 라이브러리의 대표적인 예시로 개발됨
  49. Rllib: 가장 인기 있는 Scalable 강화학습 라이브러리. Ray actor을 통해

    Simulator와 교류하며 Policy를 테스트하고 모델을 트레이닝함
  50. Ray Tune: 인기있는 하이퍼 파라미터 튜닝 라이브러리. Rllib 개발 과정에서

    파라미터 튜닝이 많은 계산을 요구하고 그걸 자동화하기위해 만들어짐
  51. 레이 Actor을 통해 스케쥴러를 구현하고 모델 훈련을 하는 actor들과 교류하며

    하이퍼파라미터 최적화를 함.
  52. 저레벨 분산 시스템 작업 (네트워킹, Failure 핸들링, 스케쥴링, 스케일링) 등은

    레이에 의존하고 Checkpoint를 이용하여 Fault tolerant한 분산 튜닝을 구현
  53. 현재: 다양한 라이브러리들이 Ray를 통해 분산처리됨.

  54. Ray serve: 레이 모델 서빙 라이브러리. Ray actor를 이용해서 Fault

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

    tolerant하고 Scalable한 모델 서빙 파이프라인 구축 가능
  56. Horovod on Ray: Ray Actor를 이용해 Horovod worker를 분산 시스템에

    분배함. 내부 딥러닝 커뮤니케이션은 Horovod 이용 (e.g., NCCL). 레이의 autoscaler를 이용한 Elastic training 지원
  57. Dask on Ray: Ray Tasks를 이용해 Dask graph를 분산 실행

    시킴. 대규모 클러스터를 이용할 때 Dask distributed보다 빠른 퍼포먼스를 보여줌.
  58. Anyscale Ray가 인더스트리에서 어떤식으로 사용되는지에 대해 발표합니다 레이의 실제 industry

    사용 사례
  59. 레이 서밋 발표 예정회사들

  60. Distributed apps will become the norm Anyscale 언제 • ML

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

  62. ML 인프라 레이의 다양한 ML 과 data processing 라이브러리는 쉽게

    end to end ML 분산 처리를 할 수 있게 도와줌 현재 Ray의 가장 중요한 use case고 많은 개발이 이뤄지는중. 예시: 우버의 Michelangelo 플랫폼에서 레이 adoption이 활발하게 일어나는 중임 이 use case에 관한 Ray summit 발표
  63. Case study: 우버 간단한 데이타 전처리 (Spark) 스코어링/서빙 (Spark, Neuropod)

    분산 훈련 (Horovod, XGBoost, etc)
  64. 우리는 레이가 머신러닝 프로덕션에 꼭 필요한 공유된 인프라와 기준화된 머신

    러닝 에코시스템을 우버와 그 외 industry에 지속적으로 제공할 중요한 역할을 할 것이라 믿습니다. - 우버 블로그
  65. 소규모 ~ 대규모 분산 / 병렬 처리 가속화

  66. 소규모 대규모 분산 병렬처리 가속화 레이는 Single 머신이나 분산 클러스터에서

    코드 변화 없이 사용가능 직관적 API제공으로 큰 코드변화 없이 병렬처리 가능 Multi processing에 익숙한 사람들은 레이의 Multi Processing Pool 사용가능 (똑같은 API를 지원하나 Process 대신 Ray actor를 이용)
  67. Case study: Nvidia Nvidia self driving car 팀은 기존에 멀티

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

  69. 라이브러리 개발 기존에 제공되는 라이브러리가 분산 처리가 필요 But, 분산

    시스템 개발을 많은 시간이 필요한 작업임 레이를 이용하여 손쉽게 분산처리를 지원할 수 있음
  70. Case study: Modin Modin은 pandas 라이브러리와 동일한 API를 제공하지만 실제

    처리는 분산처리되는 라이브러리임 레이 Task를 이용하여 특별한 추가 개발없이 쉽게 분산처리 지원중임 이 use case에 관한 Ray summit 발표
  71. Case study: ActiveloopAI의 Hub Hub은 대규모 데이타셋을 머신러닝 작업을 위해

    쉽게 로딩할 수 있게 지원해주는 라이브러리임 라이브러리의 스피드를 올리고 데이타 로딩 문제에 집중하기 위해 Ray를 이용하여 Scale함 이 use case에 관한 Ray summit 발표
  72. 재밌는 사용사례

  73. Case study: Amazon compactor 아마존에서 Spark를 이용한 Log Compactor을 오랫동안

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

  75. Fun fact: Sagemaker / Quantum black 아마존 세이지메이커는 Ray의 Rllib을

    로보틱스 강화학습을 위해 제공함 Quantum black은 Rllib을 이용하여 36th 아메리칸 컵에서 우승함 (테크놀로지를 이용해 가장 빠른 Yacht를 디자인하는 대회)
  76. 감사합니다! 레이에 더 관심이 있으신 분들은 꼭 레이 서밋에 참석해주세요!

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