SlideShare uma empresa Scribd logo
1 de 108
Baixar para ler offline
YARN, Docker 기반의
Deep Learning
Application Cluster 구축
김제민
NAVER Search
하고 있고, 해 왔던 것들
Naver Search
• 검색 모델링
• 검색 데이터 정제
• 검색 서비스
• 대용량 데이터 처리
• 분산 데이터 처리
• 실시간 데이터 처리
C3 Hadoop Cluster 소개
• Apache Ambari
• Cluster 배포/관리/모니터
• Hadoop 2.7.1
• Hive, Spark, HBase, Oozie etc ..
Deep Learning
• Machine Learning 기법 중의 하나
• Artificial Neural Network 인데 Deep함
< AlexNet >
• 60 million parameters and 650,000 neurons
From “ImageNetClassification with Deep Convolutional Neural Networks”
Deep Learning Breakthrough
• 학습의 어려움 극복
• 2006, “A fast learning algorithm for deep belief nets” by
Geoffrey E. Hinton
• Hardware
• GPU 성능의 발전
• NVIDIA CUDA
Deep Learning 은
거의 모든 분야에서
절대적으로 성능이 우월함
이제 Deep Learning 으로 Go, Go !!!
• 다수의 프로젝트
• 다수의 연구원/개발자
But
• GPU 자원은 제한적
Server
Server
Server
Server
GPU 자원의 효과적인 공유 필요성
? GPU Cluster
Deep Learning Application 개발 환경
• GPU
• NVIDIA CUDA
• Deep Learning Frameworks
• Caffe
• TensorFlow
• Torch
• Theano
• Keras
그래서
결론적으로
지금 우리에게 필요한 것은 …
Multi-tenantDeep Learning Application 실행 환경
• 다양한 Deep Learning Framework 지원
• GPU Cluster 자원 관리
? GPU Cluster
DL Application
DL Application
DL Application
Hadoop YARN 기반의
Multi-tenantDeep Learning Application 실행 환경
?
GPU Cluster
Hadoop YARN
DL Application
DL Application
DL Application
Why YARN ?
• Mesos ?
• YARN의 장점
• Capacity Scheduler : Queue기반의 ResourceScheduling
• Enterprise환경에서 ResourcePlanning 용이
• 기타
• 기존 클러스터(C3)와의 호환성 및 통합 가능성
• Cluster 배포 및 관리 시스템 기존재 (Ambari)
• YARN Cluster 운영 Knowhow
목차
1. Technical Issues
2. Deep Learning Application Toolset 개발
3. C3 Deep Learning Cluster 구축
1.
Technical Issues
Technical Issues
1) YARN Cluster에서 Shell Script Application 실행
2) 다양한 Deep Learning Framework 환경 제공
3) YARN Cluster에서 GPU Resource Scheduling
1. 1)
YARN Cluster 에서
Shell Script Application 실행
Shell Script Application on YARN ?
YARN Cluster
CPU Core 1
Memory 1G
Main main.sh
dl_app.tar.gz
data/
examples/
output/
main.sh
create_mnist.sh
lenet_solver.prototxt
lenet_train_test.prototxt
train_lenet.sh
data/
examples/
output/
ü main.sh
create_mnist.sh
lenet_solver.prototxt
lenet_train_test.prototxt
train_lenet.sh
CPU Core 1
Memory 1G
tar
DL Application
Hadoop YARN
• Hadoop YARN ( Hadoop v2)
• Yet Another ResourceNegotiator
• MapReduce이외에 일반적인 Application 실행 가능
• CPU,Memory 기반의 ResourceScheduling
• YARN 구조
• ResourceManager ( Master)
• Node Manager ( Slaves )
• 최소 실행 단위 : Container
YARN 구조
Resource
Manager
(Master)
Node Manager
(Slave)
Server Container
Container
Container
Container
NM
NM
YARN Application
Resource
Manager
(Master) NM
Application Master
Container
NM
NM
Container Request
YARN Application
Resource
Manager
(Master) NM
Application Master
Container
Container
NM
NM
Container
Container
Shell Script Application on YARN ?
YARN Cluster
CPU Core 1
Memory 1G
Main main.sh
dl_app.tar.gz
data/
examples/
output/
main.sh
create_mnist.sh
lenet_solver.prototxt
lenet_train_test.prototxt
train_lenet.sh
data/
examples/
output/
ü main.sh
create_mnist.sh
lenet_solver.prototxt
lenet_train_test.prototxt
train_lenet.sh
CPU Core 1
Memory 1G
tar
DL Application
YARN Application 개발하기
• ApplicationMaster ResourceManager
• org.apache.hadoop.yarn.client.api.async.AMRMClientAsync
• InterfaceAMRMClientAsync.CallbackHandler
• ApplicationMaster NodeManager
• org.apache.hadoop.yarn.client.api.async.NMClientAsync
• InterfaceNMClientAsync.CallbackHandler
YARN Distributed Shell (Example)
• https://github.com/apache/hadoop-common/tree/trunk/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-
applications/hadoop-yarn-applications-
distributedshell/src/main/java/org/apache/hadoop/yarn/applications/distributedshell
• ApplicationMaster.java
• Client.java
• DSConstants.java
• Log4jPropertyHelper.java
C3 Distributed Shell
• Yarn Distributed Shell 기반
• 추가 기능
• CONTAINTER_INDEX, NUM_CONTAINERS 환경 변수
• YARN-5696
• Server Node 에 따른 Resource요청
• 특정 Server Node 에 Resource요청
• Server Node Blacklist설정
• YARN-4703
Technical Issues
ü YARN Cluster에서 Shell Script Application 실행
2) 다양한 Deep Learning Framework 환경 제공
3) YARN Cluster에서 GPU Resource Scheduling
è C3 Distributed Shell
1. 2)
다양한
Deep Learning Framework
환경 제공
Classical Approach
• 모든 DL Framework를 모든 서버에 설치
• Installation, Upgrade, Update 등 유지 보수의 어려움
• 같은 DL Framework 에서 Multi Version 지원 이슈
• 서로 상이한 DL Framework간의 Library 의존성 충돌
• DevOps Tools :
• Dimensions
• ( DL Framworks ) * ( Versions ) * ( 의존 libs ) * ( Server 환경)
각 Deep Learning Framework 환경들이
깔끔히 Isolation되어
관리되면 좋을텐데..
Docker ?
그렇지만 GPU는 ?
CUDA는 ?
Docker 에서 가능한가?
Docker 에서 CUDA 사용하기
• Docker Image에 NVIDIA User Level Libraries 와 CUDA
Library 를 설치
• 제약 : Host에 설치된 NVIDIA Driver Major,Minor Version과 일치 해
야함
• Docker 실행시 NVIDIA Device File 들을 Docker에 노출
$ docker run …
--device=/dev/nvidiactl 
--device=/dev/nvidia-uvm 
--device=/dev/nvidia
Docker 에서 CUDA 사용하기
Host Server
NVIDIA Kernel Module
361.48
User Level NVIDIA Libs
361.48
NVIDIA Driver Version
Major 361
Minor Docker Container(Image)
User Level NVIDIA Libs
361.48
GPU Application
CUDA Libs
/dev/nvidiactl
/dev/nvidia-uvm
/dev/nvidia
그렇지만
Docker Image에
Host 의존성이 …
Nvidia-Docker !!
Nvidia-Docker
• Docker 상에서 GPU Device를 사용시 발생하는 Host 의존성을
해결
• GPU Resource Isolation 지원 !!
Nvidia-Docker
Host Server
NVIDIA Kernel Module
361.48
User Level NVIDIA Libs
361.48
Docker Container(Image)
GPU Application
CUDA Libs
volume
User Level NVIDIA Libs
361.48
Nvidia-Docker 실행
• 기본 실행
• nvidia-docker <docker-options> <docker-command> <docker-
args>
• GPU isolation
• NV_GPU 환경 변수에 GPU Device ID 목록을 설정
• NV_GPU='0,1' nvidia-docker <docker-options> <docker-command> …
• Docker Image 제약
• Nvidia-docker 용으로 미리 build된 image 사용
Nvidia-docker 기반으로
Deep Learning Framework 환경을
Docker Image로 제공
Technical Issues
ü YARN Cluster에서 Shell Script Application 실행
ü 다양한 Deep Learning Framework 환경 제공
3) YARN Cluster에서 GPU Resource Scheduling
è C3 Distributed Shell
è Nvidia-Docker
1. 3)
YARN Cluster에서
GPU Resource Scheduling
YARN GPU Scheduling 현상황
• 현재 YARN 은 CPU와 Memory 만으로 스케쥴링
• GPU Scheduling은 지원하지 않음
• 새로운 자원 형태를 Scheduling 하기 위해서는 부가적인 개발이
필요함
YARN GPU Scheduling 개발
주요 Source Code 변경 대상
• YARN Protocol
• YARN Configuration
• Resource 추상화 객체
• Dominant Resource Calculator
*YARN JIRA : YARN-5517
YARN Protocol
• yarn_protos.proto
• yarn_service_protos.proto
Implementation Details
• yarn_protos.proto
message ResourceProto {

optional int32 memory = 1;

optional int32 virtual_cores = 2;

optional int32 gpu_cores = 3;

}
enum SchedulerResourceTypes {

MEMORY = 0;

CPU = 1;

GPU = 2;

}
• yarn_service_protos.proto
Implementation Details
• yarn_protos.proto
message ResourceProto {

optional int32 memory = 1;

optional int32 virtual_cores = 2;

optional int32 gpu_cores = 3;

}
enum SchedulerResourceTypes {

MEMORY = 0;

CPU = 1;

GPU = 2;

}
• yarn_service_protos.proto
YARN Configuration
• org.apache.hadoop.yarn.conf.YarnConfiguration
Implementation Details
• org.apache.hadoop.yarn.conf.YarnConfiguration
public static final String RM_SCHEDULER_MINIMUM_ALLOCATION_GCORES =

