SlideShare a Scribd company logo

Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps Cycle

[Tensorflow-KR Offline 세미나 발표자료] Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps Cycle 구성 방법론. (Azure Docker PaaS 위에서 1만 TPS Tensorflow Inference Serving 방법론 공유)

1 of 59
Download to read offline
Auto Scalable 한 Deep Learning Production 을 위한 AI Service Infra 구성
및 AI DevOps Cycle
(Feat. 10 Docker 로 1만 TPS Inference 구축해 보기)
SK Telecom / AI Center / AI Product DevOps Team
김훈동,박찬엽
We are …
• Chan Yup Park
- SK Telecom , AI Center , AI Product DevOps
Team, AI DevOps Engineer
- 툴링에 관심이 많아 docker, kubernetes의
운영/관리/배포등의 과정을 개선하는 일을
맡고 있습니다.
- R로 개발 경험을 시작해서 관련 생태계에
기여하기 위해 노력하고 있습니다.
http://hoondongkim.blogspot.kr [블로그]
https://www.slideshare.net/ssusere94328/ [슬라이드 쉐어]
https://www.facebook.com/kim.hoondong [SNS]
• Hoon Dong Kim.
- SK Telecom , AI Center , AI Product DevOps Team Leader.
- Microsoft BigData MVP(Most Valuable Professional) :
2016년 ~ 2017년
- Microsoft AI MVP(Most Valuable Professional) :
2018년 ~ 2019년
- Korea Spark User Group (스파크 사용자 모임) 운영진
https://mrchypark.github.io/[블로그]
https://github.com/mrchypark [github]
Agenda
1. Production AI Serving Infra 구성 및 방법론
2. Production AI Open Source Eco System
3. Production AI DevOps
1. Production AI Serving Infra 구성 및 방법론
Pain Point 1 – DL Serving Dilemma
• [방법1] Tensorflow Serving
• bazel 빌드 , C++ code, gRPC.
• python serving performance 좋지 않음.
• 요즘은 pytorch, mxnet 하시는 분들도 급격히 늘고 있음.
• Scikit learn 전처리 모델은?
• [방법2] Cloud PaaS
• Azure Machine learning Service , AWS SageMaker , GCP CloudML
• 3사가 다 10%가 부족한 부분이 있음.
• 매우 비쌈.
• [방법3] Flask 등을 이용한 범용 서빙 아키텍처 구성
• 빠르고 쉽게 prototype 할 수 있으나, production을 하기 위해선 험난한 Engineering Art 가 필요함.
• Python 은 너무 너무 * 10 느린 언어 임.
• [방법4] Full 사양 GPU 서버 혹은 VM 이용. Tensor-RT !!!
• 월 4만원 짜리 CPU Docker vs 월 1000만원 짜리 최신 GPU VM
• 미지원 Layer 들은 어떻게??
• Nvidia Docker 활용 시 활용성은 점점 좋아지고 있음.
• Model 종류, batch Size 갯수, 동접 Variation 패턴
• [방법5] cloud serverless + cloud NoSQL, 기타
• 초저렴, 안정적, 글로벌 스케일 트래픽
• Deep Learning 의 Output 바로 전단계 Layer 를 주로 활용.
• 차원 축소 이후 Vector Embedding Mapping , approximate KNN , Top N Cosign Similarity Item 을 Graph DB 에 넣어 네트워크 구성,
• Tensorflow.js , grpahQl, PMML
Pain Point 1 – ML Serving Dilemma
Tensorflow Serving 만 가지고는…
• ML Serving for Lots of Frameworks

Recommended

오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...Amazon Web Services Korea
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지NAVER D2
 
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍Chris Ohk
 
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍흥배 최
 
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들Chris Ohk
 
TERA Server Architecture
TERA Server ArchitectureTERA Server Architecture
TERA Server Architectureujentus
 
상상을 현실로 만드는, 이미지 생성 모델을 위한 엔지니어링
상상을 현실로 만드는, 이미지 생성 모델을 위한 엔지니어링상상을 현실로 만드는, 이미지 생성 모델을 위한 엔지니어링
상상을 현실로 만드는, 이미지 생성 모델을 위한 엔지니어링Taehoon Kim
 

