Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Apache MXNet으로 배워보는 딥러닝(Deep Learning) - 김무현 (AWS 솔루션즈아키텍트)

3,561 views

Published on

다양한 분야에서 좋은 성능을 보여주는 머신러닝의 한 종류인 딥 러닝에 대한 기본적인 개념과 이미지 분석에 많이 적용되는 Convolutional Neural Network 을 배워봅니다. 이를 구현하기 위한 딥러닝 프레임워크인 Apache MXNet에 대한 소개와 기본 사용법을 익혀보고, Fashion MNIST 데이터를 분류하는 CNN 모델을 구현하는 방법을 설명합니다.

Published in: Technology
  • Be the first to comment

Apache MXNet으로 배워보는 딥러닝(Deep Learning) - 김무현 (AWS 솔루션즈아키텍트)

  1. 1. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 김무현 솔루션즈아키텍트, AWS 2017년 11월 1일 Apache MXNet으로 배워보는 딥러닝
  2. 2. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 강연 중 질문하는 법 자신이 질문한 내역이 표시되며, 전체 공개로 답변된 내용은 검은색, 질문자 본인에게만 공개로 답변된 내용은 붉은 색으로 돌아옵니다.
  3. 3. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 순서 • 머신러닝/딥러닝이란 • 딥러닝과 관련된 Amazon AI 서비스들 • 이미지 분석에 사용되는 Convolutional Neural Network • Apache MXNet 101 • Fashion MNIST 분석 예제
  4. 4. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 인공지능, 머신러닝, 딥러닝
  5. 5. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Supervised Learning Input Label Machine Learning Algorithm 래프라도 Prediction 고양이 학습 데이터 ? Label 래프라도 모델 조정
  6. 6. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Unsupervised Learning Input Machine Learning Algorithm Prediction
  7. 7. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 학습 과정 – 데이터를 학습, 검증, 테스트용으로 나누기 All Labeled Dataset Training Data 70% 30%
  8. 8. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 학습 과정 – 학습 데이터를 이용한 Learning All Labeled Dataset Training Data 70% 30% Training Trial Model
  9. 9. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 학습 과정 – 성능 검증을 위한 테스트 데이터 All Labeled Dataset Training Data 70% 30% Training Trial Model Test Data
  10. 10. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 학습 과정 – 학습된 모델 검증 All Labeled Dataset Training Data 70% 30% Training Test Data Evaluation Result Trial Model
  11. 11. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 학습 과정 – 성능 검증 측정 All Labeled Dataset Training Data 70% 30% Training Test Data Evaluation Result Trial Model Accuracy
  12. 12. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 왜 딥러닝 최근 유명해졌을까요? Fast Compute Ubiquitous Data Advanced Learning Algorithms
  13. 13. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 딥러닝과 관련된 Amazon AI 서비스들
  14. 14. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Amazon AI 모든 개발자에게 머신러닝 능력을 제공 More in 2017 Infrastructure CPU Engines MXNet TensorFlow Caffe Theano Pytorch CNTK Services Amazon Polly Platforms IoT Speech Mobile Amazon ML Spark & EMR Kinesis Batch ECS GPU More in 2017 Chat Amazon LexAmazon Rekognition Vision
  15. 15. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. NVIDIA Tesla V100 GPU 지원 Amazon EC2 P3 • 5,120개의 CUDA 코어, 640개의 Tensor 코어 • 각 GPU가 최대 300GBps의 데이터 속도로 실행되는 NVIDIA NVLink 2.0을 통해 서로 연결 • 최대 2.7GHz로 실행되는 맞춤형 Intel Xeon E5-2686v4 프로세서 • 혼합 부동 소수 – 125 TFLOPS / 단일 부동 소수(FP32) – 15.7 TFLOPS / 더블 부동 소수(FP64) – 7.8 TFLOPS 모델 GPU 개수 GPU 메모리 NVIDIA NVLink vCPU 개수 주메모리 네트워크 대역폭 EBS 대역폭 p3.2xlarge 1 16 GiB N/A 8 61 GiB Up to 10 Gbps 1.5 Gbps p3.8xlarge 4 64 GiB 200 GBps 32 244 GiB 10 Gbps 7 Gbps p3.16xlarge 8 128 GiB 300 GBps 64 488 GiB 25 Gbps 14 Gbps
  16. 16. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS Deep Learning AMI CUDA 9 EC2 P3 CUDA 8
  17. 17. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS Deep Learning AMI https://aws.amazon.com/amazon-ai/amis/details/ Amazon Linux, Ubuntu 많이 사용하는 딥러닝프레임워크 Apache MXNet, Tensorflow, Caffe2, torch, Keras, Keras 2, theano, Caffe, CNTK, PyTorch 딥러닝에 필요한 라이브러리들 Python2, Python3, Jupyter notebok, Anaconda2/3, Matplotlib, scikit- image, cpplint, pylint, pandas, graphviz 등 Intel Math Kernel Library (Apache MXNet) NVIDIA CUDA, CUDA Deep Neural Network library (cuDNN)
  18. 18. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Deep Learning으로 무엇을 해볼까요?
  19. 19. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 딥러닝의 Hello World – MNIST 데이터셋
  20. 20. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Fashion-MNIST https://github.com/zalandoresearch/fashion-mnist • Zalando’s article 이미지들 • 60,000개의 학습 데이터 • 10,000개의 테스트 데이터 • 28 x 28, 회색 이미지 • 10개 카테고리
  21. 21. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 딥러닝에 적용한 아이디어 - 뉴런
  22. 22. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 인공 뉴런 출력 뉴런 연결 가중치 • 입력 학습 데이터 X에 대한 백터 • 출력 입력에 대한 Linear function 결과값 • 비선형성 (Nonlinearity) 출력을 원하는 범위의 값으로 변화시키는 것. 예, 분류의 경우 [0,1] 확률값이 필요 • 학습 가중치 w와 Bias b 를 찾는 과정 x1 x2 xn w1 w2 wn ……. 입력 뉴런
  23. 23. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Deep Neural Network hidden layersInput layer output Add Non Linearity to output of hidden layer To transform output into continuous range
  24. 24. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 딥러닝에서의 Training 0.4 0.3 0.2 0.9 ... back propogation (gradient descent) X1 != X 0.4 ± 𝛿 0.3 ± 𝛿 new weights new weights 0 1 0 1 1 . . - - X input label ... X1
  25. 25. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 딥러닝 모델 0.2 -0.1 ... 0.7 Input Output 1 1 1 1 0 1 0 0 0 3 mx.sym.Pooling(data, pool_type="max", kernel=(2,2), stride=(2,2) lstm.lstm_unroll(num_lstm_layer, seq_len, len, num_hidden, num_embed) 4 2 2 0 4=Max 1 3 ... 4 0.2 -0.1 ... 0.7 mx.sym.FullyConnected(data, num_hidden=128) 2 mx.symbol.Embedding(data, input_dim, output_dim = k) Queen 4 2 2 0 2=Avg Input Weights cos(w, queen) = cos(w, king) - cos(w, man) + cos(w, woman) mx.sym.Activation(data, act_type="xxxx") "relu" "tanh" "sigmoid" "softrelu" Neural Art Face Search Image Segmentation Image Caption “People Riding Bikes” Bicycle, People, Road, Sport Image Labels Image Video Speech Text “People Riding Bikes” Machine Translation “Οι άνθρωποι ιππασίας ποδήλατα” Events mx.model.FeedForward model.fit mx.sym.SoftmaxOutput Anatomy of a Deep Learning Model mx.sym.Convolution(data, kernel=(5,5), num_filter=20)
  26. 26. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Convolutional Neural Network에서 사용되는 레이어 종류 Convolutional Layer Activation Layer Pooling Layer 패턴을 검출하는 필터 역할 비선형 구조를 적용 배열 크기(행,열)를 줄임
  27. 27. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 일반 Neural Network와 Convolutional Network 이미지 출처: http://cs231n.github.io/convolutional-networks/
  28. 28. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 이미지에서 패턴을 찾는 Convolutional Layer 이미지 출처: http://cs231n.github.io/convolutional-networks/
  29. 29. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Convolutional Neural Network를 적용한 이미지 분류
  30. 30. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. LeNet-5
  31. 31. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AlexNet
  32. 32. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. GoogLeNet Convolution Pooling Softmax Other
  33. 33. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. VGG Image Credit : https://www.cs.toronto.edu/~frossard/post/vgg16/
  34. 34. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. ResNet Image Credit : https://arxiv.org/pdf/1512.03385.pdf • Residual 학습 개념 사용 • Layer 수: 18, 34, 50, 101, 152
  35. 35. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 이제 구현해 볼까요?
  36. 36. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 딥러닝 구현을 위한 프레임워크가 필요합니다
  37. 37. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Deep Learning 프레임워크들
  38. 38. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Apache MXNet • 자원을 효율적으로 활용함 • 작은 메모리의 GPU와 느린 네트워크를 고려 • 클라우드에서 학습하고, 어디에나 배포 • 속도 • 노드와 GPU 개수가 증가하는 것과 비례한 성능 향상 • 단일 노드에서도 높은 효율 (C++ Backend) • 프로그램밍 기능 • 명령형(Imperative)과 선언형(Declarative) 프로그램밍 혼합 • 다양한 프로그램 언어 지원
  39. 39. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. MXNet 특징 - GPU 개수 증가에 따른 확장성 Number of GPUs
  40. 40. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Gluon 유연한 딥러닝을 위한 쉬운 프로그래밍 인터페이스 • 친숙한 API • 다이나믹 네트워크 • 알고리즘으로 네트워크 정의 • 학습을 위한 고속 연산자 Introducing Gluon: a new library for machine learning from AWS and Microsoft https://aws.amazon.com/blogs/aws/introducing-gluon-a-new-library-for-machine-learning-from-aws-and-microsoft/
  41. 41. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Apache MXNet 구성 요소 NDArray • 명령형 프로그래밍 (Imperative) • CPU와 GPU에서 다차원 배열(Tensor) 연산을 수행 Symbol • 선언형 프로그래밍 (Declarative) • Neural Network 그래프 정의 및 최적화를 위한 자동 미분 수행 Module • Neural Network 학습 및 예측 수행 Iterators • 데이터 로딩
  42. 42. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. NDArray – mxnet.ndarray • 다차원 배열(텐서)에 대한 수학 연산을 위한 핵심 자료 구조 • 고정 크기의 동일한 데이터 타입의 다차원 배열 • NumPy와 차이점 • CPU, GPU 및 여러 GPU 환경에서 연산을 수행 • 여러 연산을 가용한 하드웨어에 걸쳐서 병렬로 수행 0 1 2 3 4 5 2 X 3 배열 1번째 Axis 2번째 Axis
  43. 43. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. NDArray – 주요 Attribute들 • ndarray.shape: 배열의 차원값 • ndarray.dtype: 원소의 데이터 타입 (numpy 타입 객체) • ndarray.size: 배열의 총 원소 개수 • ndarray.context: 형열이 저장된 디바이스 (CPU, GPU)
  44. 44. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Symbol – mxnet.symbol Symbol을 이용한 선언형(declarative) 프로그래밍 방법은, 1) 입력과 출력에 대한 Placeholder을 이용해서 연산 그래프 정의 2) NDArray 변수들을 Placeholder에 바인딩한 후, 그래프 연산을 수행 최적화된 연산 수행 (예, 메모리 재사용을 통한 적은 메모리 사용)
  45. 45. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Symbol – 기본 사용법 import mxnet as mx a = mx.sym.Variable('a') b = mx.sym.Variable('b') c = a + b d = a * b e = mx.sym.dot(a, b) mx.viz.plot_network(symbol=c)
  46. 46. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Apache MXNet – Symbol 패키지 Convolution Activation Pooling Flatten FullyConnected SoftmaxOutput
  47. 47. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Symbol – 기본 Neural Network 구성하기 net = mx.sym.Variable('data') net = mx.sym.FullyConnected(data=net, name='fc1', num_hidden=128) net = mx.sym.Activation(data=net, name='relu1', act_type="relu") net = mx.sym.FullyConnected(data=net, name='fc2', num_hidden=10) net = mx.sym.SoftmaxOutput(data=net, name='out') mx.viz.plot_network(net, shape={'data':(100,200)})
  48. 48. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Module – mxnet.module • 정의된 네트워크를 학습 시키고, 학습된 네트워크를 이용해서 예측을 수행 • 상위 레벨 및 중간 레벨 인터페이스 제공 학습 수행 순서 • 학습 데이터 입력 • 모델 파라메터 초기화 • 네트워크를 따라 Forward, Backward 수행 • Gradient들을 기반으로 weight 값 조정 • 모델 체크포인트 … bind init_params init_optimizer metric.create forward update_metric backward update fit 중간 레벨 인터페이스 상위 레벨 인터페이스
  49. 49. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Module – 모델 정의 # create a module mod = mx.mod.Module( symbol=net, context=mx.cpu(), data_names=['data'], label_names=['softmax_label']) • symbol: Neural Network 정의 • context: 어떤 디바이스에서 수행할 것인지 (CPU, GPU, 여러 GPU들) • data_names: 입력 데이터 변수 이름들 • label_names: 입력 label 변수 이름들
  50. 50. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Module – 여러 GPU 사용하기 # Single GPU module = mx.module.Module( context=mx.gpu(0)) # Train on multiple GPUs module = mx.module.Module( context=[mx.gpu(i) for i in range(N)], ...) • Data parallelism을 기본 지원 • 여러개의 GPU를 사용하도록 간단히 설정 가능 examples
  51. 51. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Module – 중간 레벨 인터페이스 활용 예제 # 주어진 입력 데이터 및 label 모양(shape)에 따라 메모리 할당 mod.bind(data_shapes=train_iter.provide_data, label_shapes=train_iter.provide_label) # uniform random number를 사용해서 파라메터 초기화 수행 mod.init_params(initializer=mx.init.Uniform(scale=.1)) # 학습 속도(learning rate) 0.1 값으로 학습에 SGD 사용 mod.init_optimizer(optimizer='sgd', optimizer_params=(('learning_rate', 0.1), )) # 정확도(accuracy)를 메트릭으로 사용 metric = mx.metric.create('acc') # 트레이닝 을 5 epoch 수행 for epoch in range(5): train_iter.reset() metric.reset() for batch in train_iter: mod.forward(batch, is_train=True) # 예측값 계산 mod.update_metric(metric, batch.label) # 예측 정확도 누적 mod.backward() # gradients 계산 mod.update() # 파라메터 업데이트 print('Epoch %d, Training %s' % (epoch, metric.get()))
  52. 52. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Module – 상위 레벨 인터페이스 • 학습: 중간 레벨 인터페이스를 하나 하나 수행하지 않고, module.fit API 호출 • 예측: module.predict API 제공 # fit the module mod.fit(train_iter, eval_data=val_iter, optimizer='sgd', optimizer_params={'learning_rate':0.1}, eval_metric='acc', num_epoch=8)
  53. 53. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Module – 모델 저장 및 읽어오기 • 학습이 완료된 모델은 파일로 저장하고, checkpoint = mx.callback.do_checkpoint(model_prefix) • 필요할 때 저장된 모델을 읽어서 예측에 사용 sym, arg_params, aux_params = mx.model.load_checkpoint(model_prefix, 3) • 모델 체크포인트 파일 • 네트워크 정의: .json • 학습된 파라메터값들: .params
  54. 54. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 이제 정말 구현해 볼까요?
  55. 55. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. MXNet을 이용한 Convolutional Layer 구현 방법 mxnet.symbol.Convolution() mxnet.symbol.Activation() mxnet.symbol.Pooling() mxnet.symbol.flatten() mxnet.symbol.FullyConnected() mxnet.symbol.SoftmaxOutput()
  56. 56. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Convolution Layer 예제 import mxnet as mx data = mx.sym.Variable(‘data’) conv1 = mx.sym.Convolution(data=data, kernel=(5,5), num_filter=30) act1 = mx.sym.Activation(data=conv1, act_type=‘relu’) pool1 = mx.sym.Pooling(data=act1, pool_type=‘max’, kernel=(2,2))
  57. 57. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 3D 배열을 1D 배열로 변환 fc0 = mx.sym.Flatten(pool2)
  58. 58. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Fully Connected Layer 정의 fc1 = mx.sym.FullyConnected(data=fc0, num_hidden=500) act3 = mx.sym.Activation(data=fc1, act_type=‘relu’)
  59. 59. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 마지막 카테고리 판별을 위한 Output 레이어 정의 fc3 = mx.sym.FullyConnected(data=fc2, num_hidden=500) output_layer = mx.sym.SoftmaxOutput(data=fc3, name=’softmax’)
  60. 60. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. MXNet을 이용한 Fashion-MNIST 분석 예제 https://github.com/sunilmallya/dl-twitch-series E3_image_recognition_clothing_detector.ipynb $ ssh –i mysecurekey.pem –L 8888:localhost:8888 ubuntu@EC2-IP $ git clone https://github.com/sunilmallya/dl-twitch-series.git $ cd dl-twitch-series $ jupyter notebook
  61. 61. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 딥러닝에 대해서 더 알고 싶으시면 AWS AI (https://aws.amazon.com/ko/amazon-ai) AWS AI Blog (https://aws.amazon.com/blogs/ai) Deep Learning - The Straight Dope (http://gluon.mxnet.io) Apache MXNet (http://mxnet.incubator.apache.org) Gluon (http://mxnet.incubator.apache.org/gluon)
  62. 62. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS re:Invent 2017 – 머신러닝 https://aws.amazon.com/blogs/ai/your-guide-to-machine-learning-at-reinvent-2017/ 50개 이상의 breakout 세션 핸즈온 워크샵, 랩 Deep-dive Chalk Talk 주목할 만한 이벤트들 • Robocar Rally 2017 • Deep Learning Summit • Deep Learning on AWS • Computer Vision Language & Speech
  63. 63. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 질문에 대한 답변 드립니다. 발표자료/녹화영상 제공합니다. http://bit.ly/awskr-webinar 더 나은 세미나를 위해 여러분의 의견을 남겨 주세요!

×