YARN_PREFIX + "scheduler.minimum-allocation-gcores";

public static final int DEFAULT_RM_SCHEDULER_MINIMUM_ALLOCATION_GCORES = 0;
public static final String RM_SCHEDULER_MAXIMUM_ALLOCATION_GCORES =

YARN_PREFIX + "scheduler.maximum-allocation-gcores";

public static final int DEFAULT_RM_SCHEDULER_MAXIMUM_ALLOCATION_GCORES = 8;
public static final String NM_GCORES = NM_PREFIX + "resource.gcores";

public static final int DEFAULT_NM_GCORES = 0;
Resource 객체
• org.apache.hadoop.yarn.util.resource.Resource
Implementation Details
• org.apache.hadoop.yarn.util.resource.Resources
public static Resource createResource(int memory) {

return createResource(memory, (memory > 0) ? 1 : 0, 0);

}



public static Resource createResource(int memory, int cores) {

return createResource(memory, cores, 0);

}



public static Resource createResource(int memory, int cores, int gcores) {

Resource resource = Records.newRecord(Resource.class);

resource.setMemory(memory);

resource.setVirtualCores(cores);

resource.setGpuCores(gcores);

return resource;

}


public int getGpuCores() { return 0; }



public void setGpuCores(int gcores) { throw new RuntimeException("NONE cannot be modified!"); }