More Related Content

What's hot

코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)Suhyun Park
 
Data Engineering 101
Data Engineering 101Data Engineering 101
Data Engineering 101DaeMyung Kang
 
파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)Heungsub Lee
 
08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드noerror
 
MongoDB, E-commerce and Transactions
MongoDB, E-commerce and TransactionsMongoDB, E-commerce and Transactions
MongoDB, E-commerce and TransactionsSteven Francia
 
『DirectX 12를 이용한 3D 게임 프로그래밍 입문』 - 맛보기
『DirectX 12를 이용한 3D 게임 프로그래밍 입문』 - 맛보기『DirectX 12를 이용한 3D 게임 프로그래밍 입문』 - 맛보기
『DirectX 12를 이용한 3D 게임 프로그래밍 입문』 - 맛보기복연 이
 
암호화 이것만 알면 된다.
암호화 이것만 알면 된다.암호화 이것만 알면 된다.
암호화 이것만 알면 된다.KwangSeob Jeong
 
게임서버프로그래밍 #7 - 패킷핸들링 및 암호화
게임서버프로그래밍 #7 - 패킷핸들링 및 암호화게임서버프로그래밍 #7 - 패킷핸들링 및 암호화
게임서버프로그래밍 #7 - 패킷핸들링 및 암호화Seungmo Koo
 
golang과 websocket을 활용한 서버프로그래밍 - 장애없는 서버 런칭 도전기
golang과 websocket을 활용한 서버프로그래밍 - 장애없는 서버 런칭 도전기golang과 websocket을 활용한 서버프로그래밍 - 장애없는 서버 런칭 도전기
golang과 websocket을 활용한 서버프로그래밍 - 장애없는 서버 런칭 도전기Sangik Bae
 
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델Seungmo Koo
 
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기Brian Hong
 
An Abusive Relationship with AngularJS
An Abusive Relationship with AngularJSAn Abusive Relationship with AngularJS
An Abusive Relationship with AngularJSMario Heiderich
 
Multiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremMultiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremSeungmo Koo
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019devCAT Studio, NEXON
 
[NDC 발표] 모바일 게임데이터분석 및 실전 활용
[NDC 발표] 모바일 게임데이터분석 및 실전 활용[NDC 발표] 모바일 게임데이터분석 및 실전 활용
[NDC 발표] 모바일 게임데이터분석 및 실전 활용Tapjoy X 5Rocks
 
Massive service basic
Massive service basicMassive service basic
Massive service basicDaeMyung Kang
 
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요NAVER D2
 
Next-generation MMORPG service architecture
Next-generation MMORPG service architectureNext-generation MMORPG service architecture
Next-generation MMORPG service architectureJongwon Kim
 
Iocp 기본 구조 이해
Iocp 기본 구조 이해Iocp 기본 구조 이해
Iocp 기본 구조 이해Nam Hyeonuk
 
서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해중선 곽
 

What's hot (20)

코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
 
Data Engineering 101
Data Engineering 101Data Engineering 101
Data Engineering 101
 
파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)
 
08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드
 
MongoDB, E-commerce and Transactions
MongoDB, E-commerce and TransactionsMongoDB, E-commerce and Transactions
MongoDB, E-commerce and Transactions
 
『DirectX 12를 이용한 3D 게임 프로그래밍 입문』 - 맛보기
『DirectX 12를 이용한 3D 게임 프로그래밍 입문』 - 맛보기『DirectX 12를 이용한 3D 게임 프로그래밍 입문』 - 맛보기
『DirectX 12를 이용한 3D 게임 프로그래밍 입문』 - 맛보기
 
암호화 이것만 알면 된다.
암호화 이것만 알면 된다.암호화 이것만 알면 된다.
암호화 이것만 알면 된다.
 
게임서버프로그래밍 #7 - 패킷핸들링 및 암호화
게임서버프로그래밍 #7 - 패킷핸들링 및 암호화게임서버프로그래밍 #7 - 패킷핸들링 및 암호화
게임서버프로그래밍 #7 - 패킷핸들링 및 암호화
 
