SlideShare a Scribd company logo
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 Learning, Azure ML 분야
Microsoft MVP(Most Valuable Professional)
• Major in BigData RealTime Analytics & NoSQL
• http://hoondongkim.blogspot.kr
I will say …
• Spark Cluster 운영 경험 및 노하우 공유
• Spark로 하는 Machine Learning 에 대하여
• 장점과 단점
• Machine Learning & Deep Learning 분야에서의
Spark의 위상
• Spark 를 보완하는 다양한 도구 및 기술들
• Spark 개발자가 Deep Learning 시대에 임하는 자세
제가 속한 조직에 대하여…
We Made …
So What?
He said “그래서 어쩌라고?”
하지만, 하는 일이 달라지고 있음!
– 과거 현재 미래
• 과거를 분석 한다. (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년 전
요즘
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 은 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
Spark 의 Position!
- Spark 개발자가 BigData Scale ML Job을 처리하는 시나리오!
Spark 의 Position!
- Spark 개발자가 BigData Scale ML Job을 처리하는 시나리오!
Spark ML 에 알고리즘이 없는 경우의 최
후의 보루! 직접 구현???
Spark machine learning & deep learning
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 로 구현하는것에 한계.
병렬성을 위한 Main routine 은 Scala 로…
언어별 장점 섞어 쓰기
언어별 장점 섞어 쓰기
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 Memory. 7 Machine.
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 Streaming
Spark GraphX
Hadoop
NoSQL
Python, R
Spark R
Revolution R
Tensorflow
Keras
CNTK 등등
H2O, Weka
Deeplearning4j
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 스케줄러를 정교하게 추가 세팅할 필요가 있다.
Spark ML 실무 Pain Point 시나리오 #2
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 의
경우… 리소스에 매우 민감)
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 도 동
원 가능 )
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 등이 복합
적이기 때문.
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 연동
안 검토
Spark ML 실무 Pain Point 시나리오 #7
• 너무 느릴때
• 각종 Model 의 Hyper Parameter 를 적절히 변경해 주어야 함.
• Driver Memory, Executor Memory 를 적절히 지정해 주어야 함.
• Data 를 BroadCast.
• 최초에 한번 Heavy Computing 이 필요하더라도, 아래 기법 잘 활용해야 함.
Broadcast 를 잘 써야 함….
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 가 더 유리.
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 시점
에는 전수 데이터 이용.
Spark ML 실무 Pain Point 시나리오 #10
• 알고리즘은 존재하는데 메소드가 너무 빈약
• 막상 알고리즘은 존재하는데, 고급 기법이나 파라미터, 각종 부가 메소
드가 존재하지 않는 경우가 많음.
• Word2Vec 의 예
• FP-Growth 의 예
Spark ML 실무 Pain Point 시나리오 #11
• 알고리즘이 존재하지 않는 경우. (ML 의 경우)
• 알고리즘이 존재하지 않는 경우. (Deep Learning 의 경우)
기타.
• 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 코드 베이스로 흡수??
Spark machine learning & deep learning

More Related Content

PDF
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
PPTX
대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론
PDF
[164] pinpoint
PDF
Deploying Kafka Streams Applications with Docker and Kubernetes
PDF
Kafka as your Data Lake - is it Feasible?
PDF
[GKE & Spanner 勉強会] Cloud Spanner の技術概要
PDF
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
PDF
Common issues with Apache Kafka® Producer
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론
[164] pinpoint
Deploying Kafka Streams Applications with Docker and Kubernetes
Kafka as your Data Lake - is it Feasible?
[GKE & Spanner 勉強会] Cloud Spanner の技術概要
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Common issues with Apache Kafka® Producer

What's hot (20)