public int compareTo(Resource o) {

int diff = 0 - o.getMemory();

if (diff == 0) {

diff = 0 - o.getVirtualCores();

if (diff == 0) {

diff = 0 - o.getGpuCores();

}

}

return diff;

}
Dominant Resource Calculator
• org.apache.hadoop.yarn.util.resource.DominantResourceCalculator
YARN UI 변화
UI Changes
* 테스트용 클러스터 화면 캡쳐
YARN Cluster
CPU Core 1
Memory 1G
GPU 3
Main main.sh
tar dl_app.tar.gz
data/
examples/
output/
main.sh
create_mnist.sh
lenet_solver.prototxt
lenet_train_test.prototxt
train_lenet.sh
data/
examples/
output/
ü main.sh
create_mnist.sh
lenet_solver.prototxt
lenet_train_test.prototxt
train_lenet.sh
CPU Core 1
Memory 1G
GPU 3
C3 Distributed Shell : GPU 추가
Technical Issues
ü YARN Cluster에서 Shell Script Application 실행
ü 다양한 Deep Learning Framework 환경 제공
ü YARN Cluster에서 GPU Resource Scheduling
è C3 Distributed Shell
è Nvidia-Docker
è YARN with GPU Scheduling 개발
2.
Deep Learning Application
Launcher 및 Toolset 개발
Deep Learning Application Toolset 개발
• GPU Device ID Manager
• DL(Deep Learning) App Concept
• DL App Launcher
• DL App Tools
• DL App Log
• DL App 개발 환경
GPU Device ID 할당 문제점
• 문제점 : YARN은 GPU 갯수만 관리함
• Deep Learning Application에 명시적으로 GPU Device ID를
할당하는 로직 필요
GPU Device ID Manager
• Cluster 전체의 GPU Device ID Allocation 정보를 Zookeeper
를 통해 관리
• GPU Device ID Manager
• python kazoo lib
• 분산 Lock
• GPU Device ID 할당/해제
• Garbage Collection
{
”host01": {
"gpu0": "application_id_01",
"gpu1": “application_id_01”,
"gpu2": “application_id_02”,
"gpu3": “application_id_03”
},
“host02": {
"gpu0": “application_id_04",
…
},
…
}
DL(Deep Learning) App 구현 Concept
• DL App 구성 요소
• Deep Learning Framework 환경 (Caffe, TensorFlow …)
• User Program ( Source Code)
• Input Data
• Output Data
Input Output
DL Framework 환경
Source
Code
YARN Cluster
CPU Core 1
Memory 1G
GPU 3
Main main.sh
tar dl_app.tar.gz
data/
examples/
output/
main.sh
create_mnist.sh
lenet_solver.prototxt
lenet_train_test.prototxt
train_lenet.sh
data/
examples/
output/
ü main.sh
create_mnist.sh
lenet_solver.prototxt
lenet_train_test.prototxt
train_lenet.sh
CPU Core 1
Memory 1G
GPU 3
C3 Distributed Shell
C3 Distributed Shell
User Program ( Source Code)
Input Data ?
DL(Deep Learning) App 구현 Concept
• DL App 구성 요소
• Deep Learning Framework 환경 (Caffe, TensorFlow …)
• User Program ( Source Code)
• Input Data
• Output Data
Input Output
DL Framework 환경
Source
Code
DL(Deep Learning) App 구현 Concept
• Input/Output Data
• Data Repository Tech.
• NFS
• Ceph, GlusterFS, Lustre
ü HDFS
• C3 HDFS Storage를 저장소로 사용
DL(Deep Learning) App 구현 Concept
• Docker Container의 데이터는 volatile함
• Docker Container안에 permanent한 작업 영역(dir)이 필요함
• DL App Workspace (Directory)
• DL App 실행을 위한 File/Dir들이 존재하는 영역
• User Program Src Code, Input/OutputData 들이 위치함
• Host Server상의 Directory이며 , Docker Container에 volumemount
되는 영역
DL(Deep Learning) App 구현 Concept
/User_Dev_Workspace
/DL_App_Workspace
Deep Learning App
Input
Output
User
Container
DL App 실행 과정
DL App 실행 과정
YARN Container
Yarn Container 시작
DL App 실행 과정
YARN Container
GPU Device ID 할당
GPU Device ID
Manager
GPU 0,3
Zookeeper
YARN Container
DL App 실행 과정
DL App Workspace
Source Code
User Workspace 복사
GPU 0,3
YARN Container
DL App 실행 과정
DL App Workspace
Input
Source Code
Input Data 복사
GPU 0,3
YARN Container
DL App 실행 과정
DL App Workspace( NVIDIA Docker )
Input
Source Code
NVIDIA Docker Cotainer 실행
GPU 0,3
YARN Container
DL App 실행 과정
DL App Workspace( NVIDIA Docker )
Input
Source Code
Docker
Volume
DL App Workspace Mount
GPU 0,3
YARN Container
DL App 실행 과정
( NVIDIA Docker )
Input
Source Code
DL App Docker 실행
GPU 0,3
YARN Container
DL App 실행 과정
( NVIDIA Docker )
Input
Source Code
Output
DL App Docker 실행
GPU 0,3
YARN Container
DL App 실행 과정
Input
Source Code
Output
DL App Workspace
DL App Docker 종료
GPU 0,3
YARN Container
DL App 실행 과정
Input
Source Code
Output
DL App Workspace
OutputData 복사
GPU 0,3
DL App 실행 과정
YARN Container
GPU Device ID 해제
GPU Device ID
Manager
GPU 0,3
Zookeeper
DL App 실행 과정
YARN Container
Yarn Container 종료
DL App 실행 과정 Yarn Container 종료
원하는 DL App Properties
• Docker Image
• 실행 Src Code Dir Path
• main 실행 script
• Resource : CPU,Mem,GPU
• Input Data 경로
• Output Data 경로
DL App 생성 및 실행하기
C3
Distributed
Shell
DL App 실행 과정
2) GPU ID 할당
3) User Workspace 복사
4) Input Data 복사
5) DL App Workspace 구성 완료
6) DL App NVIDIA Docker 실행
7) Output Data 복사
8) GPU ID 해제
YARN
Cluster
Shell Script Application
Shell
Script
Application
생성
dl_app.properties
• Docker Image
• 실행 Src Code Dir Path
• main 실행 script
• Resource : CPU,Mem,GPU
• Input Data 경로
• Output Data 경로
C3
Distributed
Shell
DL App 실행 과정
2) GPU ID 할당
3) User Workspace 복사
4) Input Data 복사
5) DL App Workspace 구성 완료
6) DL App NVIDIA Docker 실행
7) Output Data 복사
8) GPU ID 해제
YARN
Cluster
dlapp-launcher dl_app.properties
DL App Launcher
Shell Script Application
Shell
Script
Application
생성
• Caffe LeNet MNIST Example
• caffe/examples/mnist 기반
• .
├── dl_app_caffe.properties
└── user_dev_workspace
├── create_mnist.sh
├── data/
├── dl_app_start.sh
├── examples/
├── lenet_solver.prototxt
├── lenet_train_test.prototxt
├── output/
└── train_lenet.sh
dlapp-launcher 실행 예
• dl_app_caffe.properties
[application]
username=tony
appname='c3 deeplearning app caffe mnist example'
docker_image=naver/c3_dl-caffe
user_dev_workspace_path=./user_dev_workspace
user_shell_script=dl_app_start.sh
user_shell_args='-gpu all'
[from_hdfs]
hdfs=/user/tony/caffe_test/*
input_path=data
[to_hdfs]
output_path=output
hdfs=/user/tony/caffe_mnist_example_output
overwrite=true
• dl_app_start.sh
#!/usr/bin/env bash
./create_mnist.sh
./train_lenet.sh $@
dlapp-launcher 실행 예
.
├── dl_app_caffe.properties
└── user_dev_workspace
├── create_mnist.sh
├── data/
├── dl_app_start.sh
├── examples/
├── lenet_solver.prototxt
├── lenet_train_test.prototxt
├── output/
└── train_lenet.sh
dlapp-launcher 실행 예
$ dlapp-launcher dl_app_caffe.properties
C3 DL Cluster Version check : ok
CheckDLAppProperties : ok
user_dev_workspace_path = /path/to/user_dev_workspace
user_dev_workspace_exclude_list = []
user_dev_workspace dir size = 4 kb
DL App Submission : OK
DL App ID = application_aaaaaaaaaaa_bbbb
DL App Dashboard
* While app is running , check : http://XXXXXXXXX/cluster/app/application_aaaaaaaaaaa_bbbb
* After app is completed, check : http://XXXXXXXXX/applicationhistory/app/application_aaaaaaaaaaa_bbbb
DL App Status and stdout/stderr Log URLs
* dlapp-status application_aaaaaaaaaaa_bbbb
DL App Tools
• dlapp-status [ DL App ID ]
• dlapp-list [Username]
• dlapp-softkill [Username] [ DL App ID ]
• dlapp-kill [Username] [ DL App ID ]
dlapp-launcher 실행 예
DL App Log 확인
• YARN History,Timeline Server 기능 활용
• YARN Application stdout/stderr Log 는 Web 또는 yarn 명령어을 통
해 확인 가능
• YARN Container 의 Attempt ID 및 Container ID 를 통해 확인
• dlapp-status tool을 통해 stdout/stderr Log URL 제공
dlapp-status 실행 예
$ dlapp-status application_aaaaaaaaaaa_bbbb
DL App application_aaaaaaaaaaa_bbbb is FINISHED
Username : tony
DL App ID : application_aaaaaaaaaaa_bbbb
DL App Name : 'c3 deeplearning app caffe mnist example'
startTime : 2016-09-26 22:24:11.575000
finishTime : 2016-09-26 22:24:57.703000
elapsedTime : 0:00:46.13
stdout
http://XXXXX/applicationhistory/logs/XXXXX/container_aaaaaaaaaaa_bbbb_01_000004/container_aaaaaaaaaaa_bbbb
_01_000004/tony/stdout/?start=-4096
stderr
http://XXXXX/applicationhistory/logs/XXXXX/container_aaaaaaaaaaa_bbbb_01_000004/container_aaaaaaaaaaa_bbbb
_01_000004/tony/stderr/?start=-4096
Example
dlapp-status 실행 예
dlapp-list 실행 예
dlapp-kill 실행 예
DL App Development 환경의 필요성
• DL App을 개발하려면 GPU 장비가 필요함
• 초기 DL App개발 시점에서 기본적인 검증 용도로 DL Cluster를
이용하는 것은 매우 번거로움
• 코드의 사소한 실수를 수정하는 과정의 반복
• Input/outputData등의 Directory 구조 확인
DL App Development 환경
• DL App 개발 전용 GPU 서버 구축
• dlapp-shell
• dlapp-launcher 와 동일한 Docker Image 및 Workspace로 실행되는
docker bash 환경 제공
• dlapp-run : dlapp-shell 환경에서 C3 DL Cluster 에 dl app 을 실행
YARN Container
DL App 실행 과정
( NVIDIA Docker )
Input
Source Code
DL App Docker 실행
GPU 0,3
DL App 개발 서버
DL App Shell
( NVIDIA Docker ) : Bash Shell
Source Code
GPU 0,3
dlapp-shell 실행 예
dl_app_dev_server
dl_app_dev_server
dl_app_dev_server
dl_app_dev_server
dl_app_dev_server
dl_app_dev_server
user
user
user
user
yarn_resource_manager
yarn_timeline_server
aaaaaaaaa_bbbb
aaaaaaaaa_bbbb
aaaaaaaaa_bbbb
aaaaaaaaa_bbbb
docker shell
DL App Toolset
• dlapp-launcher dl_app.properties
• dlapp-shell dl_app.properties
• dlapp-run
• dlapp-status [DL App ID]
• dlapp-list [Username]
• dlapp-softkill [Username] [DL App ID]
• dlapp-kill [Username] [DL App ID]
3.
C3
Deep Learning Cluster
Hadoop YARN 기반의
Multi-tenantDeep Learning Application 실행 환경
?
GPU Cluster
Hadoop YARN
DL Application
DL Application
DL Application
DL
Application
C3 Deep Learning Cluster
Zookeeper
Dev. Environment
Dev. Server
Resource
Manager
YARN
Node
Manager
YARN
Docker
Registry C3 HDFS Storage
YARN
with
GPU
Scheduling
Node
Manager
YARN
Node
Manager
YARN
. . .
C3 Distributed Shell
NVIDIA Docker
GPU Device ID
Manager Input
Output
DL App
Toolset
dlapp-launcher
dlapp-shell dlapp-run
DL Framework Docker Images
DL Solution Docker Image
Caffe naver/c3_dl-caffe
Torch naver/c3_dl-torch
Theano naver/c3_dl-theano
TensorFlow naver/c3_dl-tensorflow
Theano+Keras naver/c3_dl-theano-keras
TensorFlow+Keras naver/c3_dl-tensorflow-keras
Base (CUDA/cuDNN) naver/c3_dl-base
• Resource 관리
• GPU 자원 Utilization 증가
• GPU ResourcePlanning ( YARN Queue)
• Administration
• 작업 이력 관리
• 프로젝트 관리
• 사용자 관리
• DevOps
• 규격화된 개발 환경 제공
• 개발 환경 공유
개선점
• 검색 품질 향상을 위한 seq2seq 기반의 검색 키워드 변환
• word2vec,CNN 기반의 문서 주제 분류
• CNN 기반의 Image Tagger
• 이외 다수의 프로젝트가 실행중
현재 C3 DL Cluster에서는 …
* CNN : Convolutional Neural Network
To Do
To Do
• GPU Resource Scheduling 고도화
• 대용량 Input Data
• Input Data Caching
• Input Data Feeder
• Distributed Deep Learning
Q&A
Thank You

Mais conteúdo relacionado

Mais procurados

PostgreSQL Administration for System Administrators
PostgreSQL Administration for System AdministratorsPostgreSQL Administration for System Administrators
PostgreSQL Administration for System AdministratorsCommand Prompt., Inc
 
[논문리뷰] Data Augmentation for 1D 시계열 데이터
[논문리뷰] Data Augmentation for 1D 시계열 데이터[논문리뷰] Data Augmentation for 1D 시계열 데이터
[논문리뷰] Data Augmentation for 1D 시계열 데이터Donghyeon Kim
 
C++17 std::byte
C++17 std::byteC++17 std::byte
C++17 std::byte진화 손
 
Datarobot, 자동화된 분석 적용 시 분석 절차의 변화 및 효용 - 홍운표 데이터 사이언티스트, DataRobot :: AWS Sum...
Datarobot, 자동화된 분석 적용 시 분석 절차의 변화 및 효용 - 홍운표 데이터 사이언티스트, DataRobot :: AWS Sum...Datarobot, 자동화된 분석 적용 시 분석 절차의 변화 및 효용 - 홍운표 데이터 사이언티스트, DataRobot :: AWS Sum...
Datarobot, 자동화된 분석 적용 시 분석 절차의 변화 및 효용 - 홍운표 데이터 사이언티스트, DataRobot :: AWS Sum...Amazon Web Services Korea
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기Chanwoong Kim
 
머피's 머신러닝, Mixture model and EM algorithm
머피's 머신러닝, Mixture model and EM algorithm머피's 머신러닝, Mixture model and EM algorithm
머피's 머신러닝, Mixture model and EM algorithmJungkyu Lee
 
Property graph vs. RDF Triplestore comparison in 2020
Property graph vs. RDF Triplestore comparison in 2020Property graph vs. RDF Triplestore comparison in 2020
Property graph vs. RDF Triplestore comparison in 2020Ontotext
 
Relational to Graph - Import
Relational to Graph - ImportRelational to Graph - Import
Relational to Graph - ImportNeo4j
 
Developing Scylla Applications: Practical Tips
Developing Scylla Applications: Practical TipsDeveloping Scylla Applications: Practical Tips
Developing Scylla Applications: Practical TipsScyllaDB
 
Problem-Solving using Graph Traversals: Searching, Scoring, Ranking, and Reco...
Problem-Solving using Graph Traversals: Searching, Scoring, Ranking, and Reco...Problem-Solving using Graph Traversals: Searching, Scoring, Ranking, and Reco...
Problem-Solving using Graph Traversals: Searching, Scoring, Ranking, and Reco...Marko Rodriguez
 
MongoDB - Sharded Cluster Tutorial
MongoDB - Sharded Cluster TutorialMongoDB - Sharded Cluster Tutorial
MongoDB - Sharded Cluster TutorialJason Terpko
 
Best Practices for Becoming an Exceptional Postgres DBA
Best Practices for Becoming an Exceptional Postgres DBA Best Practices for Becoming an Exceptional Postgres DBA
Best Practices for Becoming an Exceptional Postgres DBA EDB
 
빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)YEONG-CHEON YOU
 
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012Esun Kim
 
머신러닝과 사이킷런의 이해
머신러닝과 사이킷런의 이해머신러닝과 사이킷런의 이해
머신러닝과 사이킷런의 이해철민 권
 
My Favorite PostgreSQL Books
My Favorite PostgreSQL BooksMy Favorite PostgreSQL Books
My Favorite PostgreSQL BooksEDB
 
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅DongMin Choi
 
Intro to Neo4j and Graph Databases
Intro to Neo4j and Graph DatabasesIntro to Neo4j and Graph Databases
Intro to Neo4j and Graph DatabasesNeo4j
 
Intro to Neo4j - Nicole White
Intro to Neo4j - Nicole WhiteIntro to Neo4j - Nicole White
Intro to Neo4j - Nicole WhiteNeo4j
 

Mais procurados (20)

PostgreSQL Administration for System Administrators
PostgreSQL Administration for System AdministratorsPostgreSQL Administration for System Administrators
PostgreSQL Administration for System Administrators
 
[논문리뷰] Data Augmentation for 1D 시계열 데이터
[논문리뷰] Data Augmentation for 1D 시계열 데이터[논문리뷰] Data Augmentation for 1D 시계열 데이터
[논문리뷰] Data Augmentation for 1D 시계열 데이터
 
C++17 std::byte
C++17 std::byteC++17 std::byte
C++17 std::byte
 
Anything-to-Graph
Anything-to-GraphAnything-to-Graph
Anything-to-Graph
 
Datarobot, 자동화된 분석 적용 시 분석 절차의 변화 및 효용 - 홍운표 데이터 사이언티스트, DataRobot :: AWS Sum...
Datarobot, 자동화된 분석 적용 시 분석 절차의 변화 및 효용 - 홍운표 데이터 사이언티스트, DataRobot :: AWS Sum...Datarobot, 자동화된 분석 적용 시 분석 절차의 변화 및 효용 - 홍운표 데이터 사이언티스트, DataRobot :: AWS Sum...
Datarobot, 자동화된 분석 적용 시 분석 절차의 변화 및 효용 - 홍운표 데이터 사이언티스트, DataRobot :: AWS Sum...
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
 
머피's 머신러닝, Mixture model and EM algorithm
머피's 머신러닝, Mixture model and EM algorithm머피's 머신러닝, Mixture model and EM algorithm
머피's 머신러닝, Mixture model and EM algorithm
 
Property graph vs. RDF Triplestore comparison in 2020
Property graph vs. RDF Triplestore comparison in 2020Property graph vs. RDF Triplestore comparison in 2020
Property graph vs. RDF Triplestore comparison in 2020
 
Relational to Graph - Import
Relational to Graph - ImportRelational to Graph - Import
Relational to Graph - Import
 
Developing Scylla Applications: Practical Tips
Developing Scylla Applications: Practical TipsDeveloping Scylla Applications: Practical Tips
Developing Scylla Applications: Practical Tips
 
Problem-Solving using Graph Traversals: Searching, Scoring, Ranking, and Reco...
Problem-Solving using Graph Traversals: Searching, Scoring, Ranking, and Reco...Problem-Solving using Graph Traversals: Searching, Scoring, Ranking, and Reco...
Problem-Solving using Graph Traversals: Searching, Scoring, Ranking, and Reco...
 
MongoDB - Sharded Cluster Tutorial
MongoDB - Sharded Cluster TutorialMongoDB - Sharded Cluster Tutorial
MongoDB - Sharded Cluster Tutorial
 
Best Practices for Becoming an Exceptional Postgres DBA
Best Practices for Becoming an Exceptional Postgres DBA Best Practices for Becoming an Exceptional Postgres DBA
Best Practices for Becoming an Exceptional Postgres DBA
 
빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)
 
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
 
머신러닝과 사이킷런의 이해
머신러닝과 사이킷런의 이해머신러닝과 사이킷런의 이해
머신러닝과 사이킷런의 이해
 
My Favorite PostgreSQL Books
My Favorite PostgreSQL BooksMy Favorite PostgreSQL Books
My Favorite PostgreSQL Books
 
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅
 
Intro to Neo4j and Graph Databases
Intro to Neo4j and Graph DatabasesIntro to Neo4j and Graph Databases
Intro to Neo4j and Graph Databases
 
Intro to Neo4j - Nicole White
Intro to Neo4j - Nicole WhiteIntro to Neo4j - Nicole White
Intro to Neo4j - Nicole White
 

Semelhante a [225]yarn 기반의 deep learning application cluster 구축 김제민

[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기Sumin Byeon
 
SOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AISOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AIJoongi Kim
 
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXpressEngine
 
Source To URL Without Dockerfile
Source To URL Without DockerfileSource To URL Without Dockerfile
Source To URL Without DockerfileWon-Chon Jung
 
가상화와 컨테이너의 이해_20230117.pptx
가상화와 컨테이너의 이해_20230117.pptx가상화와 컨테이너의 이해_20230117.pptx
가상화와 컨테이너의 이해_20230117.pptxByungho Lee
 
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기NAVER D2
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발Jeongkyu Shin
 
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례NAVER LABS
 
Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4
Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4
Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4Sangcheol Hwang
 
[221] docker orchestration
[221] docker orchestration[221] docker orchestration
[221] docker orchestrationNAVER D2
 
Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구ByungJoon Lee
 
DataWorks Summit 2017
DataWorks Summit 2017DataWorks Summit 2017
DataWorks Summit 2017Daesung Park
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축Ji-Woong Choi
 
[OpenInfra Days Korea 2018] Day 2 - E5: GPU on Kubernetes
[OpenInfra Days Korea 2018] Day 2 - E5: GPU on Kubernetes[OpenInfra Days Korea 2018] Day 2 - E5: GPU on Kubernetes
[OpenInfra Days Korea 2018] Day 2 - E5: GPU on KubernetesOpenStack Korea Community
 
An overview of kubernetes & (very) simple live demo
An overview of kubernetes & (very) simple live demoAn overview of kubernetes & (very) simple live demo
An overview of kubernetes & (very) simple live demoGwan-Taek Lee
 
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Clouddocker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea CloudJude Kim
 
Krnet2018 kakao container cloud dkos
Krnet2018 kakao container cloud dkosKrnet2018 kakao container cloud dkos
Krnet2018 kakao container cloud dkosWon-Chon Jung
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기iFunFactory Inc.
 

Semelhante a [225]yarn 기반의 deep learning application cluster 구축 김제민 (20)

[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
 
SOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AISOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AI
 
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
 
Source To URL Without Dockerfile
Source To URL Without DockerfileSource To URL Without Dockerfile
Source To URL Without Dockerfile
 
가상화와 컨테이너의 이해_20230117.pptx
가상화와 컨테이너의 이해_20230117.pptx가상화와 컨테이너의 이해_20230117.pptx
가상화와 컨테이너의 이해_20230117.pptx
 
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
 
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
 
Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4
Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4
Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4
 
[221] docker orchestration
[221] docker orchestration[221] docker orchestration
[221] docker orchestration
 
Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구
 
DataWorks Summit 2017
DataWorks Summit 2017DataWorks Summit 2017
DataWorks Summit 2017
 
NoSQL
NoSQLNoSQL
NoSQL
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
Node.js 기본
Node.js 기본Node.js 기본
Node.js 기본
 
[OpenInfra Days Korea 2018] Day 2 - E5: GPU on Kubernetes
[OpenInfra Days Korea 2018] Day 2 - E5: GPU on Kubernetes[OpenInfra Days Korea 2018] Day 2 - E5: GPU on Kubernetes
[OpenInfra Days Korea 2018] Day 2 - E5: GPU on Kubernetes
 
An overview of kubernetes & (very) simple live demo
An overview of kubernetes & (very) simple live demoAn overview of kubernetes & (very) simple live demo
An overview of kubernetes & (very) simple live demo
 
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Clouddocker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
 
Krnet2018 kakao container cloud dkos
Krnet2018 kakao container cloud dkosKrnet2018 kakao container cloud dkos
Krnet2018 kakao container cloud dkos
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기
 

Mais de NAVER D2

[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다NAVER D2
 
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...NAVER D2
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기NAVER D2
 
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발NAVER D2
 
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈NAVER D2
 
[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&ANAVER D2
 
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기NAVER D2
 
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep LearningNAVER D2
 
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applicationsNAVER D2
 
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingNAVER D2
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지NAVER D2
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기NAVER D2
 
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화NAVER D2
 
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)NAVER D2
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기NAVER D2
 
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual SearchNAVER D2
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화NAVER D2
 
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지NAVER D2
 
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터NAVER D2
 
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?NAVER D2
 

Mais de NAVER D2 (20)

[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다
 
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기
 
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발
 
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
 
[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A
 
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기
 
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning
 
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications
 
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
 
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화
 
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
 
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual Search
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화
 
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
 
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
 
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?
 

[225]yarn 기반의 deep learning application cluster 구축 김제민

  • 1. YARN, Docker 기반의 Deep Learning Application Cluster 구축 김제민 NAVER Search
  • 2. 하고 있고, 해 왔던 것들
  • 3. Naver Search • 검색 모델링 • 검색 데이터 정제 • 검색 서비스 • 대용량 데이터 처리 • 분산 데이터 처리 • 실시간 데이터 처리
  • 4. C3 Hadoop Cluster 소개 • Apache Ambari • Cluster 배포/관리/모니터 • Hadoop 2.7.1 • Hive, Spark, HBase, Oozie etc ..
  • 5.
  • 6. Deep Learning • Machine Learning 기법 중의 하나 • Artificial Neural Network 인데 Deep함 < AlexNet > • 60 million parameters and 650,000 neurons From “ImageNetClassification with Deep Convolutional Neural Networks”
  • 7. Deep Learning Breakthrough • 학습의 어려움 극복 • 2006, “A fast learning algorithm for deep belief nets” by Geoffrey E. Hinton • Hardware • GPU 성능의 발전 • NVIDIA CUDA
  • 8. Deep Learning 은 거의 모든 분야에서 절대적으로 성능이 우월함
  • 9. 이제 Deep Learning 으로 Go, Go !!!
  • 10. • 다수의 프로젝트 • 다수의 연구원/개발자 But • GPU 자원은 제한적
  • 12. GPU 자원의 효과적인 공유 필요성 ? GPU Cluster
  • 13. Deep Learning Application 개발 환경 • GPU • NVIDIA CUDA • Deep Learning Frameworks • Caffe • TensorFlow • Torch • Theano • Keras
  • 15. Multi-tenantDeep Learning Application 실행 환경 • 다양한 Deep Learning Framework 지원 • GPU Cluster 자원 관리 ? GPU Cluster DL Application DL Application DL Application
  • 16. Hadoop YARN 기반의 Multi-tenantDeep Learning Application 실행 환경 ? GPU Cluster Hadoop YARN DL Application DL Application DL Application
  • 17. Why YARN ? • Mesos ? • YARN의 장점 • Capacity Scheduler : Queue기반의 ResourceScheduling • Enterprise환경에서 ResourcePlanning 용이 • 기타 • 기존 클러스터(C3)와의 호환성 및 통합 가능성 • Cluster 배포 및 관리 시스템 기존재 (Ambari) • YARN Cluster 운영 Knowhow
  • 18. 목차 1. Technical Issues 2. Deep Learning Application Toolset 개발 3. C3 Deep Learning Cluster 구축
  • 20. Technical Issues 1) YARN Cluster에서 Shell Script Application 실행 2) 다양한 Deep Learning Framework 환경 제공 3) YARN Cluster에서 GPU Resource Scheduling
  • 21. 1. 1) YARN Cluster 에서 Shell Script Application 실행
  • 22. Shell Script Application on YARN ? YARN Cluster CPU Core 1 Memory 1G Main main.sh dl_app.tar.gz data/ examples/ output/ main.sh create_mnist.sh lenet_solver.prototxt lenet_train_test.prototxt train_lenet.sh data/ examples/ output/ ü main.sh create_mnist.sh lenet_solver.prototxt lenet_train_test.prototxt train_lenet.sh CPU Core 1 Memory 1G tar DL Application
  • 23. Hadoop YARN • Hadoop YARN ( Hadoop v2) • Yet Another ResourceNegotiator • MapReduce이외에 일반적인 Application 실행 가능 • CPU,Memory 기반의 ResourceScheduling • YARN 구조 • ResourceManager ( Master) • Node Manager ( Slaves ) • 최소 실행 단위 : Container
  • 24. YARN 구조 Resource Manager (Master) Node Manager (Slave) Server Container Container Container Container NM NM
  • 25. YARN Application Resource Manager (Master) NM Application Master Container NM NM Container Request
  • 26. YARN Application Resource Manager (Master) NM Application Master Container Container NM NM Container Container
  • 27. Shell Script Application on YARN ? YARN Cluster CPU Core 1 Memory 1G Main main.sh dl_app.tar.gz data/ examples/ output/ main.sh create_mnist.sh lenet_solver.prototxt lenet_train_test.prototxt train_lenet.sh data/ examples/ output/ ü main.sh create_mnist.sh lenet_solver.prototxt lenet_train_test.prototxt train_lenet.sh CPU Core 1 Memory 1G tar DL Application
  • 28. YARN Application 개발하기 • ApplicationMaster ResourceManager • org.apache.hadoop.yarn.client.api.async.AMRMClientAsync • InterfaceAMRMClientAsync.CallbackHandler • ApplicationMaster NodeManager • org.apache.hadoop.yarn.client.api.async.NMClientAsync • InterfaceNMClientAsync.CallbackHandler
  • 29. YARN Distributed Shell (Example) • https://github.com/apache/hadoop-common/tree/trunk/hadoop-yarn-project/hadoop-yarn/hadoop-yarn- applications/hadoop-yarn-applications- distributedshell/src/main/java/org/apache/hadoop/yarn/applications/distributedshell • ApplicationMaster.java • Client.java • DSConstants.java • Log4jPropertyHelper.java
  • 30. C3 Distributed Shell • Yarn Distributed Shell 기반 • 추가 기능 • CONTAINTER_INDEX, NUM_CONTAINERS 환경 변수 • YARN-5696 • Server Node 에 따른 Resource요청 • 특정 Server Node 에 Resource요청 • Server Node Blacklist설정 • YARN-4703
  • 31. Technical Issues ü YARN Cluster에서 Shell Script Application 실행 2) 다양한 Deep Learning Framework 환경 제공 3) YARN Cluster에서 GPU Resource Scheduling è C3 Distributed Shell
  • 32. 1. 2) 다양한 Deep Learning Framework 환경 제공
  • 33. Classical Approach • 모든 DL Framework를 모든 서버에 설치 • Installation, Upgrade, Update 등 유지 보수의 어려움 • 같은 DL Framework 에서 Multi Version 지원 이슈 • 서로 상이한 DL Framework간의 Library 의존성 충돌 • DevOps Tools : • Dimensions • ( DL Framworks ) * ( Versions ) * ( 의존 libs ) * ( Server 환경)
  • 34. 각 Deep Learning Framework 환경들이 깔끔히 Isolation되어 관리되면 좋을텐데..
  • 36. 그렇지만 GPU는 ? CUDA는 ? Docker 에서 가능한가?
  • 37. Docker 에서 CUDA 사용하기 • Docker Image에 NVIDIA User Level Libraries 와 CUDA Library 를 설치 • 제약 : Host에 설치된 NVIDIA Driver Major,Minor Version과 일치 해 야함 • Docker 실행시 NVIDIA Device File 들을 Docker에 노출 $ docker run … --device=/dev/nvidiactl --device=/dev/nvidia-uvm --device=/dev/nvidia
  • 38. Docker 에서 CUDA 사용하기 Host Server NVIDIA Kernel Module 361.48 User Level NVIDIA Libs 361.48 NVIDIA Driver Version Major 361 Minor Docker Container(Image) User Level NVIDIA Libs 361.48 GPU Application CUDA Libs /dev/nvidiactl /dev/nvidia-uvm /dev/nvidia
  • 41. Nvidia-Docker • Docker 상에서 GPU Device를 사용시 발생하는 Host 의존성을 해결 • GPU Resource Isolation 지원 !!
  • 42. Nvidia-Docker Host Server NVIDIA Kernel Module 361.48 User Level NVIDIA Libs 361.48 Docker Container(Image) GPU Application CUDA Libs volume User Level NVIDIA Libs 361.48
  • 43. Nvidia-Docker 실행 • 기본 실행 • nvidia-docker <docker-options> <docker-command> <docker- args> • GPU isolation • NV_GPU 환경 변수에 GPU Device ID 목록을 설정 • NV_GPU='0,1' nvidia-docker <docker-options> <docker-command> … • Docker Image 제약 • Nvidia-docker 용으로 미리 build된 image 사용
  • 44. Nvidia-docker 기반으로 Deep Learning Framework 환경을 Docker Image로 제공
  • 45. Technical Issues ü YARN Cluster에서 Shell Script Application 실행 ü 다양한 Deep Learning Framework 환경 제공 3) YARN Cluster에서 GPU Resource Scheduling è C3 Distributed Shell è Nvidia-Docker
  • 46. 1. 3) YARN Cluster에서 GPU Resource Scheduling
  • 47. YARN GPU Scheduling 현상황 • 현재 YARN 은 CPU와 Memory 만으로 스케쥴링 • GPU Scheduling은 지원하지 않음 • 새로운 자원 형태를 Scheduling 하기 위해서는 부가적인 개발이 필요함
  • 48. YARN GPU Scheduling 개발 주요 Source Code 변경 대상 • YARN Protocol • YARN Configuration • Resource 추상화 객체 • Dominant Resource Calculator *YARN JIRA : YARN-5517
  • 49. YARN Protocol • yarn_protos.proto • yarn_service_protos.proto Implementation Details • yarn_protos.proto message ResourceProto {
 optional int32 memory = 1;
 optional int32 virtual_cores = 2;
 optional int32 gpu_cores = 3;
 } enum SchedulerResourceTypes {
 MEMORY = 0;
 CPU = 1;
 GPU = 2;
 } • yarn_service_protos.proto Implementation Details • yarn_protos.proto message ResourceProto {
 optional int32 memory = 1;
 optional int32 virtual_cores = 2;
 optional int32 gpu_cores = 3;
 } enum SchedulerResourceTypes {
 MEMORY = 0;
 CPU = 1;
 GPU = 2;
 } • yarn_service_protos.proto
  • 50. YARN Configuration • org.apache.hadoop.yarn.conf.YarnConfiguration Implementation Details • org.apache.hadoop.yarn.conf.YarnConfiguration public static final String RM_SCHEDULER_MINIMUM_ALLOCATION_GCORES =
 YARN_PREFIX + "scheduler.minimum-allocation-gcores";
 public static final int DEFAULT_RM_SCHEDULER_MINIMUM_ALLOCATION_GCORES = 0; public static final String RM_SCHEDULER_MAXIMUM_ALLOCATION_GCORES =
 YARN_PREFIX + "scheduler.maximum-allocation-gcores";
 public static final int DEFAULT_RM_SCHEDULER_MAXIMUM_ALLOCATION_GCORES = 8; public static final String NM_GCORES = NM_PREFIX + "resource.gcores";
 public static final int DEFAULT_NM_GCORES = 0;
  • 51. Resource 객체 • org.apache.hadoop.yarn.util.resource.Resource Implementation Details • org.apache.hadoop.yarn.util.resource.Resources public static Resource createResource(int memory) {
 return createResource(memory, (memory > 0) ? 1 : 0, 0);
 }
 
 public static Resource createResource(int memory, int cores) {
 return createResource(memory, cores, 0);
 }
 
 public static Resource createResource(int memory, int cores, int gcores) {
 Resource resource = Records.newRecord(Resource.class);
 resource.setMemory(memory);
 resource.setVirtualCores(cores);
 resource.setGpuCores(gcores);
 return resource;
 } 
 public int getGpuCores() { return 0; }
 
 public void setGpuCores(int gcores) { throw new RuntimeException("NONE cannot be modified!"); }
 
 public int compareTo(Resource o) {
 int diff = 0 - o.getMemory();
 if (diff == 0) {
 diff = 0 - o.getVirtualCores();
 if (diff == 0) {
 diff = 0 - o.getGpuCores();
 }
 }
 return diff;
 }
  • 52. Dominant Resource Calculator • org.apache.hadoop.yarn.util.resource.DominantResourceCalculator
  • 53. YARN UI 변화 UI Changes * 테스트용 클러스터 화면 캡쳐
  • 54. YARN Cluster CPU Core 1 Memory 1G GPU 3 Main main.sh tar dl_app.tar.gz data/ examples/ output/ main.sh create_mnist.sh lenet_solver.prototxt lenet_train_test.prototxt train_lenet.sh data/ examples/ output/ ü main.sh create_mnist.sh lenet_solver.prototxt lenet_train_test.prototxt train_lenet.sh CPU Core 1 Memory 1G GPU 3 C3 Distributed Shell : GPU 추가
  • 55. Technical Issues ü YARN Cluster에서 Shell Script Application 실행 ü 다양한 Deep Learning Framework 환경 제공 ü YARN Cluster에서 GPU Resource Scheduling è C3 Distributed Shell è Nvidia-Docker è YARN with GPU Scheduling 개발
  • 57. Deep Learning Application Toolset 개발 • GPU Device ID Manager • DL(Deep Learning) App Concept • DL App Launcher • DL App Tools • DL App Log • DL App 개발 환경
  • 58. GPU Device ID 할당 문제점 • 문제점 : YARN은 GPU 갯수만 관리함 • Deep Learning Application에 명시적으로 GPU Device ID를 할당하는 로직 필요
  • 59. GPU Device ID Manager • Cluster 전체의 GPU Device ID Allocation 정보를 Zookeeper 를 통해 관리 • GPU Device ID Manager • python kazoo lib • 분산 Lock • GPU Device ID 할당/해제 • Garbage Collection { ”host01": { "gpu0": "application_id_01", "gpu1": “application_id_01”, "gpu2": “application_id_02”, "gpu3": “application_id_03” }, “host02": { "gpu0": “application_id_04", … }, … }
  • 60. DL(Deep Learning) App 구현 Concept • DL App 구성 요소 • Deep Learning Framework 환경 (Caffe, TensorFlow …) • User Program ( Source Code) • Input Data • Output Data Input Output DL Framework 환경 Source Code
  • 61. YARN Cluster CPU Core 1 Memory 1G GPU 3 Main main.sh tar dl_app.tar.gz data/ examples/ output/ main.sh create_mnist.sh lenet_solver.prototxt lenet_train_test.prototxt train_lenet.sh data/ examples/ output/ ü main.sh create_mnist.sh lenet_solver.prototxt lenet_train_test.prototxt train_lenet.sh CPU Core 1 Memory 1G GPU 3 C3 Distributed Shell C3 Distributed Shell User Program ( Source Code) Input Data ?
  • 62. DL(Deep Learning) App 구현 Concept • DL App 구성 요소 • Deep Learning Framework 환경 (Caffe, TensorFlow …) • User Program ( Source Code) • Input Data • Output Data Input Output DL Framework 환경 Source Code
  • 63. DL(Deep Learning) App 구현 Concept • Input/Output Data • Data Repository Tech. • NFS • Ceph, GlusterFS, Lustre ü HDFS • C3 HDFS Storage를 저장소로 사용
  • 64. DL(Deep Learning) App 구현 Concept • Docker Container의 데이터는 volatile함 • Docker Container안에 permanent한 작업 영역(dir)이 필요함 • DL App Workspace (Directory) • DL App 실행을 위한 File/Dir들이 존재하는 영역 • User Program Src Code, Input/OutputData 들이 위치함 • Host Server상의 Directory이며 , Docker Container에 volumemount 되는 영역
  • 65. DL(Deep Learning) App 구현 Concept /User_Dev_Workspace /DL_App_Workspace Deep Learning App Input Output User Container
  • 66. DL App 실행 과정
  • 67. DL App 실행 과정 YARN Container Yarn Container 시작
  • 68. DL App 실행 과정 YARN Container GPU Device ID 할당 GPU Device ID Manager GPU 0,3 Zookeeper
  • 69. YARN Container DL App 실행 과정 DL App Workspace Source Code User Workspace 복사 GPU 0,3
  • 70. YARN Container DL App 실행 과정 DL App Workspace Input Source Code Input Data 복사 GPU 0,3
  • 71. YARN Container DL App 실행 과정 DL App Workspace( NVIDIA Docker ) Input Source Code NVIDIA Docker Cotainer 실행 GPU 0,3
  • 72. YARN Container DL App 실행 과정 DL App Workspace( NVIDIA Docker ) Input Source Code Docker Volume DL App Workspace Mount GPU 0,3
  • 73. YARN Container DL App 실행 과정 ( NVIDIA Docker ) Input Source Code DL App Docker 실행 GPU 0,3
  • 74. YARN Container DL App 실행 과정 ( NVIDIA Docker ) Input Source Code Output DL App Docker 실행 GPU 0,3
  • 75. YARN Container DL App 실행 과정 Input Source Code Output DL App Workspace DL App Docker 종료 GPU 0,3
  • 76. YARN Container DL App 실행 과정 Input Source Code Output DL App Workspace OutputData 복사 GPU 0,3
  • 77. DL App 실행 과정 YARN Container GPU Device ID 해제 GPU Device ID Manager GPU 0,3 Zookeeper
  • 78. DL App 실행 과정 YARN Container Yarn Container 종료
  • 79. DL App 실행 과정 Yarn Container 종료
  • 80. 원하는 DL App Properties • Docker Image • 실행 Src Code Dir Path • main 실행 script • Resource : CPU,Mem,GPU • Input Data 경로 • Output Data 경로 DL App 생성 및 실행하기 C3 Distributed Shell DL App 실행 과정 2) GPU ID 할당 3) User Workspace 복사 4) Input Data 복사 5) DL App Workspace 구성 완료 6) DL App NVIDIA Docker 실행 7) Output Data 복사 8) GPU ID 해제 YARN Cluster Shell Script Application Shell Script Application 생성
  • 81. dl_app.properties • Docker Image • 실행 Src Code Dir Path • main 실행 script • Resource : CPU,Mem,GPU • Input Data 경로 • Output Data 경로 C3 Distributed Shell DL App 실행 과정 2) GPU ID 할당 3) User Workspace 복사 4) Input Data 복사 5) DL App Workspace 구성 완료 6) DL App NVIDIA Docker 실행 7) Output Data 복사 8) GPU ID 해제 YARN Cluster dlapp-launcher dl_app.properties DL App Launcher Shell Script Application Shell Script Application 생성
  • 82. • Caffe LeNet MNIST Example • caffe/examples/mnist 기반 • . ├── dl_app_caffe.properties └── user_dev_workspace ├── create_mnist.sh ├── data/ ├── dl_app_start.sh ├── examples/ ├── lenet_solver.prototxt ├── lenet_train_test.prototxt ├── output/ └── train_lenet.sh dlapp-launcher 실행 예
  • 83. • dl_app_caffe.properties [application] username=tony appname='c3 deeplearning app caffe mnist example' docker_image=naver/c3_dl-caffe user_dev_workspace_path=./user_dev_workspace user_shell_script=dl_app_start.sh user_shell_args='-gpu all' [from_hdfs] hdfs=/user/tony/caffe_test/* input_path=data [to_hdfs] output_path=output hdfs=/user/tony/caffe_mnist_example_output overwrite=true • dl_app_start.sh #!/usr/bin/env bash ./create_mnist.sh ./train_lenet.sh $@ dlapp-launcher 실행 예 . ├── dl_app_caffe.properties └── user_dev_workspace ├── create_mnist.sh ├── data/ ├── dl_app_start.sh ├── examples/ ├── lenet_solver.prototxt ├── lenet_train_test.prototxt ├── output/ └── train_lenet.sh
  • 84. dlapp-launcher 실행 예 $ dlapp-launcher dl_app_caffe.properties C3 DL Cluster Version check : ok CheckDLAppProperties : ok user_dev_workspace_path = /path/to/user_dev_workspace user_dev_workspace_exclude_list = [] user_dev_workspace dir size = 4 kb DL App Submission : OK DL App ID = application_aaaaaaaaaaa_bbbb DL App Dashboard * While app is running , check : http://XXXXXXXXX/cluster/app/application_aaaaaaaaaaa_bbbb * After app is completed, check : http://XXXXXXXXX/applicationhistory/app/application_aaaaaaaaaaa_bbbb DL App Status and stdout/stderr Log URLs * dlapp-status application_aaaaaaaaaaa_bbbb
  • 85. DL App Tools • dlapp-status [ DL App ID ] • dlapp-list [Username] • dlapp-softkill [Username] [ DL App ID ] • dlapp-kill [Username] [ DL App ID ]
  • 87. DL App Log 확인 • YARN History,Timeline Server 기능 활용 • YARN Application stdout/stderr Log 는 Web 또는 yarn 명령어을 통 해 확인 가능 • YARN Container 의 Attempt ID 및 Container ID 를 통해 확인 • dlapp-status tool을 통해 stdout/stderr Log URL 제공
  • 88. dlapp-status 실행 예 $ dlapp-status application_aaaaaaaaaaa_bbbb DL App application_aaaaaaaaaaa_bbbb is FINISHED Username : tony DL App ID : application_aaaaaaaaaaa_bbbb DL App Name : 'c3 deeplearning app caffe mnist example' startTime : 2016-09-26 22:24:11.575000 finishTime : 2016-09-26 22:24:57.703000 elapsedTime : 0:00:46.13 stdout http://XXXXX/applicationhistory/logs/XXXXX/container_aaaaaaaaaaa_bbbb_01_000004/container_aaaaaaaaaaa_bbbb _01_000004/tony/stdout/?start=-4096 stderr http://XXXXX/applicationhistory/logs/XXXXX/container_aaaaaaaaaaa_bbbb_01_000004/container_aaaaaaaaaaa_bbbb _01_000004/tony/stderr/?start=-4096
  • 93. DL App Development 환경의 필요성 • DL App을 개발하려면 GPU 장비가 필요함 • 초기 DL App개발 시점에서 기본적인 검증 용도로 DL Cluster를 이용하는 것은 매우 번거로움 • 코드의 사소한 실수를 수정하는 과정의 반복 • Input/outputData등의 Directory 구조 확인
  • 94. DL App Development 환경 • DL App 개발 전용 GPU 서버 구축 • dlapp-shell • dlapp-launcher 와 동일한 Docker Image 및 Workspace로 실행되는 docker bash 환경 제공 • dlapp-run : dlapp-shell 환경에서 C3 DL Cluster 에 dl app 을 실행
  • 95. YARN Container DL App 실행 과정 ( NVIDIA Docker ) Input Source Code DL App Docker 실행 GPU 0,3
  • 96. DL App 개발 서버 DL App Shell ( NVIDIA Docker ) : Bash Shell Source Code GPU 0,3
  • 98. DL App Toolset • dlapp-launcher dl_app.properties • dlapp-shell dl_app.properties • dlapp-run • dlapp-status [DL App ID] • dlapp-list [Username] • dlapp-softkill [Username] [DL App ID] • dlapp-kill [Username] [DL App ID]
  • 100. Hadoop YARN 기반의 Multi-tenantDeep Learning Application 실행 환경 ? GPU Cluster Hadoop YARN DL Application DL Application DL Application
  • 101. DL Application C3 Deep Learning Cluster Zookeeper Dev. Environment Dev. Server Resource Manager YARN Node Manager YARN Docker Registry C3 HDFS Storage YARN with GPU Scheduling Node Manager YARN Node Manager YARN . . . C3 Distributed Shell NVIDIA Docker GPU Device ID Manager Input Output DL App Toolset dlapp-launcher dlapp-shell dlapp-run
  • 102. DL Framework Docker Images DL Solution Docker Image Caffe naver/c3_dl-caffe Torch naver/c3_dl-torch Theano naver/c3_dl-theano TensorFlow naver/c3_dl-tensorflow Theano+Keras naver/c3_dl-theano-keras TensorFlow+Keras naver/c3_dl-tensorflow-keras Base (CUDA/cuDNN) naver/c3_dl-base
  • 103. • Resource 관리 • GPU 자원 Utilization 증가 • GPU ResourcePlanning ( YARN Queue) • Administration • 작업 이력 관리 • 프로젝트 관리 • 사용자 관리 • DevOps • 규격화된 개발 환경 제공 • 개발 환경 공유 개선점
  • 104. • 검색 품질 향상을 위한 seq2seq 기반의 검색 키워드 변환 • word2vec,CNN 기반의 문서 주제 분류 • CNN 기반의 Image Tagger • 이외 다수의 프로젝트가 실행중 현재 C3 DL Cluster에서는 … * CNN : Convolutional Neural Network
  • 105. To Do
  • 106. To Do • GPU Resource Scheduling 고도화 • 대용량 Input Data • Input Data Caching • Input Data Feeder • Distributed Deep Learning
  • 107. Q&A