티스토리 뷰

리뷰

DEVIEW 2016 리뷰

warpmemory 2016. 10. 28. 16:50

1. Overview

  • 네이버에서 주최한 DEVIEW 2016 개발자 컨퍼런스 참석 후기 입니다.
  • DEVIEW 2016은 2016.10.24(Mon) ~ 2016.10.25(Tue) 양일간, 서울 COEX Grand Ballroom 에서 개최되었으며,
    본 리뷰는 25일에 본인이 참석한 트렉에 대한 리뷰입니다.

2. Schedule

  • 전체 스케줄 중, 본인이 참석한 섹션 스케줄입니다.
  • 작년 까지만 해도, 빅데이터 수집/분석이 주를 이루었으나, 올해는 빅데이터를 넘어 머신러닝 활용이 주를 이루었습니다.
  • 본인은 현재 직무와 연관있는 서버 플랫폼/인프라 구축 및 성능튜닝 관련 트랙과,
    앞으로의 인공지능을 사용한 서버 인프라 관리가 어떻게 가능할지 가늠해 보기 위하여 머신러닝,
    데이터 통계 관련 트랙을 선택하였습니다.

DAY 2 / 10.25(화)

 10:00 ~ 10:45

 나는 서버를 썰터이니 너는 개발만 하여라

 양지욱 DevOps Korea group

 [소개] [자료]

 11:00 ~ 11:45

 라즈베리파이, 서버, IoT 성능 어디까지 쥐어짜봤니?

 송태웅 KOSSLab.

 [소개] [자료]

 12:00 ~ 12:45

 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

 김태훈 데브시스터즈

 [소개] [자료]

 14:00 ~ 14:45

 CEPH Optimization on SSD

 변일수 SK 텔레콤

 [소개] [자료]

 15:00 ~ 15:45

 YARN 기반의 Deep Learning Application Cluster 구축

 김제민 NAVER

 [소개] [자료]

 16:00 ~ 16:45

 딥러닝 예제로 보는 개발자를 위한 통계

 최재걸 NAVER

 [소개] [자료]


3. Review

3.1. 나는 서버를 썰터이니 너는 개발만 하여라


Zinst는 발표자가 다양한 Server의 구성을 설치 관리 할 수 있도록 만든 툴인데, 
해당 툴을 기반으로 DevOps 시스템들을 만들고, 운영 할 수 있는지에 대한 발표였다.
Zinst는 Yahoo!의 자체 서버관리 도구인 Yinst의 Concept를 기반으로 제작하였다고 한다.
(개발자는 Yahoo! 출신 시스템엔지니어였음)
Puppet, Chef, Ansible 등 유사한 툴이 존재 하였지만, 부족한 부분도 많아서 직접 개발하게 되었고, 
다른 Project들에 비해 강점은,
패키지 설치시 Set 값에 의하여 하나의 패키지로 다른 서버에 다른 설정을 설치와 동시에 적용이 가능하고,
원격에서 직접 관리가 가능하며, 한번에 여러대의 장비에 동일한 명령을 처리 가능,
자체적으로 package version 관리를 하여, 장기적으로 시스템 관리 하더라도, 외부 환경에 의한 문제를 최소화 할 수 있다는 것이다. 특징은 Bash로 제작 되어서, Linux/Unix 시스템에서만 사용이 가능하다.
Zinst를 사용하여 개발환경 자동화, 인프라 작업 프로세스 자동화, 시스템 운영 자동화, 시스템 표준화, 
설치 및 설정 히스토리 관리, 접근제어, 시스템 복구, 패키지 관리, 클러스터 자동화, 배포 시스템등을 구축할 수 있다고 한다.
위에 나열된 시스템 처럼, 형상관리도구는 인프라 시스템이라면, 꼭 필요한 기본 기능이라고 생각되어지는 데요.
이러한 시스템은 마이크로 아키텍처 시스템으로 구축하여, 형상관리가 필요한 모든 인프라시스템에서 
공통으로 사용하면 좋을것같다는 생각을 했습니다.

3.2. 라즈베리파이, 서버, IoT 성능 어디까지 쥐어짜봤니?

리눅스 커널과 관련된 성능 문제를 어떻게 해결하고, IoT, 임베디드 환경에서 C/C++ program 성능을 개선할 수 있을지에 대한 발표였습니다.
Cassandra 서버에 커널 업데이트 후 DISK I/O가 많아지고, iowait도 높아지는 현상이 발생하였는데,
성능 측정 도구인 perf를 활용하여, 커널 관련 성능이슈를 확인하고 처리한 내용을 예를 들어서 설명하였습니다.
perf는 프로세스, 메모리, 디바이스 드라이버, 파일 시스템, 네트워킹에 해당하는 성능분석 지점을 선택하여, 성능측정이 가능합니다.
측정에서 더나아가서 profiling을 통한 병목지점을 찾아낼 수 있고, tracing 기능을 사용하여 특정 이벤트 발생 과정을 역추적할 수 있습니다.
또한, 이벤트 샘플링이 가능하고, 샘플링을 통한 이벤트 횟수를 카운팅 할 수 있다.
직접 개발한 C/C++ 프로그램에 대한 성능 측정도 가능하고, 소스 line 별로 점유율 확인이 가능하다.
시스템 규모가 커지면서, 성능 이슈는 더욱더 부각 되고 있다고 생각한다. 
perf 같은 성능 측정 도구를 사용하여, 성능을 모니터링하고 최적화하는 것, 효율적인 대규모 서비스를 하기 위한 필수 적인 요소가 아닐까?