PDF
[PYCON Korea 2018] Python Application Server for Recommender System
PDF
[236] 카카오의데이터파이프라인 윤도영
PDF
Massive service basic
PDF
MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)
PDF
Yahoo! JAPANのOracle構成-2017年版
PPTX
Google BigQueryのターゲットエンドポイントとしての利用
PPTX
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐
PDF
ElasticSearch勉強会 第6回
PDF
Zipline—Airbnb’s Declarative Feature Engineering Framework
PDF
[db analytics showcase Sapporo 2018] B13 Cloud Spanner の裏側〜解析からベストプラクティスへ〜
PDF
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
PDF
How to build massive service for advance
PDF
Encryption and Masking for Sensitive Apache Spark Analytics Addressing CCPA a...
PDF
Spark Operator—Deploy, Manage and Monitor Spark clusters on Kubernetes
PDF
MySQLレプリケーションあれやこれや
PDF
MySQLアーキテクチャ図解講座
PDF
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
PDF
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
PPTX
Managing multiple event types in a single topic with Schema Registry | Bill B...
PDF
さいきんの InnoDB Adaptive Flushing (仮)
[PYCON Korea 2018] Python Application Server for Recommender System
[236] 카카오의데이터파이프라인 윤도영
Massive service basic
MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)
Yahoo! JAPANのOracle構成-2017年版
Google BigQueryのターゲットエンドポイントとしての利用
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐
ElasticSearch勉強会 第6回
Zipline—Airbnb’s Declarative Feature Engineering Framework
[db analytics showcase Sapporo 2018] B13 Cloud Spanner の裏側〜解析からベストプラクティスへ〜
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
How to build massive service for advance
Encryption and Masking for Sensitive Apache Spark Analytics Addressing CCPA a...
Spark Operator—Deploy, Manage and Monitor Spark clusters on Kubernetes
MySQLレプリケーションあれやこれや
MySQLアーキテクチャ図解講座
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
Managing multiple event types in a single topic with Schema Registry | Bill B...
さいきんの InnoDB Adaptive Flushing (仮)
Ad

Viewers also liked (10)

PPTX
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
PDF
MMLSpark: Lessons from Building a SparkML-Compatible Machine Learning Library...
PDF
Deep learning text NLP and Spark Collaboration . 한글 딥러닝 Text NLP & Spark
PDF
Apache Kafka Streams + Machine Learning / Deep Learning
PDF
Deep Learning with Apache Spark and GPUs with Pierce Spitler
PDF
Jeremy Nixon, Machine Learning Engineer, Spark Technology Center at MLconf AT...
PDF
Build a deep learning pipeline on apache spark for ads optimization
PPTX
Streaming platform Kafka in SK planet
PDF
20170210 sapporotechbar7
PDF
Deep Learning Streaming Platform with Kafka Streams, TensorFlow, DeepLearning...
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
MMLSpark: Lessons from Building a SparkML-Compatible Machine Learning Library...
Deep learning text NLP and Spark Collaboration . 한글 딥러닝 Text NLP & Spark
Apache Kafka Streams + Machine Learning / Deep Learning
Deep Learning with Apache Spark and GPUs with Pierce Spitler
Jeremy Nixon, Machine Learning Engineer, Spark Technology Center at MLconf AT...
Build a deep learning pipeline on apache spark for ads optimization
Streaming platform Kafka in SK planet
20170210 sapporotechbar7
Deep Learning Streaming Platform with Kafka Streams, TensorFlow, DeepLearning...
Ad

Similar to Spark machine learning & deep learning (20)

