게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
1. 신 세 계 그 룹 S S G . C O M B i g D a t a & A I P a r t L e a d e r
H o o n D o n g , K i m A I M V P
개발과 개발자를 위한 최상의 플랫폼
부제: AI Production 서비스를 위한 개발 도구 및 플랫폼
2. • 김훈동 Chief Partner
• 신세계 그룹 온라인 포털 SSG.COM BigData&AI Part Leader
• 스사모(Korea Spark User Group) 운영진
• BigData 분야 Microsoft MVP(Most Valuable Professional) 선정
2016년, 2017년
• AI 분야 Microsoft MVP(Most Valuable Professional) 선정
2018년
• http://hoondongkim.blogspot.kr [블로그]
• https://www.facebook.com/kim.hoondong [SNS]
I am …
3. 진화의 시작!
AI 시대의 발현!
- BigData 기술 등장
(2003~2010년대)
- NoSQL 기술 등장
(2007~2013년대)
- Container & Microservice 기술 등장
(2014년대~)
- Deep Learning 고도화 기술 등장
(2015년대~)
• IaaS
• SaaS
• PaaS
• Serverless
/ BaaS
Cloud 태동!
그리고…
위 기술들의 융합
6. [Alibaba] Reinforcement Learning to Rank
in E-Commerce Search Engine
• By Alibaba & Taobao
• https://arxiv.org/abs/1803.00710
실시간성…
개인화…
Training & Serving 이 동시에…
7. [Netflix] Realtime Recommendation (원순환구조)
ML/DL 의 기저에 BigData Lambda Architecture 가 존재.
실시간성…
개인화…
On Lambda Architecture
왜 Netflix 는 100만 달러 Competition 에서 우승한 알고리즘을 사용하지 않는가?
8. First Mover 들이 달성한 아키텍처를
Open Source 로 Fast Follow 하기 위한 아키텍처…
Open Source
Cluster System
30여개????
+
Lambda
Architecture
Batch
원순환!
realtime
원순환!
저걸 우리도 다
구축해야 하나?
10. Fast Follow 해보기 전에…
그러한 아키텍처,
그러한 고도화 기술들이 ,
나오게 된 배경
Microservice, Serverless, Cloud, PaaS, BaaS, DevOps …
BigData PaaS, NoSQL PaaS …
Machine Learning & Deep Learning …
Realtime Lambda Architecture …
Cutting-Edge Technology
11. 국내 상위 쇼핑몰 정도 트래픽,
요즘 트랜디한 개인화 추천 정도 하려고 해도…
• RDBMS -> 현존 최고 HW 로 Oracle 5 Node 로도…
• MariaDB 샤딩 시스템. 수천대. Select 부하분산.
• 큰 테이블 Data 는? Insert & Update 는?
• NoSQL + RDBMS 샤딩(R) + RDBMS Master for (CUD)
+ Kafka (Message Queue for Data Sync)
• 복잡한 RDBMS 로직 SQL => NoSQL 로 마이그레이션 불가???
• NoSQL + RDBMS 샤딩(R) + RDBMS Master for (CUD)
+ Kafka (Message Queue for Data Sync) + Redis(Memory Cache)
+ MicroService (Scale Out WAS for 복잡한 Business Logic 의 Application layer 처리 )
+ Machine Learning/Deep Learning Training/Serving Layer Auto Scale Out Infra 구성
(예, Tensorflow,CNTK Serving PaaS 혹은 flask Serverless Microservice) + 기타(Docker, K8S, DevOps…)
1세대
2세대
3세대
4세대
12. 국내 상위 쇼핑몰 정도 트래픽,
요즘 트랜디한 개인화 추천 정도 하려고 해도…
• 더 이상 Data Analytics 자체는 경쟁력이 아니다.
• 더 이상 Machine Learning 자체는 진입 장벽이 아니다.
• Deep Learning 은 아직까지는 경쟁력이나, 점점 툴이 막강해지고, 쉬워지고 있다.
• BigData Scale Machine Learning 도 경쟁력이다. (최신성 + Big Scale + 개인화)
• 더 더 어려운 문제는 Advanced Analytics 의 결과물을 개인화 하여 노출하고, 그 반응을 다시
실시간으로 모델에 리턴 하여, 그로부터 즉각적인 원순환 시스템을 만든 것 이다. (예, 고객
실시간 검색 히스토리, 클릭 스트림 에 반응하는 Dynamic 한 개인화 추천. 개인화 된 Dynamic
Pricing 모델, Enterprise Full Stack Chatbot 등)
• Machine Learning / Deep Learning 시스템에 있어서 Serving Layer 의 중요성
BigData + MicroService + DevOps + Auto Scale Out Training + Auto Scale Out Serving 은
Best Production AI 를 위한, 선택이 아닌 필수
13. Best Production AI
[1]~[4] 각 레이어의 관계는?
• [1] RDB Sharding, Web, App, Front Tech… 는 기본 중에 기본.
• [2] BigData, NoSQL, Microservice, Analytics 는?
• [3] AI(Machine Learning, Deep Learning) Training 은?
• [4] AI Serving 은? 실시간 AI 서비스는?
각각 경쟁관계가 아님.
상호 보완 관계.
[1] RDB, Web, App, AI Front
[2] BigData, NoSQL
Microservice, Analytics
[3] AI
Training
BigData
NoSQL/Spark
NoSQL/
Spark Streaming/
Microservice/
RDB Sharding
[4] AI
Serving
고로,
종합 예술이다!
Engineering Art 다!
14. Cutting-Edge Technology 로 좀더 Drill Down
[2] BigData & NoSQL & Lambda Architecture
( Spark, Hadoop, Kafka, Nifi, Cassandra, Redis, ELK, etc…)
[3] AI > Machine Learning > Deep Learning
(Tensorflow, MXNet, Keras, CNTK, BigDL, Horovod, etc…)
[4] Cloud, DevOps(CI/CD), Realtime Serving
(Docker, Kubernetes, Microservice, Severless, PaaS/BaaS, etc…)
• [2]를 만난 [3] 에 대하여,
• [3]을 보완하는 [4]에 대하여,
• [4] 의 즉각적인 서비스 결과 및 개별 반응이, 다시 [1][2] 로…
15. 그렇다면…
이를 어떻게 구현 할 것인가?
Production AI
on
Cutting-Edge Technology
26. Apache Spark + HDInsight IO Cache
On Azure ( For 9X speed up )
Azure HDInsight IO Cache is available on Azure HDInsight 3.6 and
4.0 Spark clusters on the latest version of Apache Spark 2.3.
27. 우리는 어떻게 하고 있나?
SSG.COM Use Case!
Production AI &
Cutting-Edge Technology
On
Azure
33. 우리는(SSG.COM) 어떻게 했는가?
• 과거를 분석 한다. (BigData Eco System Infra)
• 트래킹 로그를 남긴다.
• 빅데이타 수집 저장 분석을 위한 인프라를 만든다.
• 빅데이타 배치로 과거 시계열 분석을 하고 시각화를 한다.
• 현재에 반응 한다. (RealTime Layer / kafka , Spark Streaming / ELK)
• 실시간으로 데이터 스트림을 분석한다.
• FDS, 보안관제, 모니터링 등 즉각적으로 현재 상황에 대처하여 현재를 능동적으로 대비한다.
• 미래를 예측 한다. (Mining / Machine Learning / Deep Learning R&D)
• 고객이 관심 갖고 있고 곧 살 것 같은 것을 추천한다.
• 미래에 집행할 광고 및 제휴 채널 예산을 보다 ROI 높게 배분한다.
• 발주를 예측한다.
• 최적의 트럭 경로를 예측한다.
• 가격을 올릴지 말지 얼마나 세일할지 최적의 가격을 예측한다.
• 미래 예측을 고도화 한다. (Machine Learning / Deep Learning Production)
• Chatbot
• 자연어 활용, 이미지 활용 -> 검색 및 추천 고도화
• NLP , Item2Vec, etc…
• 미래 예측에 개인화 및 실시간성을 더한다. (BigData Scale Deep Learning)
• 다중 접속자를 위한 개인화 Deep Learning 서비스.
• BigData Scale Training , BigData Scale Inference.
• Auto Scale Out 모델 배포, 무중지 Deep Learning 모델의 진화 및 원순환 배포.
• 기존 Machine Learning , Deep Learning 모델의 freshness , personalization 고도화.
5~6년 전
3~5년 전
1~2년 전
2~3년 전
요즘
순서가 있고,
단계가 있고,
아랫 기술은 윗
기술로부터 시너지가
나더라….
34. Finally, We made BigData Scale AI Infra on Hybrid Cloud.
Public cloud
Hadoop / NoSQL
Spark / Anaconda
Spark ML Mahout Sk-learn/gensim Tensorflow/CNTK
TensorflowOnSpark
Kera
s
On-Premise
Spark
On-premise
Serverless / K8S PaaSServerless
PaaS
& AI Infra
Microservices
Web/Was Docker / BaaS
각종 PaaS
AI BaaS/SaaS
PaaS App Container
PaaS GPU Container
ML/DL PaaS &
BigData Lake PaaS &
GPU Notebooks
4~5년 전
2~3년 전
최근
최근의 아키텍처 …
35.
36. Auto Scale Out &
Auto Scale Down
무중지 배포
SSG.COM Use Case!
Production AI &
Cutting-Edge Technology
On
Azure
38. Auto Scale Out / 무중지 배포
Deep Learning Training & Serving On Serverless
FaaS/BaaS/PaaS (Zero VM) (for Production)
Azure Web App
For Linux Docker
Team Service
39. 100% Serverless
PaaS + BaaS(Docker) + FaaS
Production AI Performance!
SSG.COM Use Case!
Production AI &
Cutting-Edge Technology
On
Azure
40. Keras Scale Up vs. Horovod Scale Out
On Azure Batch AI(GPU) Performance Comparison.
My Blog : http://hoondongkim.blogspot.kr/2018/01/deep-learning-multi-host-multi-gpu_11.html
On
Azure Batch AI
(GPU)
41. Deep Learning Online Inference Load Test
CPU vs GPU (1 time Inference. BatchSize=1)
My Blog : http://hoondongkim.blogspot.kr/2017/12/deep-learning-inference-serving.html
CPU Serving : 1 Machine 265 TPS
GPU Serving : 1 Machine 16 TPS
CPU 1000 Times Serial Execution
GPU 1000 Times Serial Execution
Load Test Result!
On
Azure DSVM
(GPU)
병렬성이
약한 LSTM
예
42. Deep Learning Inference Performance!
(On Docker Microservice) 성능에 대하여 …
My Blog : http://hoondongkim.blogspot.kr/2017/12/deep-learning-inference-serving.html
• Azure Data Science VM Performance
• Azure Web App for Linux Docker Performance
• Auto Scale Out Features
[Quiz] What are the **** ?
43. BigData Scale
AI & Data Science
Polyglot 중요성
SSG.COM Use Case!
Production AI &
Cutting-Edge Technology
On
Azure
44. SSG.COM Distributed R on Spark
1 Machine on MS-SQL Server 7 Machine on Spark Cluster
Y축 : Elapsed Time 낮을 수록 성능 좋음.
8Core – 65GB Memory. 7 Machine.
Polyglot!
BigData Scale R
46. Jupyter on Azure DSVM
SSG.COM
Jupyter Notebook 도
BigData Scale 로
Jupyter on Azure Notebooks
Polyglot!
BigData Scale
Jupyter Notebook
47. SSG.COM BigDL
GPU Memory Resource 가 문제될 때는
BigData Scale Large Cluster Parallel Deep
Learning Approach with BigDL
• BigDL Deep Learning Job on Hadoop Yarn Manager (by Spark Job)
Polyglot!
BigData Scale
Scala
Deep Learning
48. SSG.COM BigDL
GPU Memory Resource 가 문제될 때는 BigData Scale Large Cluster Parallel Deep
Learning Approach with BigDL
• BigDL Deep Learning Text Classification
Polyglot!
BigData Scale
Scala Deep Learning
BigDL
Deep Learning은
Memory Resouce 를
BigData Scale 로
확장 가능.
49. SSG.COM TensorflowOnSpark
Tensorflow 의 Legacy Code를 활용한
BigData Scale Deep Learning은?
• TensorflowOnSpark 수행 결과
Polyglot!
BigData Scale
Python + Tensorflow
Deep Learning
50. SSG.COM
Tensorflow + CNTK + Keras + Horovod + Azure Batch AI
Tensorflow(or CNTK) + Keras + Horovod + Azure Batch AI
=> Multi GPU + Multi Host , Distributed Deep Learning Training
My Blog : http://hoondongkim.blogspot.kr/2018/01/deep-learning-multi-host-multi-gpu.html
51. SSG.COM
Tensorflow + CNTK + Keras + Horovod + Azure Batch AI
Tensorflow(or CNTK) + Keras + Horovod + Azure Batch AI
=> Multi GPU + Multi Host , Distributed Deep Learning Training
My Blog : http://hoondongkim.blogspot.kr/2018/01/deep-learning-multi-host-multi-gpu.html
Polyglot!
BigData Scale
Python + Tensorflow + CNTK
+ Keras + Horovod
Muti Host, Muti GPU, Distributed Deep Learning
(Auto Scale Out & Scheduling Batch Process)
On Azure Batch AI
52. SSG.COM
라이브러리나 패키지가 없을 때는 직접 구현…
복잡한 알고리즘의 고성능(Python 은 느려서…) 구현은 Java 가 좀 쉽긴 함.
But, 병렬성을 고려한 처리는 Java 로 구현 하는것에 한계.
병렬성, 고성능을 위해서는 Scala + Spark RDD 로…
Polyglot!
BigData Scale
Java(algorithm) +
Scala(RDD) +
On Spark
(Distributed In-memory)
Algorithm Internal
은 Java
RDD Map Looping
은 Scala
53. SSG.COM
라이브러리나 패키지가 없을 때는 직접 구현…
복잡한 알고리즘의 고성능(Python 은 느려서…) 구현은 Java 가 좀 쉽긴 함.
But, 병렬성을 고려한 처리는 Java 로 구현 하는것에 한계.
병렬성, 고성능을 위해서는 Scala + Spark RDD 로… One Source,
Multiple Language.
이건 Java,
나머지는 Scala…
Language 섞어
쓰기 신공…
Polyglot!
BigData Scale
Java(algorithm) +
Scala(RDD) +
On Spark
(Distributed In-memory)
54. SSG.COM C# Azure Function
의외로… Microservice & Serverless 에서 장점이 많은 C#
• Java Serverless 는
• Java Library 하위호환성 취약성으로 확장성 결여.
• Python Serverless 는
• 낮은 성능 퍼포먼스.
• 비동기, 쓰레드 취약.
• docker 확장 배포 시 pip install. 이 과정에서 Java python
패키지나 일부 C Python 패키지는 설치 Dependency 문제 발생.
(예, Jpype 패키지, OS Dependency, Driver Dependency)
• Node.js Serverless 는
• 낮은 성능 퍼포먼스.
• C# Serverless 는
• 높은 성능 퍼포먼스.
• 비동기 강점.
• 강한 하위호환성.
• Library 호환성.
• DLL 패키징을 통한 배포 확장 용이
Polyglot!
BigData Scale
Serverless +
Microservice +
CI/CD +
C# Azure Function!
55. 요즘 Cutting-Edge 기술들이 나오게 된 배경
Microservice, Serverless, Cloud, PaaS, BaaS, DevOps …
BigData PaaS, NoSQL PaaS …
Machine Learning & Deep Learning …
Realtime Lambda Architecture …
For Better Production AI …
결국, AI 시대의 발현과 무관하지 않았음!
결론
57. 집단 지성의 힘!
검증된 것들을 MashUp!
핵심경쟁력이 아닌 것은 빠르게 하는 것이 더 좋음….
(Over Engineering 방지)
(Open Source + Cloud PaaS)
요즘 가장 Hot 한 Develop 방식들이 추구하는 것들…
• No-Ops(or Dev Ops, Agile, Serverless, Microservices… 이게 목적이 되면 안됨. 수단일 뿐.)
• Scale(유연한 Scale Out, Scale Down, 유연성, 확장성)
• Low Cost(개인화와 최신성, 최신 기법 적용을 위해 필수적 요소)
• Performance (동접 성능, 모델 성능, 개발생산성)
다 직접 개발하는 것이 능사는 아니다!
58. Low Cost & Agile & Serverless 접근 방법에 대하여
1 Docker ,
1시간에 얼마?
1달에 얼마?
1,000,000 Transaction 에
얼마???
이 단계로 포팅하려면,
Deep Learning Output
그래프 노드 값을
Graph DB 화 하거나,
Hash DB 등 으로
inverted-Index 화 해야
하며, 고 난이도의
Engineering 작업이
수반 됨.
딥러닝 모델러는 Graph DB,
Microservice 를 모르고…,
NoSQL 개발자는
딥러닝을 모르고…
GPU VM > CPU VM > GPU Docker > CPU Docker > K8S PaaS > Docker PaaS > Docker BaaS > ML BaaS > Serverless Microservice
GPU on-premise
1 GPU VM ,
1 달에 얼마?
이 단계로 되면,
알리바바 Scale의 Front
AI 서비스가 매우
빠르고 매우 저렴하게
적용 가능.
Deep Learning Framework
자체는 여기 까지만 구동
가능
Production AI 는 모델링 보다 Engineering 이 더 어렵다.
Production AI 는 Engineering Art 에 가깝다.
Cloud 를 잘 활용한다면, 개발자가 유리한 부분이 많다!
60. Production A/B Test 에서 중요한 것!
Sample Data, Selected
Feature 정교한 모델
주1회 or 일1회
모두에게 적용하는
정교한 단일 모델
최고 정확도
VS
더 많은 Data(or 전수
Data)에 적용하는 Simple
모델
최신성
(매 시간 or 준실시간)
개인화 모델
덜 정확해도 빠르고,
다수에게, 실시간으로…
논문 쓸 때랑, Kaggle 할 때와 달라요!
61. SSG.COM ***예측(회귀) 모델 (By BigData + AI)
Item
Average
Accuracy
68%
90%
49%
38%
Regression
/ Python
Decision
Tree
/ Python
초기방
식
/
15일
컬럼
4개
사용
/
15일
컬럼
6개
사용
/
15일
Random
forest
/ Python
컬럼
6개
사용
/
15 일
Time Series
Deep Learning
+ TensorflowOnSpark
컬럼
26개
사용
/
3년
Random
forest
/Spark ML
컬럼
6개
사용
/
3년
Rule
Python
BigData + ML
XGBoost
/ Python
컬럼
6개
사용
/
15 일
3년 데이터.
Incremental
Continuous
Learning.
Time Series
Deep Learning
Tensorflow
+ Spark
(Scale Out)
Single Host + DL
BigData + DL
컬럼
26개
사용
/
15일
Time Series
Deep Learning
/ Tensorlfow
Data 크기
/병렬성 Data 크기
/병렬성
For 최신성
Locally Weighted
Regression
63. AI 시대에 리더가 임하는 자세!
• Think Big.
• 길게 보고 Plan을 세우자.
• 당장의 효과에 연연하지 말자.
• Bottom Up! ( Not Top Down! )
• 유행에 편승해서, 혹은 윗 분들의 지시에 의해서가 아닌,
• 실무자(Self Motivated 된)들에 의해 기획,개발 하고,
• 내부 내재화를 고려하며 지속적 고도화 하도록 하자.
• 작게 그리고 빠르게 시작하자.
• 데이터를 빨리 쌓는게 더 중요.
• 모델이 진입장벽이 아니라, 데이터가 더 진입 장벽.( Bigdata Infra 중요)
• Mashup 하고, 결합 Merge 하고, 반복 개선 시키자.
그럼 Top 에서 할 일은?
• Motivation. 동기부여.
• 환경조성.
• 방향성 부여.
• Self Motivated 된 직원들에게 길을
열어주는 것.
• 강요가 아닌 마음을 움직이는 것이 필요.
때로는 내재화보다, 기민함이 더 중요할 수 있으며,
Cloud PaaS 는 이 경우 Key Factor 가 될 수 있음.
64. Thank You
• 기타 문의는…
• http://hoondongkim.blogspot.kr
• https://www.facebook.com/kim.hoondong
Q & A
4층 로비 왼편 안쪽
MVP 부스(Ask the Expert 부스)