3.3. 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

딥러닝과 강화학습을 사용하여, 사람보다 잘하는 인공지능(AlphaRun)을 구현한, 방법과 기반 기술들을 소개하는 시간이였다.
현재 상태에서 어떤 엑션을 취해야 최대의 점수(보상)를 얻을 수 있는지를 반복 학습하는 방법을 기술적으로 어떻게 구현하였는지,
어려운 부분은 (시간 관계상) 건너뛰고(?), 간단하게 설명을 잘해주셨습니다.

<시간에 따른 Agent(쿠키), Environment(쿠키런 맵), State(상태 변화),

 Action(쿠키 엑션), Reward(보상)의 관계 흐름도(출처: 발표자료)>


AI에 사용된 기술(논문)은 8가지이고, 그 중 Deep Q-Network, Double Q-Learning, Dueling Network 3가지에 대해서 설명해주셨는데, 논문은 따로 공부를 해야 겠네요 @_@ 그 밖에도 운영을 위한, weight 값고정, 학습비용 줄이는 방법, 디버깅/로깅(동영상 왼쪽 텍스트) 등에 대한 노하우도 공유해 주셨습니다. 자세한 내용은 발표 자료 확인해 보시면 좋을것같습니다.
AlphaRun은 게임에서 매우 중요한 게임 벨런싱 테스트용으로 사용을 하고 있다고 합니다. 실제 사람이 테스트를 한다고 한다면 엄청난 시간(쿠키 30개 * 펫 30개 * 보물 9개(2개씩 장착) * 맵 7개 * 평균플레이 4분 = 5040일)이 들어가지만, AlphaRun이 하면 컴퓨터 1대로 6개 프로세스를 돌려서 14일이면 가능하다고 하네요. AlphaRun을 통해서 매우 좋은 효과를 보고 있다고 할 수 있을 것 같습니다.
서버 인프라/플랫폼 분야에서도 딥러닝을 활용하여, 침해감지대응, 오토스케일링등에 활용 할 수 있을거 같다는 생각이 드네요. 딥러닝은 앞으로도 많은 것들을 바꿔놓지 않을까 생각이 듭니다. 저도 열심히 도전해 해봐야겠습니다. ^-^

3.4. CEPH Optimization on SSD

HDD기반으로 제작된 ceph를 성능 좋은 SSD에서 서비스하면서 SSD 성능을 최대한 활용 가능하도록 최적화 하는 방법에 대한 발표였는데요. 성능이라는 것은 Computing, Storage, Network 중 어느 한쪽만 좋아져서는 최대성능을 낼 수 있지 않은데, 즉 Storage가 병목 구간이여서 HDD에서 SSD로 변경하게 되면, 다시 병목구간은 Computing 즉, CPU 쪽이 되고 CPU성능을 높이면 그 다음에는 Network가 병목구간이 되는 경우가 있습니다. 이런 경우 시스템 내부를 들여다보고 병목구간을 찾아 소프트웨어를 최적화 하여 최적의 성능을 내는 시스템을 만들수 있다고합니다. 병목구간을 찾는것이 제일 어렵고 중요한데, 병목구간을 찾는것은 항상 peak load 일때 찾아야 정확한 명목구간을 찾을 수 있다고 합니다. CEPH는 RDB(스카시 장비같은 블록디바이스), RGW(S3 같은 오브젝트스토리지), CEPH FS(원격 파일 시스템) 이렇게 3가지 서비스를 하는데, 튜닝대상은 가상서버 스토리지로 많이 사용하는 RDB를 사용했을 때를 최적화 하는 방법에 대한 것이였다고하네요.
OSD(오브젝트스토리지 데몬)에서 데이터를 저장하는 방식에는 3가지가 있는데 FileStore, MemStore, BlueStore 이 중 BlueStore 를 사용하였다고 합니다. BlueStore는 저널링 부분은 제거하고, 바로 데이터를 바로 디스크에 저장 하고 RocksDB라는 메타데이터를 업데이트 한 후 Ack를 보내 동기화하는 형태를 취하는데, SSD의 경우에는 데이터 저장이 매우 빠르게 저장이 되기때문에, 실제 데이터 저장보다 메타데이터 저장이 병목이 되는 구간이 되었습니다. 그래서 메타데이터 저장 소스를 변경하여 메타데이터를 압축 분할하여 사이즈를 줄이는 코드 튜닝작업을 하였다고합니다.
또한, 저장완료 후 Ack를 보내기 위해, 큐 등록 부분이 병목 구간이 되었는데, 해당 부분도 분할(shard) 처리하여, 50%정도의 성능향상을 가져올 수있었다고 합니다.
그 밖에도 성능 측정시 하이퍼스레딩이 사용된 CPU일 경우에 전체 성능을 발휘 못하는 것처럼 보이는데, 그것은 하이퍼스레딩이기 때문에 어느정도 사용못하는것으로 측정된는 것이 맞다고 팁을 주셨습니다. 그리고 질의 응답 시간에 현재 하나의 SSD에 OSD 두개정도 띄우면 대략 성능이 맞다고, 유용한 정보를 주셨습니다.
역시 성능 튜닝은 내부 로직을 깊이 들여다 보고, 많은 실험을 거처야만, 좋은 결과를 가져올 수 있구나라는 것을 다시한번 느끼게 하는 발표였습니다.