PDF
Spark Day 2017 Machine Learning & Deep Learning With Spark
PDF
100% Serverless big data scale production Deep Learning System
PDF
[264] large scale deep-learning_on_spark
PPTX
Apache spark 소개 및 실습
PDF
Python & Spark
PDF
EMR 플랫폼 기반의 Spark 워크로드 실행 최적화 방안 - 정세웅, AWS 솔루션즈 아키텍트:: AWS Summit Online Ko...
PDF
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
PDF
Understanding MLOps
PDF
​『9가지 사례로 익히는 고급 스파크 분석(2판) 』 맛보기
PDF
Spark overview 이상훈(SK C&C)_스파크 사용자 모임_20141106
PDF
『9가지 사례로 익히는 고급 스파크 분석』 - 맛보기
PDF
sparklyr을 활용한 R 분산 처리
PPTX
Start spark
PDF
Deep learning framework 제작
PDF
Cloudera session seoul - Spark bootcamp
PDF
Spark_Overview_qna
PPTX
What is spark
PPTX
1.introduction(epoch#2)
PDF
Enhanced ai platform
PDF
PySpark 배우기 Ch 06. ML 패키지 소개하기
Spark Day 2017 Machine Learning & Deep Learning With Spark
100% Serverless big data scale production Deep Learning System
[264] large scale deep-learning_on_spark
Apache spark 소개 및 실습
Python & Spark
EMR 플랫폼 기반의 Spark 워크로드 실행 최적화 방안 - 정세웅, AWS 솔루션즈 아키텍트:: AWS Summit Online Ko...
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
Understanding MLOps
​『9가지 사례로 익히는 고급 스파크 분석(2판) 』 맛보기
Spark overview 이상훈(SK C&C)_스파크 사용자 모임_20141106
『9가지 사례로 익히는 고급 스파크 분석』 - 맛보기
sparklyr을 활용한 R 분산 처리
Start spark
Deep learning framework 제작
Cloudera session seoul - Spark bootcamp
Spark_Overview_qna
What is spark
1.introduction(epoch#2)
Enhanced ai platform
PySpark 배우기 Ch 06. ML 패키지 소개하기

Spark machine learning & deep learning

  • 1. Spark Machine Learning Deep Dive (feat. Deep Learning) 스사모(Spark Korea User Group) 김훈동
  • 2. Who am I ? • 김훈동 Chief Partner ( [email protected] ) • 신세계 그룹 온라인 포털 SSG.COM 빅데이타팀 리더 • Hadoop, Spark, Machine Learning, Azure ML 분야 Microsoft MVP(Most Valuable Professional) • Major in BigData RealTime Analytics & NoSQL • http://hoondongkim.blogspot.kr
  • 3. I will say … • Spark Cluster 운영 경험 및 노하우 공유 • Spark로 하는 Machine Learning 에 대하여 • 장점과 단점 • Machine Learning & Deep Learning 분야에서의 Spark의 위상 • Spark 를 보완하는 다양한 도구 및 기술들 • Spark 개발자가 Deep Learning 시대에 임하는 자세
  • 4. 제가 속한 조직에 대하여…
  • 6. So What? He said “그래서 어쩌라고?”
  • 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년 전 요즘
  • 10. BigData + Deep Learning Approach
  • 15. 개발자가 AI시대를 임하는 자세! 혹은 Math 와 통계,산업공학,인지과학 그리고 PH.D 가 난무하는 이 바닥에 가진 거라 곤 Develop Sprit 밖에 없는 개발자 Base의 Data Scientist가 존재감을 지키는 방법에 대하여! 고찰…
  • 16. 나는 빅데이타 개발자야! vs 나도 데이터 과학자야! Are you Data Scientist? 통계를 공부해야 하나? 수학을 다시 공부해야 하나? 이 분야는 내 분야가 아닌가?
  • 17. 다짐을 하게 된 계기…
  • 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. Spark 의 Position! - Spark 개발자가 BigData Scale ML Job을 처리하는 시나리오!
  • 20. Spark 의 Position! - Spark 개발자가 BigData Scale ML Job을 처리하는 시나리오!
  • 21. Spark ML 에 알고리즘이 없는 경우의 최 후의 보루! 직접 구현???
  • 23. Spark 특징 • Scala • Java • Python • R
  • 26. 언어별 장점 섞어 쓰기 • Scala + Java • PySpark + Python • SparkR + RevoScaleR(MS R) + CRAN-R
  • 27. Spark ML 에 알고리즘이 없는 경우의 최 후의 보루! 직접 구현??? 복잡한 알고리즘의 구현은 Java 가 좀 쉽긴 함. (example github source 도 많고…) 병렬성을 고려한 처리는 Java 로 구현하는것에 한계. 병렬성을 위한 Main routine 은 Scala 로…
  • 30. SAS vs Hive vs Spark
  • 31. SAS vs Hive vs Spark
  • 32. SAS vs Hive vs Spark
  • 33. SAS vs Hive vs Spark
  • 34. SAS vs Hive vs Spark
  • 35. 숲을 봐 보자(SAS vs Hive vs Spark)
  • 36. 숲을 봐 보자 • Prediction IO Example • 실무에서 ML Model 의 implementation 은 생각만큼 단순하지 않다. • Prediction IO 정도가 Full Range 를 숲 관점으로 접근 한다.
  • 37. R on Spark 에 대하여 • SparkR • Sparklyr • RevoScaleR(MS R)
  • 38. RevoScaleR on Spark 성능비교 1 Machine on MS-SQL Server 7 Machine on Spark Cluster Y축 : Elapsed Time 낮을 수록 성능 좋음. 8Core – 65GB Memory. 7 Machine.
  • 40. Spark Machine Learning 보완 도구들
  • 41. Spark & Deep Learning • Deep Water 의 예
  • 42. Spark & Deep Learning • BigDL 예
  • 43. Spark Deep Learning Deep Dive • Keras + Tensorflow + Spark : elephas
  • 44. Spark Deep Learning Deep Dive
  • 45. 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
  • 46. 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 스케줄러를 정교하게 추가 세팅할 필요가 있다.
  • 47. Spark ML 실무 Pain Point 시나리오 #2
  • 48. 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 의 경우… 리소스에 매우 민감)
  • 49. 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 도 동 원 가능 )
  • 50. 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 등이 복합 적이기 때문.
  • 51. 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 연동 안 검토
  • 52. Spark ML 실무 Pain Point 시나리오 #7 • 너무 느릴때 • 각종 Model 의 Hyper Parameter 를 적절히 변경해 주어야 함. • Driver Memory, Executor Memory 를 적절히 지정해 주어야 함. • Data 를 BroadCast. • 최초에 한번 Heavy Computing 이 필요하더라도, 아래 기법 잘 활용해야 함.
  • 53. Broadcast 를 잘 써야 함….
  • 54. 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 가 더 유리.
  • 55. 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 시점 에는 전수 데이터 이용.
  • 56. Spark ML 실무 Pain Point 시나리오 #10 • 알고리즘은 존재하는데 메소드가 너무 빈약 • 막상 알고리즘은 존재하는데, 고급 기법이나 파라미터, 각종 부가 메소 드가 존재하지 않는 경우가 많음. • Word2Vec 의 예 • FP-Growth 의 예
  • 57. Spark ML 실무 Pain Point 시나리오 #11 • 알고리즘이 존재하지 않는 경우. (ML 의 경우) • 알고리즘이 존재하지 않는 경우. (Deep Learning 의 경우)
  • 58. 기타. • 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 코드 베이스로 흡수??

