Spark Machine Learning
Deep Dive
(feat. Deep Learning)
스사모(Spark Korea User Group)
김훈동
Who am I ?
• 김훈동 Chief Partner ( hoondongkim@emart.com )
• 신세계 그룹 온라인 포털 SSG.COM 빅데이타팀 리더
• Hadoop, Spark, Machine Learnin...
I will say …
• Spark Cluster 운영 경험 및 노하우 공유
• Spark로 하는 Machine Learning 에 대하여
• 장점과 단점
• Machine Learning & Deep Learning...
제가 속한 조직에 대하여…
We Made …
So What?
He said “그래서 어쩌라고?”
하지만, 하는 일이 달라지고 있음!
– 과거 현재 미래
• 과거를 분석 한다. (BigData Eco System Infra)
• 트래킹 로그를 남긴다.
• 빅데이타 수집 저장 분석을 위한 인프라를 만든다.
• 빅데이타...
BigData 가 강한 분야
BigData 가 강한 분야
BigData + Deep Learning Approach
History & Prologue 1
History & Prologue 2
History & Prologue 3
Google
개발자가 AI시대를 임하는 자세!
혹은
Math 와 통계,산업공학,인지과학 그리고 PH.D 가 난무하는 이 바닥에
가진 거라 곤 Develop Sprit 밖에 없는 개발자 Base의 Data Scientist가
존재감을...
나는 빅데이타 개발자야!
vs
나도 데이터 과학자야!
Are you Data Scientist?
통계를 공부해야 하나?
수학을 다시 공부해야 하나?
이 분야는 내 분야가 아닌가?
다짐을 하게 된 계기…
개발자 입장에서 Deep Learning 이란?
• 제프 딘 역할
• 우리가 더 잘하는 건….
• 대용량 데이터 처리
• 데이터 전처리 , 후처리
• 알고리즘 구현(코딩 레벨 구현)
• Deep Learning 은 Lo...
Spark 의 Position!
- Spark 개발자가 BigData Scale ML Job을 처리하는 시나리오!
Spark 의 Position!
- Spark 개발자가 BigData Scale ML Job을 처리하는 시나리오!
Spark ML 에 알고리즘이 없는 경우의 최
후의 보루! 직접 구현???
Spark 특징
• Scala
• Java
• Python
• R
Zeppelin on Spark
Spark Machine Learning (Mllib)
언어별 장점 섞어 쓰기
• Scala + Java
• PySpark + Python
• SparkR + RevoScaleR(MS R) + CRAN-R
Spark ML 에 알고리즘이 없는 경우의 최
후의 보루! 직접 구현???
복잡한 알고리즘의 구현은 Java 가 좀 쉽긴 함. (example github source 도 많고…)
병렬성을 고려한 처리는 Java 로 구...
언어별 장점 섞어 쓰기
언어별 장점 섞어 쓰기
SAS vs Hive vs Spark
SAS vs Hive vs Spark
SAS vs Hive vs Spark
SAS vs Hive vs Spark
SAS vs Hive vs Spark
숲을 봐 보자(SAS vs Hive vs Spark)
숲을 봐 보자
• Prediction IO Example
• 실무에서 ML Model 의 implementation 은 생각만큼 단순하지 않다.
• Prediction IO 정도가 Full Range 를 숲 관점으로 접...
R on Spark 에 대하여
• SparkR
• Sparklyr
• RevoScaleR(MS R)
RevoScaleR on Spark 성능비교
1 Machine on MS-SQL Server 7 Machine on Spark Cluster
Y축 : Elapsed Time 낮을 수록 성능 좋음.
8Core – 65GB...
Python Machine Learning on Spark
Spark Machine Learning 보완 도구들
Spark & Deep Learning
• Deep Water 의 예
Spark & Deep Learning
• BigDL 예
Spark Deep Learning Deep Dive
• Keras + Tensorflow + Spark : elephas
Spark Deep Learning Deep Dive
Spark 의 Position!
- Spark 개발자가 BigData Scale ML/DL Job을 처리하는 시나리오!
R, SAS , SPSS
Matlab
R, Python
BI, OLAP
Spark
Spark ML
...
Spark ML 실무 Pain Point 시나리오 #1
• 메모리 & CPU 리소스 부족 문제(성능 측면과 리소스 측면 아키텍처가 달라짐.)
• ML 에서는 CPU 병목이 더 빈번
• Yarn mode vs Mesos ...
Spark ML 실무 Pain Point 시나리오 #2
Spark ML 실무 Pain Point 시나리오 #3
• 리소스를 쥐어 짜면서 사용하는 Production 상황. (ML job 이 많을수록 리소스
부족 현상 증가)
• 모든 Job 을 최대 퍼포먼스 Full 할당으로...
Spark ML 실무 Pain Point 시나리오 #4
• Disk 부족 문제
• Machine Learning 을 하는 경우 알고리즘에 따라, 작은 크기의 Input
데이터라 할지라도, 계산에 동원된 전체 Node 의...
Spark ML 실무 Pain Point 시나리오 #5
• IO 병목 문제
• 일반적인 Computer Science 상식과 달리 Spark 에서는 IO 병목이 흔하
지 않음.
• 가끔 다량의 데이터에 대한 File O...
Spark ML 실무 Pain Point 시나리오 #6
• BigData Scale Data Load 불가능 시나리오
• 이때는 Map/Reduce 가 더 낫다.
• 생산성을 위한 Choice
• Hadoop Strea...
Spark ML 실무 Pain Point 시나리오 #7
• 너무 느릴때
• 각종 Model 의 Hyper Parameter 를 적절히 변경해 주어야 함.
• Driver Memory, Executor Memory 를 적...
Broadcast 를 잘 써야 함….
Spark ML 실무 Pain Point 시나리오 #8
• 너무 잘게 파일이 많을 때에는 어마어마하게 셔플 IO Over Head 발생
• File Write 측면에서는 Map 과 RDD.saveAsTextFile(HD...
Spark ML 실무 Pain Point 시나리오 #9
• 알고리즘 종류 빈약
• 모델 및 feature selection 과정에는 다양한 알고리즘과 다양한 시도를 빠르게
많이 시도해 볼 필요가 있음.
• Spark M...
Spark ML 실무 Pain Point 시나리오 #10
• 알고리즘은 존재하는데 메소드가 너무 빈약
• 막상 알고리즘은 존재하는데, 고급 기법이나 파라미터, 각종 부가 메소
드가 존재하지 않는 경우가 많음.
• Wor...
Spark ML 실무 Pain Point 시나리오 #11
• 알고리즘이 존재하지 않는 경우. (ML 의 경우)
• 알고리즘이 존재하지 않는 경우. (Deep Learning 의 경우)
기타.
• Deep Learning 툴 소개
• http://ankivil.com/choosing-a-deep-learning-software/
• 딥러닝 프레임워크 속도 비교
• https://tensorflow.bl...
Spark machine learning & deep learning
Spark machine learning & deep learning
Próximos SlideShares
Carregando em…5
×

Spark machine learning & deep learning

4.979 visualizações

Publicada em

Spark Machine Learning and Deep Learning Deep Dive.
Scenarios that use Spark hybrid with other data analytics tools (MS R on Spark, Tensorflow(keras) with Spark, Scikit-learn with Spark, etc)

Publicada em: Dados e análise
  • Seja o primeiro a comentar

Spark machine learning & deep learning

  1. 1. Spark Machine Learning Deep Dive (feat. Deep Learning) 스사모(Spark Korea User Group) 김훈동
  2. 2. Who am I ? • 김훈동 Chief Partner ( hoondongkim@emart.com ) • 신세계 그룹 온라인 포털 SSG.COM 빅데이타팀 리더 • Hadoop, Spark, Machine Learning, Azure ML 분야 Microsoft MVP(Most Valuable Professional) • Major in BigData RealTime Analytics & NoSQL • http://hoondongkim.blogspot.kr
  3. 3. I will say … • Spark Cluster 운영 경험 및 노하우 공유 • Spark로 하는 Machine Learning 에 대하여 • 장점과 단점 • Machine Learning & Deep Learning 분야에서의 Spark의 위상 • Spark 를 보완하는 다양한 도구 및 기술들 • Spark 개발자가 Deep Learning 시대에 임하는 자세
  4. 4. 제가 속한 조직에 대하여…
  5. 5. We Made …
  6. 6. So What? He said “그래서 어쩌라고?”
  7. 7. 하지만, 하는 일이 달라지고 있음! – 과거 현재 미래 • 과거를 분석 한다. (BigData Eco System Infra) • 트래킹 로그를 남긴다. • 빅데이타 수집 저장 분석을 위한 인프라를 만든다. • 빅데이타 배치로 과거 시계열 분석을 하고 시각화를 한다. • 현재에 반응 한다. (RealTime Layer / Spark Streaming / ELK) • 실시간으로 데이터 스트림을 분석한다. • FDS, 보안관제, 모니터링 등 즉각적으로 현재 상황에 대처하여 현재를 능동적으로 대비한다. • 미래를 예측 한다. (Mining / Machine Learning / Deep Learning) • 고객이 관심 갖고 있고 곧 살 것 같은 것을 추천한다. • 미래에 집행할 광고 및 제휴 채널 예산을 보다 ROI 높게 배분한다. • 발주를 예측한다. • 최적의 트럭 경로를 예측한다. • 가격을 올릴지 말지 얼마나 세일할지 최적의 가격을 예측한다. • 미래를 대비 한다. (Machine Learning / Deep Learning) • Chatbot • 자연어 활용, 이미지 활용 -> 검색 및 추천 고도화 • 기타 3~4년 전 2~3년 전 요즘
  8. 8. BigData 가 강한 분야
  9. 9. BigData 가 강한 분야
  10. 10. BigData + Deep Learning Approach
  11. 11. History & Prologue 1
  12. 12. History & Prologue 2
  13. 13. History & Prologue 3
  14. 14. Google
  15. 15. 개발자가 AI시대를 임하는 자세! 혹은 Math 와 통계,산업공학,인지과학 그리고 PH.D 가 난무하는 이 바닥에 가진 거라 곤 Develop Sprit 밖에 없는 개발자 Base의 Data Scientist가 존재감을 지키는 방법에 대하여! 고찰…
  16. 16. 나는 빅데이타 개발자야! vs 나도 데이터 과학자야! Are you Data Scientist? 통계를 공부해야 하나? 수학을 다시 공부해야 하나? 이 분야는 내 분야가 아닌가?
  17. 17. 다짐을 하게 된 계기…
  18. 18. 개발자 입장에서 Deep Learning 이란? • 제프 딘 역할 • 우리가 더 잘하는 건…. • 대용량 데이터 처리 • 데이터 전처리 , 후처리 • 알고리즘 구현(코딩 레벨 구현) • Deep Learning 은 Low Level 코딩 구현이 더 많음. • Deep Learning 특히 CNN, RNN, RNN변형 , RL 등은 수학이 그리 복잡하지 않음. • 이전의 Machine Learning • Markov-Chain Monte Carlo • Gibbs Sampler • Variation Inference • Deep Belief Network • 현재의 Deep Learning • CNN • RNN • LSTM … Mathematical formula Engineering Art
  19. 19. Spark 의 Position! - Spark 개발자가 BigData Scale ML Job을 처리하는 시나리오!
  20. 20. Spark 의 Position! - Spark 개발자가 BigData Scale ML Job을 처리하는 시나리오!
  21. 21. Spark ML 에 알고리즘이 없는 경우의 최 후의 보루! 직접 구현???
  22. 22. Spark 특징 • Scala • Java • Python • R
  23. 23. Zeppelin on Spark
  24. 24. Spark Machine Learning (Mllib)
  25. 25. 언어별 장점 섞어 쓰기 • Scala + Java • PySpark + Python • SparkR + RevoScaleR(MS R) + CRAN-R
  26. 26. Spark ML 에 알고리즘이 없는 경우의 최 후의 보루! 직접 구현??? 복잡한 알고리즘의 구현은 Java 가 좀 쉽긴 함. (example github source 도 많고…) 병렬성을 고려한 처리는 Java 로 구현하는것에 한계. 병렬성을 위한 Main routine 은 Scala 로…
  27. 27. 언어별 장점 섞어 쓰기
  28. 28. 언어별 장점 섞어 쓰기
  29. 29. SAS vs Hive vs Spark
  30. 30. SAS vs Hive vs Spark
  31. 31. SAS vs Hive vs Spark
  32. 32. SAS vs Hive vs Spark
  33. 33. SAS vs Hive vs Spark
  34. 34. 숲을 봐 보자(SAS vs Hive vs Spark)
  35. 35. 숲을 봐 보자 • Prediction IO Example • 실무에서 ML Model 의 implementation 은 생각만큼 단순하지 않다. • Prediction IO 정도가 Full Range 를 숲 관점으로 접근 한다.
  36. 36. R on Spark 에 대하여 • SparkR • Sparklyr • RevoScaleR(MS R)
  37. 37. RevoScaleR on Spark 성능비교 1 Machine on MS-SQL Server 7 Machine on Spark Cluster Y축 : Elapsed Time 낮을 수록 성능 좋음. 8Core – 65GB Memory. 7 Machine.
  38. 38. Python Machine Learning on Spark
  39. 39. Spark Machine Learning 보완 도구들
  40. 40. Spark & Deep Learning • Deep Water 의 예
  41. 41. Spark & Deep Learning • BigDL 예
  42. 42. Spark Deep Learning Deep Dive • Keras + Tensorflow + Spark : elephas
  43. 43. Spark Deep Learning Deep Dive
  44. 44. Spark 의 Position! - Spark 개발자가 BigData Scale ML/DL Job을 처리하는 시나리오! R, SAS , SPSS Matlab R, Python BI, OLAP Spark Spark ML Spark Streaming Spark GraphX Hadoop NoSQL Python, R Spark R Revolution R Tensorflow Keras CNTK 등등 H2O, Weka Deeplearning4j
  45. 45. Spark ML 실무 Pain Point 시나리오 #1 • 메모리 & CPU 리소스 부족 문제(성능 측면과 리소스 측면 아키텍처가 달라짐.) • ML 에서는 CPU 병목이 더 빈번 • Yarn mode vs Mesos Mode vs Stand Alone • Hadoop 노드가 전체 eco system 의 1/5 ? 1/3? 그럼 mesos 를 쫙 펼쳐놓고 사용하는게 유리. 물론 머신이 충분히 많아서 리소스가 아무 문제가 안되면 이런 논리는 해당사항 없 음. • Mesos 는 Off heap 을 다이나믹 하게 잘 사용. CPU와 Memory, Executor 의 갯수까지 매 우 유연하게 할당해줌. 하나의 Job 안에서도 매우 Elastic 함.( yarn 보다 이 부분은 장점이 더 많음. Fine Grain 모드일때). 물론 Yarn 도 Dynamic Allocation 세팅 이 불가능하진 않음. 실제 돌려보면 둘간의 양상이 좀 다름. Mesos 가 훨씬 Dynamic 함. But 성능이 그리 빠 르진 않음.  Dynamic 할당에 Overhead 가 좀 있는 듯. 이 부분이 Spark 2.x 에서는 좀 개선됨. Mesos 의 Dynamic Allocation 메커니즘이 바뀌었음.) -> 추가로 이 시나리오가 run 할려면 mesos 는 spark.scheduler.mode = FAIR 옵션을 주어야 하고, Yarn 은 Yarn 스 케줄러 세팅에 Fair 스케줄러를 정교하게 추가 세팅할 필요가 있다.
  46. 46. Spark ML 실무 Pain Point 시나리오 #2
  47. 47. Spark ML 실무 Pain Point 시나리오 #3 • 리소스를 쥐어 짜면서 사용하는 Production 상황. (ML job 이 많을수록 리소스 부족 현상 증가) • 모든 Job 을 최대 퍼포먼스 Full 할당으로 Serial 구성??? 바람직 하지 않음. 어떤 경우는 CPU 를 어떤 경우는 Memory 를 많이 쓰기 때문에…. 복수 Job 이 잘게 쪼개져 병렬 수행되는 경우( 마치 가상화가 OnPremise 보다 효율이 좋은것처럼) 더 낳은 결과를 가져올 수 있음. 하루 종일 10분배치 시간 배치 일배치가 끊임없 이 돌고 있고, 경우에 따라 Long Running Adhoc 배치가 도는 경우 정교한 세팅 은 관리가 매우 손이 많이 가고, 인재로 인한 장애 확률을 높임. 최대한 dynamic allocation 의 힘을 빌리는게 유리. (job 은 최대한 잘게 쪼개지는 fine graind mode.) 부분적으로 매우 중요한 잡에 대하여 coarse graind mode. 로 dedicate 자원 할당. 혹은 별도 hw zone 으로 나누는 것도 방법임. (예, Spark Streaming 의 경우… 리소스에 매우 민감)
  48. 48. Spark ML 실무 Pain Point 시나리오 #4 • Disk 부족 문제 • Machine Learning 을 하는 경우 알고리즘에 따라, 작은 크기의 Input 데이터라 할지라도, 계산에 동원된 전체 Node 의 모든 Disk 를 Full 로 사용하고도 모자라는 경우가 있다. • [해결책] • Hyper-Parameter 값 설정 Trade Off • Hybrid Cloud 리소스 활용 • Mesos Cluster 활용 ( Yarn Cluster 개수는 Hadoop Node 개수에 dependency가 있으나, Mesos Cluster 는 보유 전 장비에 펼칠 수 있다. 예, NoSQL Cluster 도 동 원 가능 )
  49. 49. Spark ML 실무 Pain Point 시나리오 #5 • IO 병목 문제 • 일반적인 Computer Science 상식과 달리 Spark 에서는 IO 병목이 흔하 지 않음. • 가끔 다량의 데이터에 대한 File Operation 이 많을 때 IO 병목이 있을 수 있으나, 가장 쉽고 빠른 해결책은 Network Card 를 업그레이드 하 는 방법. • 1G 카드를 10G 로 교체. 혹은 노드당 10G 2개 혹은 4개 로 복수 네트 워크 카드 장착. • Spark 의 경우 이 경우 15~20% 정도의 속도 개선이 생김.(속도 개선이 미미한 모델도 있음) • Network 속도 자체는 수십배 좋아졌지만, 20% 이상 성능 개선이 되는 경우는 거의 없다. 대부분 리소스 병목은 CPU, Memory , IO 등이 복합 적이기 때문.
  50. 50. Spark ML 실무 Pain Point 시나리오 #6 • BigData Scale Data Load 불가능 시나리오 • 이때는 Map/Reduce 가 더 낫다. • 생산성을 위한 Choice • Hadoop Streaming • Pig, Hive 등 • Clojure 기반의 Cascalog, Scala 기반의 Scalding • 위 Map/Reduce Wrapping 기술로 Data 를 선집계, 이후 집계 데이터 로 Spark ML 실행. • 알고리즘 자체가 BigData Scale 의 Input 을 요구하는 경우 • Popular 알고리즘은 Mahout이 대안 (최신 버전 말고 구 버전이 더 유용) • Weka, DeepLearning4J , H2O , Sparkling Water 등 다른 Tool 의 Support 연동 안 검토
  51. 51. Spark ML 실무 Pain Point 시나리오 #7 • 너무 느릴때 • 각종 Model 의 Hyper Parameter 를 적절히 변경해 주어야 함. • Driver Memory, Executor Memory 를 적절히 지정해 주어야 함. • Data 를 BroadCast. • 최초에 한번 Heavy Computing 이 필요하더라도, 아래 기법 잘 활용해야 함.
  52. 52. Broadcast 를 잘 써야 함….
  53. 53. Spark ML 실무 Pain Point 시나리오 #8 • 너무 잘게 파일이 많을 때에는 어마어마하게 셔플 IO Over Head 발생 • File Write 측면에서는 Map 과 RDD.saveAsTextFile(HDS_PATH) 가 유리 • Spark ML / Spark SQL Data Load 측면에서는 RDD.coalesce(1).saveAsTextFile(HDS_PATH) 가 유리 • File 이 어마어마 하게 클때는 coalesce(1) 없이 Write 이후 roading 시점 혹은, writing 직후 Map/Reduce 로 Merge 가 더 유리.
  54. 54. Spark ML 실무 Pain Point 시나리오 #9 • 알고리즘 종류 빈약 • 모델 및 feature selection 과정에는 다양한 알고리즘과 다양한 시도를 빠르게 많이 시도해 볼 필요가 있음. • Spark ML 이 제공하는 알고리즘들은 대부분 가장 Popular 하고, 비교적 최신 알고리즘인 대표 알고리즘이 1개 씩만 존재. • 동일 주제에 유사한 복수 알고리즘 테스트가 힘듦. • 알고리즘 Selection 은 Python 이나 R 등 Support 알고리즘이 더 풍부한 플랫폼이 더 유리. • 알고리즘이 확정되면, 해당 알고리즘이 Spark ML 에 존재하는 검토 • 존재하는 경우 Spark ML 로 Production 화 개발. • 예, R 로 2박 3일 걸리는 모델을 Spark ML 로 시간 배치 화 개발. • 예, 모델에 대한 알고리즘 개발 시점에는 셈플 데이터 이용. Production 시점 에는 전수 데이터 이용.
  55. 55. Spark ML 실무 Pain Point 시나리오 #10 • 알고리즘은 존재하는데 메소드가 너무 빈약 • 막상 알고리즘은 존재하는데, 고급 기법이나 파라미터, 각종 부가 메소 드가 존재하지 않는 경우가 많음. • Word2Vec 의 예 • FP-Growth 의 예
  56. 56. Spark ML 실무 Pain Point 시나리오 #11 • 알고리즘이 존재하지 않는 경우. (ML 의 경우) • 알고리즘이 존재하지 않는 경우. (Deep Learning 의 경우)
  57. 57. 기타. • Deep Learning 툴 소개 • http://ankivil.com/choosing-a-deep-learning-software/ • 딥러닝 프레임워크 속도 비교 • https://tensorflow.blog/2017/02/13/chainer-mxnet-cntk-tf- benchmarking/ • Keras • 버전 2 준비 되고 있음. • CNTK 도 Keras 백엔드가 될 듯. • Keras 가 Tensorflow 코드 베이스로 흡수??

×