golang과 websocket을 활용한 서버프로그래밍 - 장애없는 서버 런칭 도전기
golang과 websocket을 활용한 서버프로그래밍 - 장애없는 서버 런칭 도전기golang과 websocket을 활용한 서버프로그래밍 - 장애없는 서버 런칭 도전기
golang과 websocket을 활용한 서버프로그래밍 - 장애없는 서버 런칭 도전기
 
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
 
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기
 
An Abusive Relationship with AngularJS
An Abusive Relationship with AngularJSAn Abusive Relationship with AngularJS
An Abusive Relationship with AngularJS
 
Multiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremMultiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theorem
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
 
[NDC 발표] 모바일 게임데이터분석 및 실전 활용
[NDC 발표] 모바일 게임데이터분석 및 실전 활용[NDC 발표] 모바일 게임데이터분석 및 실전 활용
[NDC 발표] 모바일 게임데이터분석 및 실전 활용
 
Massive service basic
Massive service basicMassive service basic
Massive service basic
 
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
 
Next-generation MMORPG service architecture
Next-generation MMORPG service architectureNext-generation MMORPG service architecture
Next-generation MMORPG service architecture
 
Iocp 기본 구조 이해
Iocp 기본 구조 이해Iocp 기본 구조 이해
Iocp 기본 구조 이해
 
서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해
 

Similar to Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps Cycle