Editor's Notes

  • #4: 제가 한 경험에 대하여 말해보려고 합니다.
  • #5: SSG 과거 현재 미래
  • #6: 이중 spark 라는 단어는 Spark Job, Spark R , Spark Streaming , Machine Learning & Deep Learning 쪽에 Spark ML 이렇게 3곳에 등장하고 있다 오늘은 이중에 Spark ML ,그리고 Deep Learning 에서의 활용 에 대하여 살펴볼 예정이며, 다음과 같은 여러 에코 시스템 중에 어떻게 중추적인 역할을 하고 있는지 Spark의 포지셔닝에 대하여 살펴보도록 하겠습니다.
  • #47: Disk 병목은 Hyper-Parameter 값 설정으로 극복해야 한다. Trade Off. - IO 병목은 흔하진 않다. 가끔은 IO 병목이 생기는 경우가 있는데, (굉장히 많은 양의 데이터를 다룰때) Network 카드를 10G로 바꾸면, 혹은 10G 카드를 2개 ~ 4개 꼳아 주면??? 15~20% 정도의 속도 개선이 생긴다. Network 속도 자체는 수십배 좋아졌지만, 20% 이상 성능 개선이 되는 경우는 거의 없다. 대부분 리소스 병목은 CPU, Memory , IO 등이 복합적이기 때문.
  • #50: Disk 병목은 Hyper-Parameter 값 설정으로 극복해야 한다. Trade Off. - IO 병목은 흔하진 않다. 가끔은 IO 병목이 생기는 경우가 있는데, (굉장히 많은 양의 데이터를 다룰때) Network 카드를 10G로 바꾸면, 혹은 10G 카드를 2개 ~ 4개 꼳아 주면??? 15~20% 정도의 속도 개선이 생긴다. Network 속도 자체는 수십배 좋아졌지만, 20% 이상 성능 개선이 되는 경우는 거의 없다. 대부분 리소스 병목은 CPU, Memory , IO 등이 복합적이기 때문.
  • #51: - IO 병목은 흔하진 않다. 가끔은 IO 병목이 생기는 경우가 있는데, (굉장히 많은 양의 데이터를 다룰때) Network 카드를 10G로 바꾸면, 혹은 10G 카드를 2개 ~ 4개 꼳아 주면??? 15~20% 정도의 속도 개선이 생긴다. Network 속도 자체는 수십배 좋아졌지만, 20% 이상 성능 개선이 되는 경우는 거의 없다. 대부분 리소스 병목은 CPU, Memory , IO 등이 복합적이기 때문.
  • #59: Tensorflow 가 인기인 이유 GPU + 멀티노드 의 용이함. ( 기존 강자 Theano , Torch 를 따돌리는 계기가 됨. ) Lua 보다는 Python ( Torch 의 경우 대비… ) Tensorflow Serving Scikit flow (현재 Tensorflow 에 합쳐짐. TF.Learn 패키지. Scikit Learn 스타일 Tensorflow Wrapper API)