스마트폰의 딥 러닝

스마트폰의 딥 러닝

  1. 1. 스마트폰에서 딥러닝 신범준 HYPERCONNECT 이 슬라이드는 네이버에서 제공하는 나눔글꼴을 사용합니다.

  2. 2. 하이퍼커넥트 머신러닝 성과
  3. 삼. 머신러닝 PaaS 보고서 이미지 검사를 위한 하이퍼커넥트 성능(클라우드)
  4. 4. 하이퍼커넥트 PaaS 머신러닝 성능 보고서 이미지 검사(클라우드) 이미지 분류기(모바일)
  5. 5. 하이퍼커넥트 머신러닝 성능 실시간 백그라운드 선택(모바일) PaaS 리포트 이미지 검증(클라우드) 이미지 분류기(모바일)
  6. 6. 작은 딥러닝 모델을 잘 만들어서 모바일에 배포하는 이야기. 오늘의 주제
  7. 7. 왜 모바일 딥러닝인가?
  8. 8일. 왜 모바일 딥러닝인가? 긴 대기 시간
  9. 9. 왜 모바일 딥러닝인가? 높은 대기 시간, 낮은 대역폭
  10. 10 왜 모바일 딥러닝인가? 대기 시간이 긴 오프라인 낮은 대역폭
  11. 11. 왜 모바일 딥러닝인가? 높은 대기 시간 많은 장치가 오프라인 상태임 낮은 대역폭
  12. 12. 왜 모바일 딥러닝인가? 프라이버시 긴 대기 시간 많은 장치 오프라인 낮은 대역폭
  13. 13. 가능한 응용 프로그램
  14. 14 스마트폰 애플리케이션 사용 가능
  15. 15 가능한 애플리케이션 무인 차량 스마트폰
  16. 16 가능한 애플리케이션 무인 자동차 스마트폰 드론
  17. 17 가능한 애플리케이션 무인 자동차 스마트폰 드론 VR/AR
  18. 18 가능한 애플리케이션 무인 자동차 스마트폰 드론 VR/AR IOT
  19. 19 일반 딥 러닝(CNN) 모바일 딥 러닝(CNN) 퀵 투어
  20. 20 보통 딥 러닝(CNN) 모바일 딥 러닝(CNN) 테스트 GPU(Nvidia) 주로 CPU 짧은 티저
  21. 21 보통 딥 러닝(CNN) 모바일 딥 러닝(CNN) 테스트 GPU(Nvidia) 주로 CPU 테스트 다중 자르기/앙상블 원패스 추론 빠른 미리보기
  22. 22 일반 딥러닝(CNN) 모바일 딥러닝(CNN) 테스트 GPU(엔비디아) 주로 CPU 테스트 멀티 크롭/앙상블 원패스 추론 간단한 맛 테스트 속도보다 메모리, 정확성이 중요
  23. 23 일반 딥러닝(CNN) 모바일 딥러닝(CNN) 테스트 GPU(Nvidia) 주로 CPU 테스트 Multi-crop/ensemble one-pass 추론 간단한 맛 테스트 메모리, 정확성이 속도보다 중요 라이브러리 테스트 불가 Do it Care 라이브러리의 크기가 중요합니다.

  24. 24 일반 딥러닝(CNN) 모바일 딥러닝(CNN) 테스트 GPU(엔비디아) 주로 CPU 테스트 Multi-Crop/Ensemble One-Pass Inference Training 메모리가 꽉 차서 메모리가 남음 단순 맛 테스트 메모리, 속도보다 정확성이 중요하다면 메모리와 속도가 일치하지 않으면 배포가 전혀 불가능합니다.

    나는 테스트 라이브러리에 대해 별로 신경쓰지 않는다.

    도서관의 규모가 중요하다
  25. 25 일반 딥 러닝(CNN) 모바일 딥 러닝(CNN) 테스트 GPU(Nvidia) 주로 CPU 테스트 Multi-Crop/Ensemble One-Pass Inference Training 메모리가 가득 차서 메모리가 더 많습니다.

    가능한 간단한 티저 테스트 생성 속도보다 저장, 정확성이 더 중요 저장, 속도를 못따라가면 배포가 전혀 안됨 테스트 라이브러리 전혀 신경쓰지 않음 라이브러리 크기가 중요
  26. 26 모바일 세상의 분열
  27. 27 모바일 세계의 단편화 15+ GPU 아키텍처(PowerVR, Adreno, Mali, …)
  28. 28 모바일 세계의 단편화 15+ GPU 아키텍처(PowerVR, Adreno, Mali, …) 2 주요 OS(iOS/Android)
  29. 29 모바일 세계의 단편화 15개 이상의 GPU 아키텍처(PowerVR, Adreno, Mali, …) 2개의 주요 운영 체제(iOS/Android) 2개의 주요 계산 API(OpenCL/RenderScript)
  30. 30 모바일 세계의 단편화 15개 이상의 GPU 아키텍처(PowerVR, Adreno, Mali, …) 2개의 주요 운영 체제(iOS/Android) 2개의 주요 계산 API(OpenCL/RenderScript) 3개의 주요 그래픽 API(OpenGL/Vulkan/Metal)
  31. 31 시도하면… 잘 작동한다고 주장하는 네트워크를 시도하면 원하는 성능을 얻지 못할 것입니다.

    NasNet-A 및 MobileNet과 같은 방법을 배우십시오.
  32. 32 결국… 사용자는 우리의 상상을 초월합니다.

    이상한 휴대폰(vivo), 다른 장치, 같은 장치에서도 다른 사용자.
  33. 33 결국… 완벽한 데이터 세트를 갖는 것은 항상 어렵습니다.

    클래스 불균형 문제, 좋은 평가 지표, 엔드 투 엔드 테스트 환경
  34. 34 막상 해보면… 용량은 작고 속도는 빠르고 정확도는 높다.

    그리고 배터리를 적게 사용하는 것이 좋습니다.

    iOS Cellular 다운로드 제한 150MB(2017.09.17)
  35. 35 해결해야 할 두 가지 주요 문제가 있습니다.

  36. 36 빠르고 소량의 높은 예측 모델을 구축합니다1. 딥러닝 모델을 효율적으로 구현하고 안정적으로 운영2.
  37. 37 빠르고 소량의 높은 예측 모델을 구축합니다1. 딥러닝 모델을 효율적으로 구현하고 안정적으로 운영2.
  38. 38 몇 가지 인기 있는 모바일 딥 러닝 아키텍처를 살펴보겠습니다.

  39. 39 SqueezeNet (2016. 02.) 이미지 오프 https://stanford.edu/~songhan/ 커널 감소 채널 감소 1. 3×3 필터를 1×1 필터로 교체합니다.

    2. 1×1 필터로 채널 수 줄이기
  40. 40 SqueezeNet(2016.02.) •첫 번째 레이어에서 7×7 대신 3×3 사용 •1,4,8에서 {1,3,5}로 풀링하는 초기 + 짝수 다운샘플링 SqueezeNet v1.1 사용 ResNet도 v2가 더 좋습니다.

    항상 v1.X, V2를 확인하십시오. ~ 사진 https://github.com/DeepScale/SqueezeNet/tree/master/SqueezeNet_v1.1
  41. 41 알아내다 https://arxiv.org/pdf/1704.04861.pdf, https://github.com/Zehaos/MobileNet Google에서 발표한 CNN 모바일 아키텍처 그러나 ImageNet에서 측정한 성능은 MobileNet(2017. 04.) Compact Layer를 따르지 않음
  42. 42 알아내다 https://arxiv.org/pdf/1704.04861.pdf, https://github.com/Zehaos/MobileNet ShuffleNet (2017. 07.) Group Convolution + Channel Shuffle TensorFlow에는 그룹 컨벌루션이 없습니다.

  43. 43 알아내다 https://arxiv.org/abs/1707.07012 Google은 아키텍처 검색을 통해 찾은 CNN 아키텍처 “ImageNet” 데이터에 대해 최상의 결과를 반환했지만 NasNet-A(2017.07.) 데이터에 대해서는 최악의 결과를 반환했습니다.

  44. 44 https://arxiv.org/abs/1707.01083 클래스 수가 적은 데이터에 대한 교육에 유용함 SquiishedNets(2017. 11.) Conv10에는 ~40% 매개변수(NumOfClasses) * 1×1 필터 포함
  45. 45 테이블 오프 https://arxiv.org/pdf/1606.02147.pdf PRelu, Dilated Convolution, Upsampling 및 Convolution Transpose ENet(2017. 11.)과 같은 다양한 구조 사용 모바일 프레임워크가 위 작업을 지원하는지 확인하십시오.
  46. 46 효율적인 CNN 구조를 구축하는 데 도움이 되는 6가지 지혜
  47. 47 1. Fully Connected Layer를 Network in Network 이후 Inception 이후 VGG 이후 주로 사용되는 Global Average Pooling 방식으로 교체한다.

    모바일 딥 러닝에 국한되지 않습니다.

    완전 컨벌루션 그림 http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture9.pdf
  48. 48 2. 모든 블록에서 유사한 계산 노력 및 동질적 구조 유지 정방향 전파(forward propagation) 시 정보 손실 방지 MobileNet의 Depth_Multiplier와 같은 파라미터는 상황에 따라 구조 변환을 용이하게 하기 위해 필요 이미지가 2배가 되면 채널이 2배가 됨 MobileNet SqueezeNet Depth Multiplier Image from http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture9.pdf 압착 비율 3×3 비율 ResNeXt 카디널리티
  49. 49 3. 잔여 학습이 중요 BN-CONV-RELU 구조는 일반적으로 좋은 성능을 보장합니다.

    Skip 연결은 일반적으로 좋은 성능을 보장합니다.

    1×1 병목 구조는 일반적으로 좋은 성능을 보장합니다.

    http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture9.pdf
  50. 50 4. 채널 축소 및 커널 축소 • 레이어의 3×3 필터 중 절반을 1×1로 교체해도 성능이 저하되지 않을 수 있습니다.

    • 입력 채널의 이미지를 줄이기 위해 1×1을 사용하여 매개 변수의 수를 줄일 수 있습니다.

    https://www.slideshare.net/ForrestIandola/small-deepneuralnetworks-their-advantages-and-theirdesign
  51. 51. 5. 신중한 다운샘플링 •컨볼루션 전치가 사용되는 ENet의 경우 초기 다운샘플링이 권장됩니다.

    https://www.slideshare.net/ForrestIandola/small-deepneuralnetworks-their-advantages-and-theirdesign
  52. 52 6. 콤팩트한 구조 사용 •팩터링된 필터를 사용하여 공간 절약: (1×3 + 3×1) / (3×3) = 66%: •ResNext 및 MobileNet 모두 콤팩트한 구조 사용: Dw = GConv Image from https://arxiv.org/pdf/1512.00567.pdf
  53. 53 이제 좋은 구조를 갖추었으니
  54. 54 “잘” 공부해야 합니다.

  55. 55 1. Transfer Learning & Knowledge Distillation •데이터가 많지 않으면 확실히 된다.

    https://www.slideshare.net/insideHPC/a-vision-for-exascale-simulation-and-deep-learning
  56. 56 2. 적절한 손실 함수 선택 •이미지 분할에 교차 엔트로피가 최선의 선택입니까? 알아내다 https://lmb.informatik.uni-freiburg.de/people/ronneber/u-net/, http://xiaoyongshen.me/webpage_portrait/index.html 소프트맥스(픽셀)
  57. 57 3. 적절한 입력 이미지 크기를 설정합니다.

    CNN은 예상만큼 입력 크기에 민감하지 않습니다.

    작은 이미지를 사용하면 훈련 시간이 오래 걸릴 수 있지만 최종 성능에는 큰 차이가 없을 수 있습니다.

    https://arxiv.org/pdf/1512.00567.pdf 26%↑ 1.5%↓ 49%↑ 3.4%↓ 67%↑ 5.8%↓ → 초기 컴퓨터 비전 아키텍처 재고 어떤 것을 선택하시겠습니까?
  58. 58 4. 다른 일반적인 문제 해결: LR 계획/클래스 불균형 • 좋은 학습률 계획은 성능을 2-3% 쉽게 향상시킬 수 있습니다.

    • 현실에서 흔히 발생하는 문제인 계급 불균형을 해소하는 것도 중요하다.

    https://lmb.informatik.uni-freiburg.de/people/ronneber/u-net/ 이게 학습률 하락인거 다들 아시죠?
  59. 59 3가지 교훈 용량을 적게 사용하고 빠르며 예측 정확도가 높은 모델 구축
  60. 60 Imagenet 벤치마크의 성능은 일반화하기 쉽지 않습니다1. – 실제 테스트 결과, SqueezeNet > MobileNet > NasNet – 망설이지 않고 선택한 MobileNet은 모바일 CNN 논문뿐만 아니라 모든 CNN 논문 중에서 최고가 아닐 수도 있습니다2. – MobileNet 및 SqueezeNet보다 ResNet 구조가 더 도움이 될 수 있습니다.

    – Inception, ResNet 및 DenseNet과 같은 유명한 네트워크의 경험과 관찰에서 배우십시오. 기본에 충실하면 아주 작은 모델3에서 놀라운 성능을 얻을 수 있습니다.

    – 데이터의 양과 질에 결함이 있는가(증류, 계급 불평등)? – 문제에 맞는 손실함수를 사용하는가? – 현재 최적화 방법이 최선인가? – 이미 여러 교사-학생 작품에서 놀라운 결과가 발표되었습니다.

  61. 61 빠르고 소량의 높은 예측 모델을 구축합니다1. 딥러닝 모델을 효율적으로 구현하고 안정적으로 운영2.
  62. 62 딥 러닝 프레임워크를 선택할 수 있습니다.

  63. 63 대규모 딥러닝 프레임워크 타임라인 하이퍼커넥트 모바일 프로젝트 시작 1st CNKT 2017, Torch 생략
  64. 64 대규모 딥러닝 프레임워크 타임라인 하이퍼커넥트 모바일 프로젝트 시작 2017.01 2017.04 CNKT, Torch 생략
  65. 65 Big Deep Learning Framework 타임라인 하이퍼커넥트 모바일 프로젝트 시작 2017.01 2017.04 2017.06 CNKT, Torch 생략
  66. 66 Big Deep Learning Framework 타임라인 하이퍼커넥트 모바일 프로젝트 시작 2017.01 2017.04 2017.06 2017.11 CNKT, Torch 생략
  67. 67 대기 시간 계산 기술이 빠르게 발전하고 있어서 N년 후에 로켓을 만들기 시작하면 지금 시작하는 것보다 더 빨리 안드로메다에 도달할 수 있습니다.

  68. 68 특징 •과거에는 거의 유일하고 간단한 옵션이었음 •양자화의 경우 별도의 최적화가 없어서 2~3배 정도 상당히 느림 •모델의 성능은 애플에 맡겨야 함(GPU는 강제 선택되지 않음) •Quantization은 빠르지만 아직 그렇지 않은 경우 느림 모든 작업을 지원하지 않음(예: conv_transpose) NN-API를 노출하는 하드웨어에 대한 GPU 지원 Mobile First NNPack과 같은 모바일 구현 라이브러리의 적절한 사용 사실상 없음 문서화하는 것이 더 빠릅니까? 올바르게 컴파일(NNPack, OpenBlas) 문서 없음
  69. 69 딥 러닝 프레임워크 모바일 속도 벤치마크 https://www.linkedin.com/pulse/how-run-deep-neural-networks-weak-hardware-dmytro-prylipko/ caffe-openblas : 백엔드로 OpenBLAS 마스터 분기가 있는 Caffe caffe-openblas-dl: OpenBLAS_optimized_for_deeplearning 분기가 있는 Caffe tf-vanilla: OPTFLAGS=”-Os”로 컴파일된 TensorFlow tf-neon-vfpv4: OPTFLAGS =”-Os – mfpu로 컴파일된 TensorFlow =neon-vfpv4 -funsafe-math-optimizations – ftree-vectorize” mxnet-openblas: 선형 대수학을 위한 OpenBLAS가 있는 Vanilla MXNet mxnet-openblas-dl: OpenBLAS의 optimize_for_deeplearning 분기가 있는 MXNet
  70. 70 그렇다면 프레임은 어떻게 선택해야 할까요? 3가지 기준
  71. 71 교육에 사용되는 프레임워크에서 얻은 매개변수는 모바일 사용을 위해 쉽게 변환할 수 있어야 합니다.

    배치 정규화에서 분모에 엡실론을 더하는 것과 같은 차이 1. 모바일 환경에 최적화된 구현이 있어야 합니다(Arm NEON) 양자화를 위해서는 SIMD 명령어를 사용하는 것이 합리적입니다.

    2. 빠르게 함께 반응할 수 있는 커뮤니티가 있어야 합니다.

    변화하는 딥러닝 세상 •배치 정규화, 배치 재정규화 , (…) •새로운 네트워크 구조를 만든 후 모바일로 옮겨 빠르게 실험(end-to-end) 3.
  72. 72 프레임을 정했다면
  73. 73 모바일 환경에 적용할 수 있는 유용한 압축/구현 방법 3가지 소개
  74. 74 1. Parameter Pruning & Sharing 요약 1. 수렴 학습 2. 노드 삭제 및 미세 조정 후 정확도를 관찰하여 손상이 심한지 확인 3. 목표 속도/정확도 “압축 매개변수”의 크기는 작을 수 있습니다.

    이는 네트워크를 통해 매개변수를 다운로드하는 데 유용할 수 있습니다.

    단점 1. 학습 파이프라인이 너무 깁니다.

    2. 추가 하드웨어/구현을 사용하지 않으면 가속이 되지 않습니다.

    3. 이 방법을 사용하는 사람이 많지 않습니다.

  75. 75 알아내다 https://arxiv.org/pdf/1711.02638.pdf • 터커 분해, CP 분해 • 학습 파이프라인이 프루닝에 비해 너무 길다 • 적용 범위가 제한적이다(특히 컨볼루션 연산) • 최근 압축 인식 학습 방법이 제안됨 2. 딥의 저위 근사/분해 인식 훈련 네트워크(NIPS2017) 매개변수의 순위를 낮추는 조정기
  76. 76 3. 양자화(8비트) 정수 산술(Arm NEON 최적화)만으로 연산을 빠르게 구현해야 가중치 및 활성화가 양자화되어야 함 별도의 학습 없이 네트워크가 작을수록 예측 정확도가 낮아짐 8비트 및 역전파 32비트 부동 숫자를 가정합니다.

    https://arxiv.org/abs/1712.05877
  77. 77 알아내다 https://arxiv.org/abs/1712.05877 양자화 관련 도우미 노드(Fake Quant)로 인해 GPU에서 3배에서 4배 느려짐 Tensorflow Mobile은 같은 이유로 2배 느려집니다.

    그러나 TensorFlowLite 3를 사용하면 2배 이상 빨라집니다.

    양자화(8비트)
  78. 78 알아내다 https://papers.nips.cc/paper/6638-towards-accurate-binary-convolutional-neural-network.pdf Ternary Weight Matrix, Binary Neural Networks, XNOR-net Towards Accurate Binary Convolutional Neural Network (ABCnet; NIPS 2017) 대용량 데이터셋(ImageNet) 적용 시 예측 정확도의 심각한 저하(ImageNet) 3차 양자화(1비트)
  79. 79 그렇다면 어떤 기술을 사용해야 할까요?
  80. 80 AlexNet 및 VGG와 같이 매개변수가 과도하게 지정된 모델만 사용하는 실험은 신뢰할 수 없습니다1. – 실제 모바일 기기에서 요구되는 속도 벤치마킹 모델과 구현은 최대한 독립적이어야 함2. – 네트워크 구조를 변경하는 것보다 8비트를 사용하는 것이 훨씬 더 독립적입니다.

    – 학습 파이프라인을 3단계 이상 늘리는 것은 현실적으로 어렵습니다.

    특별한 하드웨어를 요구하는 구현은 무의미합니다3. – 깊은 압축은 EIE(Efficient Inference Engine)라는 하드웨어에서만 빠릅니다.

  81. 81 딥 러닝을 모바일에 게시하는 것은 정말 쉽습니다.

  82. 82 구현 세부 정보
  83. 83 암호화 압축률 VS
  84. 84 암호화 압축률 VS 동적 주파수 스케일링
  85. 85 암호화 압축률 VS 동적 주파수 스케일링 빅-리틀
  86. 86 암호화 압축률 VS 동적 주파수 스케일링 빠른 I/O 문제(OpenGL) 빅-리틀
  87. 87 암호화 압축 비율 VS 동적 주파수 스케일링 빠른 I/O 문제(OpenGL) 적절한 후처리 빅-리틀
  88. 88 암호화 압축률 VS 동적 주파수 스케일링 Fast I/O Matters(OpenGL) ABGR, Big-Little 방향에 적합한 후처리
  89. 89 다가오는 미래
  90. 90 5G 세계
  91. 91 5G 월드 하드웨어 지원
  92. 92 5G World 하드웨어 지원 XLA
  93. 93 감사해요