로비에 차려진 기업 부스에서 ceph관련 부스가 있어서 가져온 전단지를 확인해보니, 현재 skt에서는 현재 해당 기술력을 기반으로, 자회사인 sk hynix 콜라보하여, Scube AFCeph라는 상품을 개발해 판매중인 것으로 보인다.(제품 사이트)

3.5. YARN 기반의 Deep Learning Application Cluster 구축

머신러닝 분야중 거의 모든 분야에서 절대적으로 성능이 우월한 Deep Learning을 인프라로 제공하고, 다수의 프로젝트와, 다수의 연구원/개발자에게, 값비싼 자원이 GPU를 자원을 어떻게하면 효율적으로 사용할 수 있게 YARN 기반의 Deep Learning Application Cluster를 구축하였는지에 대한 발표였습니다.
다양한 Deep Learning Framework를 지원하고, 효율적인 GPU Cluster 자원을 관리하는 것이 목표였는데, 이를 하기위해서는 크게 세가지 기술적인 이슈가 있었다고 합니다.
1) YARN Cluster에서 Shell Script Application 실행
2) 다양한 Deep Learning Framework 환경 제공
3) YARN Cluster에서 GPU Resource Scheduling
1)을 해결하기 위해서, Yarn Distributed Shell을 기반으로 분산쉘을 기능을 기반으로 실행 기능을 자체 개발하였고, 2)를 해결하기위해서는 Nvidia에서 제공하는 Nvidia-Docker를 사용하여, Docker 컨테이너기술을 사용 환경을 독립시키고, Docker안에서 CUDA를 사용하도록하여 문제를 해결하였다고 합니다.
3)의 경우는 현재 YARN은 CPU와 Memory만으로 스케쥴링을 하고 GPU는 지원하지 않기때문에 부가적인 개발이 필요하였고, YARN에 기능을 직접 추가하는 방법으로 처리하였다고 합니다.
위에서 언급된 기술들을 기반으로, 딥러닝 어플리케이션 런처와 이를 관리하기 위한 tool들을 개발하였다고 합니다.
네이버에서 벌써 딥러닝 어플리케이션들을 만들고 관리할 수 있는 플랫폼화 된 인프라시스템까지 구축한 것을 보면, 앞으로 딥러닝 분야에 발전 가능성은 무궁무진하지 않나 싶습니다.

3.6. 딥러닝 예제로 보는 개발자를 위한 통계

딥러닝 기술(논문)들에 맵핑되는 통계학문들이 어떤것들이 알아보고, 개발자들에게 필요한 통계분야 소양에 대한 내용을 발표였습니다.
좋은 데이터 사이언티스트가 되려면, 데이터마이닝, 머신러닝, 통계를 잘해야 된다고합니다.
개발시 데이터마이닝과 머신러닝을 통해서 문제해결을 많이해봤지만, 통계로는 해결한 문제는 별로 없었는데, 머신러닝의 K-means가 EM을 변경한것이다. 라는 것을 듣고 머신러닝과 통계의 연관 관계를 알게되었다고합니다.
그리고, 발표자 마음대로 나눠본 통계분야 기술, 회귀, 분포, 검정등에 대한 내용들과, 분포통계에서 분포구조를 구조를 설명해주셨습니다.
@_@ 학교 다닐때 통계좀 잘배워둘걸 그랬습니다. 들어도 잘모르겠더군요.
딥러닝은 여러가지 문제점 때문에 다른 기술들에 밀려 천대 받던 기술이였는데, 2010년 Hinton교수가 Sigmoid 함수대신 ReLU를 사용하여 학습성능을 대폭 향상시킴으로서 혁신기술로서 인정을 받게되었다고합니다.
이제 까지 나온 딥러닝 기술들을 통계와 맵핑이 되는데, 이를 반대로 통계에 있지만 아직 딥러닝에는 없는 기술을 만들 수 있다는 이야기가 된다고 하네요. 이쪽에 관심이 있으신분들은 연구해볼만한 가치가 있을것 같네요.


'리뷰' 카테고리의 다른 글

DEVIEW 2015 참석 후기  (0) 2020.03.07
DEVIEW 2013 참석 후기  (0) 2020.03.07
갤럭시북 플렉스 리뷰  (0) 2020.01.11
NDC(NEXON DEVELOPERS CONFERENCE) 2019 참관기  (0) 2019.05.29
DEVIEW 2017 참석 후기  (0) 2017.11.10
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
페이지
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함