[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스Dan Kang (강동한)
 
Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos uEngine Solutions
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발Jeongkyu Shin
 
Image Deep Learning 실무적용
Image Deep Learning 실무적용Image Deep Learning 실무적용
Image Deep Learning 실무적용Youngjae Kim
 
Open infradays 2019_msa_k8s
Open infradays 2019_msa_k8sOpen infradays 2019_msa_k8s
Open infradays 2019_msa_k8sHyoungjun Kim
 
SOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AISOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AIJoongi Kim
 
Tensorflow for Deep Learning(SK Planet)
Tensorflow for Deep Learning(SK Planet)Tensorflow for Deep Learning(SK Planet)
Tensorflow for Deep Learning(SK Planet)Tae Young Lee
 
100% Serverless big data scale production Deep Learning System
100% Serverless big data scale production Deep Learning System100% Serverless big data scale production Deep Learning System
100% Serverless big data scale production Deep Learning Systemhoondong kim
 
designing, implementing and delivering microservices with event storming, spr...
designing, implementing and delivering microservices with event storming, spr...designing, implementing and delivering microservices with event storming, spr...
designing, implementing and delivering microservices with event storming, spr...uEngine Solutions
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018devCAT Studio, NEXON
 
Machine Learning Model Serving with Backend.AI
Machine Learning Model Serving with Backend.AIMachine Learning Model Serving with Backend.AI
Machine Learning Model Serving with Backend.AIJeongkyu Shin
 
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기Jinuk Kim
 
Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기KwangSeob Jeong
 
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetesNAVER D2
 
Kubernetes를 통한 laravel 개발프로세스 개선하기
Kubernetes를 통한 laravel 개발프로세스 개선하기Kubernetes를 통한 laravel 개발프로세스 개선하기
Kubernetes를 통한 laravel 개발프로세스 개선하기Changyeop Kim
 
[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가
[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가
[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가NAVER D2
 
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)Sang Don Kim
 
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스NAVER D2
 
지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기Ted Won
 
Python & Spark
Python & SparkPython & Spark
Python & Sparkitproman35
 

Similar to Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps Cycle (20)

[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
 
Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
 
Image Deep Learning 실무적용
Image Deep Learning 실무적용Image Deep Learning 실무적용
Image Deep Learning 실무적용
 
Open infradays 2019_msa_k8s
Open infradays 2019_msa_k8sOpen infradays 2019_msa_k8s
Open infradays 2019_msa_k8s
 
SOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AISOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AI
 
Tensorflow for Deep Learning(SK Planet)
Tensorflow for Deep Learning(SK Planet)Tensorflow for Deep Learning(SK Planet)
Tensorflow for Deep Learning(SK Planet)
 
100% Serverless big data scale production Deep Learning System
100% Serverless big data scale production Deep Learning System100% Serverless big data scale production Deep Learning System
100% Serverless big data scale production Deep Learning System
 
designing, implementing and delivering microservices with event storming, spr...
designing, implementing and delivering microservices with event storming, spr...designing, implementing and delivering microservices with event storming, spr...
designing, implementing and delivering microservices with event storming, spr...
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
 
Machine Learning Model Serving with Backend.AI
Machine Learning Model Serving with Backend.AIMachine Learning Model Serving with Backend.AI
Machine Learning Model Serving with Backend.AI
 
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
 
Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기
 
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
 
Kubernetes를 통한 laravel 개발프로세스 개선하기
Kubernetes를 통한 laravel 개발프로세스 개선하기Kubernetes를 통한 laravel 개발프로세스 개선하기
Kubernetes를 통한 laravel 개발프로세스 개선하기
 
[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가
[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가
[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가
 
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
 
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
 
지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기
 
Python & Spark
Python & SparkPython & Spark
Python & Spark
 

Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps Cycle

  • 1. Auto Scalable 한 Deep Learning Production 을 위한 AI Service Infra 구성 및 AI DevOps Cycle (Feat. 10 Docker 로 1만 TPS Inference 구축해 보기) SK Telecom / AI Center / AI Product DevOps Team 김훈동,박찬엽
  • 2. We are … • Chan Yup Park - SK Telecom , AI Center , AI Product DevOps Team, AI DevOps Engineer - 툴링에 관심이 많아 docker, kubernetes의 운영/관리/배포등의 과정을 개선하는 일을 맡고 있습니다. - R로 개발 경험을 시작해서 관련 생태계에 기여하기 위해 노력하고 있습니다. http://hoondongkim.blogspot.kr [블로그] https://www.slideshare.net/ssusere94328/ [슬라이드 쉐어] https://www.facebook.com/kim.hoondong [SNS] • Hoon Dong Kim. - SK Telecom , AI Center , AI Product DevOps Team Leader. - Microsoft BigData MVP(Most Valuable Professional) : 2016년 ~ 2017년 - Microsoft AI MVP(Most Valuable Professional) : 2018년 ~ 2019년 - Korea Spark User Group (스파크 사용자 모임) 운영진 https://mrchypark.github.io/[블로그] https://github.com/mrchypark [github]
  • 3. Agenda 1. Production AI Serving Infra 구성 및 방법론 2. Production AI Open Source Eco System 3. Production AI DevOps
  • 4. 1. Production AI Serving Infra 구성 및 방법론
  • 5. Pain Point 1 – DL Serving Dilemma • [방법1] Tensorflow Serving • bazel 빌드 , C++ code, gRPC. • python serving performance 좋지 않음. • 요즘은 pytorch, mxnet 하시는 분들도 급격히 늘고 있음. • Scikit learn 전처리 모델은? • [방법2] Cloud PaaS • Azure Machine learning Service , AWS SageMaker , GCP CloudML • 3사가 다 10%가 부족한 부분이 있음. • 매우 비쌈. • [방법3] Flask 등을 이용한 범용 서빙 아키텍처 구성 • 빠르고 쉽게 prototype 할 수 있으나, production을 하기 위해선 험난한 Engineering Art 가 필요함. • Python 은 너무 너무 * 10 느린 언어 임. • [방법4] Full 사양 GPU 서버 혹은 VM 이용. Tensor-RT !!! • 월 4만원 짜리 CPU Docker vs 월 1000만원 짜리 최신 GPU VM • 미지원 Layer 들은 어떻게?? • Nvidia Docker 활용 시 활용성은 점점 좋아지고 있음. • Model 종류, batch Size 갯수, 동접 Variation 패턴 • [방법5] cloud serverless + cloud NoSQL, 기타 • 초저렴, 안정적, 글로벌 스케일 트래픽 • Deep Learning 의 Output 바로 전단계 Layer 를 주로 활용. • 차원 축소 이후 Vector Embedding Mapping , approximate KNN , Top N Cosign Similarity Item 을 Graph DB 에 넣어 네트워크 구성, • Tensorflow.js , grpahQl, PMML
  • 6. Pain Point 1 – ML Serving Dilemma Tensorflow Serving 만 가지고는… • ML Serving for Lots of Frameworks
  • 7. Pain Point 1 – 해결 팁 1
  • 8. Pain Point 1 – 해결 팁 2 초 저렴 vCPU Docker (월 4만원) Vs Avengers 급 GPU Docker (월 1000만원) • [방법1] Tensorflow Serving • bazel 빌드 , C++ code, gRPC. • python serving performance 좋지 않음. • 요즘은 pytorch, mxnet 하시는 분들도 급격히 늘고 있음. • Scikit learn 전처리 모델은? • [방법2] Cloud PaaS • Azure Machine learning Service , AWS SageMaker , GCP CloudML • 3사가 다 10%가 부족한 부분이 있음. • 매우 비쌈. • [방법3] Flask 등을 이용한 범용 서빙 아키텍처 구성 • 빠르고 쉽게 prototype 할 수 있으나, production을 하기 위해선 험난한 Engineering Art 가 필요함. • Python 은 너무 너무 * 10 느린 언어 임. • [방법4] Full 사양 GPU 서버 혹은 VM 이용. Tensor-RT !!! • 월 4만원 짜리 CPU Docker vs 월 1000만원 짜리 최신 GPU VM • 미지원 Layer 들은 어떻게?? • Nvidia Docker 활용 시 활용성은 점점 좋아지고 있음. • Model 종류, batch Size 갯수, 동접 Variation 패턴 • [방법5] cloud serverless + cloud NoSQL, 기타 • 초저렴, 안정적, 글로벌 스케일 트래픽 • Deep Learning 의 Output 바로 전단계 Layer 를 주로 활용. • 차원 축소 이후 Vector Embedding Mapping , approximate KNN , Top N Cosign Similarity Item 을 Graph DB 에 넣어 네트워크 구성, • Tensorflow.js , grpahQl, PMML
  • 9. 초 저렴 vCPU Docker (월 4만원) Vs Avengers 급 GPU Docker (월 1000만원) • 이는 마치 … • 100 저글링 vs 20 시즈탱크 의 대결. 그 결과는? https://youtu.be/IKVFZ28ybQs
  • 10. DL Serving 에 대한 고려 사항들… • 처리량(Throughput) • 응답속도(Latency) • 비용 • 개발 생산성 • Real World 에서는 DL 만 있는 것도 아님(Pandas 연산, 전처리, Scaling , Ensemble…) • 확장성(다양한 DL 프레임워크, 다양한 최신 Model 들…) • Real World 에서는 On-line Serving 의 경우 batch size 가 1인 경우가 많음. • Python 의 Thread 성능은 최악 임을 고려해야 함.(대안 및 해결방법은 있음) • 처리 속도와 정확도 간의 Trade Off (Real World 에서 BERT Model 이란…) • 모델압축 (Quantization, Binarization, Weight Pruning, Precision Calibration, etc…)
  • 11. 소개 페이지에 나온 성능 그래프는 모든 상황을 반영 하진 않는다! • 왜 항상 ResNet 가지고 비교하는가?
  • 12. Real World에서 많이 쓰는 모델들은… • GPU 에 있어서, MLP, LSTM 의 반전 자료출처 : https://cloud.google.com/blog/products/gcp/an-in-depth-look-at-googles-first-tensor-processing-unit-tpu
  • 13. 실제 Real World 데이타로 Inference 실험해 보자. • Bidirectional-LSTM (1.5기가 모델) • Bach Size = 1 , 랜덤 질의.
  • 14. 실제 Real World 데이타로 Inference 실험해 보자. ( CPU – serial 1000번 수행)
  • 15. 실제 Real World 데이타로 Inference 실험해 보자. ( GPU – serial 1000번 수행)
  • 16. LSTM + Tensorlfow + Flask + CPU 1~400 동접 부하 테스트 for Inference • 250 TPS 정도가 나와주고 있음.
  • 17. LSTM + Tensorlfow + Flask + GPU 1~400 동접 부하 테스트 for Inference • 16 TPS 정도가 나와주고 있음. http://hoondongkim.blogspot.com/2017/12/deep-learning-inference-serving.html 상세 실험 내용은 제 블로그 참고
  • 18. Deep Learning Inference 1만 TPS Microservice 구현하기
  • 19. TensorRT 를 이용하는 방법1 • TensorRT 를 이용하는 Restful API 만들기 Pytorch Code 예KERAS on Tensorflow Code 예 참고자료 : Nvidia 자료 참고
  • 20. TensorRT 를 이용하는 방법2 • Flask 로 TensorRT Engine 호출하기 Flask 에서 TensorRT 엔진 로딩 , But, 싱글 프로세스 임. 여전히 병목 생길 수 있음. 참고자료 : Nvidia 자료 참고
  • 21. Pain Point 2- Poor Python Performance
  • 22. Pain Point 2 – 해결 팁 § Pandas 를 쓰지 않는다. -> Data Copy 과정에서의 병목. -> Thread , Multi Process 에서 Thread Safe 하지 않음. § 함수형 언어 처럼 가상함수를 사용…(Data Copy 병목 줄인다.) -> Python 에서 Map, Lambda를 : functionstools.partial § Python Thread 를 쓰지 않는다. ->GIL 때문에 엄청나게 느림. -> 차라리 muti-process 가 낫다. Go 의 Goroutine 쓰듯이 쓰고자 한다면… : cotyledon • MemoryView 활용 § Data 핸들링 시, pointer 접근 하듯… § 대용량 Data Memory 복사 방지 • Microservice 로 잘게 쪼겐다. • 모든 것은 비동기로… • PMML + Java 컨버전…
  • 23. Pain Point 2 – 해결 팁 • Nginx + Flask + WSGI + asyncIO + Tensorflow 만으로도 11529 TPS 를 달성한 바 있음. (2018년에 몇번의 Speaking 에서 사례 공유 한 바 있었음) • 그러나, 위 조합이 가능하려면,Data 가 Function 에 전달 되는 모든 과정을 제거 해야만 가능. • Python 의 순수가상함수 개념이 약함.. • 함수에 데이타 전달 시, Memory Copy 가 되면, 병목 발생. • Singleton Pattern • Member 변수 설정으로만도 효과가 보여 짐. • 단, init 함수 밖, 전역 변수 설정은, Process가 경합하고, OS 한계의 Resource Limit 근접 시 Recent Process 에 의해, 메모리가 해제 됨. • 다시 메모리가 설정될 때까지 Hang 현상 있음. • 이 이유 때문에, Production 에서는 NginX + Flask + WSGI + 대용량 Data Function 조합은 안정적이지 못함. • [대안] 속도를 50~60% 포기하고, 성능은 낮아지지만, 안정성이 좋은 gunicorn 을 써 왔었음. • 극복 방법 없을까?
  • 24. Pain Point 2 – 해결 팁 • 4 CPU * 10 Docker on Cloud • 1.5GB LSTM Tensorlfow NLP 모델 실시간 Serving (batchsize = 1) • 랜덤 쿼리 (캐쉬 의미 없음) • Deep Learning Inference 1만 TPS 구현해 보기. • NginX + ASGI + FastAPI + {asyncio + aiohttp + tornado} : 비동기는 ( pooling < streaming < web hook ) • Pandas 걷어내기, MemoryView 활용하기. • Distributed Shared Session으로 Redis 사용. • 여전히 함수에 큰 Data 전달은 병목 야기. • 단순 전역 변수 사용은 Hang 현상에 매우 취약. • Python Singleton Pattern with decorator • Thread Safe Lazy initialization + Double checked Locking • WSGI -> ASGI 가 큰 도움이 됨. • 그러나, Hang 현상은 다양한 곳에서 발생. Low Level Debug 필요. • cProfile , kCacheGrind, memory_profiler
  • 25. 2. Production AI Open Source Eco System
  • 26. Pandas UDF • Pandas : Poor Python Performance -> Pandas UDF
  • 27. Horovod (Distributed Deep Learning at Scale)
  • 28. Horovod (Distributed Deep Learning at Scale)
  • 29. Petastorm (BigData Scale Data Deep Learning)
  • 30. Horizon (Deep Reinforcement Learning at Scale) • Open Source End-To-End Large-scale RL framework By Facebook • distributed popular deep RL algorithms training. • workflow management. • data preprocessing. • feature transformation. • counterfactual policy evaluation. • optimized serving. • Reinforcement Learning & Contextual Bandits. • PyTorch for Modeling and Training. • Caffe2 for Model Serving. • https://reagent.ai/ • https://github.com/facebookresearch/ReAgent
  • 31. Horizon (Deep Reinforcement Learning at Scale)
  • 33. TFX
  • 37. Rapids.ai • End-to-End Data Analytics Pipeline with GPUs • Apache Arrow , cuDF(on Spark) , cuML(like Pandas)
  • 38. Clipper.ai • low-latency prediction serving system for machine learning. • Clipper with ML Frameworks (PyTorch, TensorFlow, XGBoost, etc.)
  • 39. ONNX - Multiple ML/DL Framework Collaboration
  • 41. DevOps 란 • 지속적 통합과 배포 • 마이크로서비스 • 코드형 인프라스트럭쳐 • 마이크로 서비스를 위한 모니터링 • 커뮤니케이션 -> 코드형 인프라스트럭쳐까지 방법론이 성숙되면서 GitOps라는 용어도 발생 출처 : https://aws.amazon.com/ko/devops/what-is-devops/
  • 42. 도커가 해주는 것 • 지속적 통합과 배포 • 마이크로서비스 • 코드형 인프라스트럭쳐 • 마이크로 서비스를 위한 모니터링 • 커뮤니케이션 -> 코드형 인프라스트럭쳐까지 방법론이 성숙되면서 GitOps라는 용어도 발생 출처 : https://aws.amazon.com/ko/devops/what-is-devops/
  • 43. 개발자의 영역 • 지속적 통합과 배포 • 마이크로서비스 • 코드형 인프라스트럭쳐 • 마이크로 서비스를 위한 모니터링 • 커뮤니케이션 -> 코드형 인프라스트럭쳐까지 방법론이 성숙되면서 GitOps라는 용어도 발생 출처 : https://aws.amazon.com/ko/devops/what-is-devops/
  • 44. 슬랙? • 지속적 통합과 배포 • 마이크로서비스 • 코드형 인프라스트럭쳐 • 마이크로 서비스를 위한 모니터링 • 커뮤니케이션 -> 코드형 인프라스트럭쳐까지 방법론이 성숙되면서 GitOps라는 용어도 발생 출처 : https://aws.amazon.com/ko/devops/what-is-devops/
  • 45. 이것을 위한 도구가 필요 • 지속적 통합과 배포 • 마이크로서비스 • 코드형 인프라스트럭쳐 • 마이크로 서비스를 위한 모니터링 • 커뮤니케이션 -> 코드형 인프라스트럭쳐까지 방법론이 성숙되면서 GitOps라는 용어도 발생 출처 : https://aws.amazon.com/ko/devops/what-is-devops/
  • 49. 배포 • Azure Devops의 Pipelines의 기능을 활용
  • 50. 배포 • 새로운 이미지 배포를 위해 latest 태그 사용 지양
  • 51. 배포 • Kubectl 명령을 devops 내에서만 실행
  • 52. 배포 • 배포 기록 관리 • 기록 기반 롤백
  • 53. 환경별 변수 관리 • Library에 글로벌 변수 작성, 파이프라인 별 적용
  • 54. 환경별 변수 관리 • 코드 내에서는 env 호출로 사용
  • 55. 모델 서빙을 위한 패턴 • One fat image • Model puller sidecar • Attached volume