스마트폰의 딥 러닝
- 1. 스마트폰에서 딥러닝 신범준 HYPERCONNECT 이 슬라이드는 네이버에서 제공하는 나눔글꼴을 사용합니다.
- 2. 하이퍼커넥트 머신러닝 성과
- 삼. 머신러닝 PaaS 보고서 이미지 검사를 위한 하이퍼커넥트 성능(클라우드)
- 4. 하이퍼커넥트 PaaS 머신러닝 성능 보고서 이미지 검사(클라우드) 이미지 분류기(모바일)
- 5. 하이퍼커넥트 머신러닝 성능 실시간 백그라운드 선택(모바일) PaaS 리포트 이미지 검증(클라우드) 이미지 분류기(모바일)
- 6. 작은 딥러닝 모델을 잘 만들어서 모바일에 배포하는 이야기. 오늘의 주제
- 7. 왜 모바일 딥러닝인가?
- 8일. 왜 모바일 딥러닝인가? 긴 대기 시간
- 9. 왜 모바일 딥러닝인가? 높은 대기 시간, 낮은 대역폭
- 10 왜 모바일 딥러닝인가? 대기 시간이 긴 오프라인 낮은 대역폭
- 11. 왜 모바일 딥러닝인가? 높은 대기 시간 많은 장치가 오프라인 상태임 낮은 대역폭
- 12. 왜 모바일 딥러닝인가? 프라이버시 긴 대기 시간 많은 장치 오프라인 낮은 대역폭
- 13. 가능한 응용 프로그램
- 14 스마트폰 애플리케이션 사용 가능
- 15 가능한 애플리케이션 무인 차량 스마트폰
- 16 가능한 애플리케이션 무인 자동차 스마트폰 드론
- 17 가능한 애플리케이션 무인 자동차 스마트폰 드론 VR/AR
- 18 가능한 애플리케이션 무인 자동차 스마트폰 드론 VR/AR IOT
- 19 일반 딥 러닝(CNN) 모바일 딥 러닝(CNN) 퀵 투어
- 20 보통 딥 러닝(CNN) 모바일 딥 러닝(CNN) 테스트 GPU(Nvidia) 주로 CPU 짧은 티저
- 21 보통 딥 러닝(CNN) 모바일 딥 러닝(CNN) 테스트 GPU(Nvidia) 주로 CPU 테스트 다중 자르기/앙상블 원패스 추론 빠른 미리보기
- 22 일반 딥러닝(CNN) 모바일 딥러닝(CNN) 테스트 GPU(엔비디아) 주로 CPU 테스트 멀티 크롭/앙상블 원패스 추론 간단한 맛 테스트 속도보다 메모리, 정확성이 중요
- 23 일반 딥러닝(CNN) 모바일 딥러닝(CNN) 테스트 GPU(Nvidia) 주로 CPU 테스트 Multi-crop/ensemble one-pass 추론 간단한 맛 테스트 메모리, 정확성이 속도보다 중요 라이브러리 테스트 불가 Do it Care 라이브러리의 크기가 중요합니다.
- 24 일반 딥러닝(CNN) 모바일 딥러닝(CNN) 테스트 GPU(엔비디아) 주로 CPU 테스트 Multi-Crop/Ensemble One-Pass Inference Training 메모리가 꽉 차서 메모리가 남음 단순 맛 테스트 메모리, 속도보다 정확성이 중요하다면 메모리와 속도가 일치하지 않으면 배포가 전혀 불가능합니다.
나는 테스트 라이브러리에 대해 별로 신경쓰지 않는다.
도서관의 규모가 중요하다 - 25 일반 딥 러닝(CNN) 모바일 딥 러닝(CNN) 테스트 GPU(Nvidia) 주로 CPU 테스트 Multi-Crop/Ensemble One-Pass Inference Training 메모리가 가득 차서 메모리가 더 많습니다.
가능한 간단한 티저 테스트 생성 속도보다 저장, 정확성이 더 중요 저장, 속도를 못따라가면 배포가 전혀 안됨 테스트 라이브러리 전혀 신경쓰지 않음 라이브러리 크기가 중요 - 26 모바일 세상의 분열
- 27 모바일 세계의 단편화 15+ GPU 아키텍처(PowerVR, Adreno, Mali, …)
- 28 모바일 세계의 단편화 15+ GPU 아키텍처(PowerVR, Adreno, Mali, …) 2 주요 OS(iOS/Android)
- 29 모바일 세계의 단편화 15개 이상의 GPU 아키텍처(PowerVR, Adreno, Mali, …) 2개의 주요 운영 체제(iOS/Android) 2개의 주요 계산 API(OpenCL/RenderScript)
- 30 모바일 세계의 단편화 15개 이상의 GPU 아키텍처(PowerVR, Adreno, Mali, …) 2개의 주요 운영 체제(iOS/Android) 2개의 주요 계산 API(OpenCL/RenderScript) 3개의 주요 그래픽 API(OpenGL/Vulkan/Metal)
- 31 시도하면… 잘 작동한다고 주장하는 네트워크를 시도하면 원하는 성능을 얻지 못할 것입니다.
NasNet-A 및 MobileNet과 같은 방법을 배우십시오. - 32 결국… 사용자는 우리의 상상을 초월합니다.
이상한 휴대폰(vivo), 다른 장치, 같은 장치에서도 다른 사용자. - 33 결국… 완벽한 데이터 세트를 갖는 것은 항상 어렵습니다.
클래스 불균형 문제, 좋은 평가 지표, 엔드 투 엔드 테스트 환경 - 34 막상 해보면… 용량은 작고 속도는 빠르고 정확도는 높다.
그리고 배터리를 적게 사용하는 것이 좋습니다.
iOS Cellular 다운로드 제한 150MB(2017.09.17) - 35 해결해야 할 두 가지 주요 문제가 있습니다.
- 36 빠르고 소량의 높은 예측 모델을 구축합니다1. 딥러닝 모델을 효율적으로 구현하고 안정적으로 운영2.
- 37 빠르고 소량의 높은 예측 모델을 구축합니다1. 딥러닝 모델을 효율적으로 구현하고 안정적으로 운영2.
- 38 몇 가지 인기 있는 모바일 딥 러닝 아키텍처를 살펴보겠습니다.
- 39 SqueezeNet (2016. 02.) 이미지 오프 https://stanford.edu/~songhan/ 커널 감소 채널 감소 1. 3×3 필터를 1×1 필터로 교체합니다.
2. 1×1 필터로 채널 수 줄이기 - 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 알아내다 https://arxiv.org/pdf/1704.04861.pdf, https://github.com/Zehaos/MobileNet Google에서 발표한 CNN 모바일 아키텍처 그러나 ImageNet에서 측정한 성능은 MobileNet(2017. 04.) Compact Layer를 따르지 않음
- 42 알아내다 https://arxiv.org/pdf/1704.04861.pdf, https://github.com/Zehaos/MobileNet ShuffleNet (2017. 07.) Group Convolution + Channel Shuffle TensorFlow에는 그룹 컨벌루션이 없습니다.
- 43 알아내다 https://arxiv.org/abs/1707.07012 Google은 아키텍처 검색을 통해 찾은 CNN 아키텍처 “ImageNet” 데이터에 대해 최상의 결과를 반환했지만 NasNet-A(2017.07.) 데이터에 대해서는 최악의 결과를 반환했습니다.
- 44 https://arxiv.org/abs/1707.01083 클래스 수가 적은 데이터에 대한 교육에 유용함 SquiishedNets(2017. 11.) Conv10에는 ~40% 매개변수(NumOfClasses) * 1×1 필터 포함
- 45 테이블 오프 https://arxiv.org/pdf/1606.02147.pdf PRelu, Dilated Convolution, Upsampling 및 Convolution Transpose ENet(2017. 11.)과 같은 다양한 구조 사용 모바일 프레임워크가 위 작업을 지원하는지 확인하십시오.
- 46 효율적인 CNN 구조를 구축하는 데 도움이 되는 6가지 지혜
- 47 1. Fully Connected Layer를 Network in Network 이후 Inception 이후 VGG 이후 주로 사용되는 Global Average Pooling 방식으로 교체한다.
모바일 딥 러닝에 국한되지 않습니다.
완전 컨벌루션 그림 http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture9.pdf - 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 3. 잔여 학습이 중요 BN-CONV-RELU 구조는 일반적으로 좋은 성능을 보장합니다.
Skip 연결은 일반적으로 좋은 성능을 보장합니다.
1×1 병목 구조는 일반적으로 좋은 성능을 보장합니다.
http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture9.pdf - 50 4. 채널 축소 및 커널 축소 • 레이어의 3×3 필터 중 절반을 1×1로 교체해도 성능이 저하되지 않을 수 있습니다.
• 입력 채널의 이미지를 줄이기 위해 1×1을 사용하여 매개 변수의 수를 줄일 수 있습니다.
https://www.slideshare.net/ForrestIandola/small-deepneuralnetworks-their-advantages-and-theirdesign - 51. 5. 신중한 다운샘플링 •컨볼루션 전치가 사용되는 ENet의 경우 초기 다운샘플링이 권장됩니다.
https://www.slideshare.net/ForrestIandola/small-deepneuralnetworks-their-advantages-and-theirdesign - 52 6. 콤팩트한 구조 사용 •팩터링된 필터를 사용하여 공간 절약: (1×3 + 3×1) / (3×3) = 66%: •ResNext 및 MobileNet 모두 콤팩트한 구조 사용: Dw = GConv Image from https://arxiv.org/pdf/1512.00567.pdf
- 53 이제 좋은 구조를 갖추었으니
- 54 “잘” 공부해야 합니다.
- 55 1. Transfer Learning & Knowledge Distillation •데이터가 많지 않으면 확실히 된다.
https://www.slideshare.net/insideHPC/a-vision-for-exascale-simulation-and-deep-learning - 56 2. 적절한 손실 함수 선택 •이미지 분할에 교차 엔트로피가 최선의 선택입니까? 알아내다 https://lmb.informatik.uni-freiburg.de/people/ronneber/u-net/, http://xiaoyongshen.me/webpage_portrait/index.html 소프트맥스(픽셀)
- 57 3. 적절한 입력 이미지 크기를 설정합니다.
CNN은 예상만큼 입력 크기에 민감하지 않습니다.
작은 이미지를 사용하면 훈련 시간이 오래 걸릴 수 있지만 최종 성능에는 큰 차이가 없을 수 있습니다.
https://arxiv.org/pdf/1512.00567.pdf 26%↑ 1.5%↓ 49%↑ 3.4%↓ 67%↑ 5.8%↓ → 초기 컴퓨터 비전 아키텍처 재고 어떤 것을 선택하시겠습니까? - 58 4. 다른 일반적인 문제 해결: LR 계획/클래스 불균형 • 좋은 학습률 계획은 성능을 2-3% 쉽게 향상시킬 수 있습니다.
• 현실에서 흔히 발생하는 문제인 계급 불균형을 해소하는 것도 중요하다.
https://lmb.informatik.uni-freiburg.de/people/ronneber/u-net/ 이게 학습률 하락인거 다들 아시죠? - 59 3가지 교훈 용량을 적게 사용하고 빠르며 예측 정확도가 높은 모델 구축
- 60 Imagenet 벤치마크의 성능은 일반화하기 쉽지 않습니다1. – 실제 테스트 결과, SqueezeNet > MobileNet > NasNet – 망설이지 않고 선택한 MobileNet은 모바일 CNN 논문뿐만 아니라 모든 CNN 논문 중에서 최고가 아닐 수도 있습니다2. – MobileNet 및 SqueezeNet보다 ResNet 구조가 더 도움이 될 수 있습니다.
– Inception, ResNet 및 DenseNet과 같은 유명한 네트워크의 경험과 관찰에서 배우십시오. 기본에 충실하면 아주 작은 모델3에서 놀라운 성능을 얻을 수 있습니다.
– 데이터의 양과 질에 결함이 있는가(증류, 계급 불평등)? – 문제에 맞는 손실함수를 사용하는가? – 현재 최적화 방법이 최선인가? – 이미 여러 교사-학생 작품에서 놀라운 결과가 발표되었습니다. - 61 빠르고 소량의 높은 예측 모델을 구축합니다1. 딥러닝 모델을 효율적으로 구현하고 안정적으로 운영2.
- 62 딥 러닝 프레임워크를 선택할 수 있습니다.
- 63 대규모 딥러닝 프레임워크 타임라인 하이퍼커넥트 모바일 프로젝트 시작 1st CNKT 2017, Torch 생략
- 64 대규모 딥러닝 프레임워크 타임라인 하이퍼커넥트 모바일 프로젝트 시작 2017.01 2017.04 CNKT, Torch 생략
- 65 Big Deep Learning Framework 타임라인 하이퍼커넥트 모바일 프로젝트 시작 2017.01 2017.04 2017.06 CNKT, Torch 생략
- 66 Big Deep Learning Framework 타임라인 하이퍼커넥트 모바일 프로젝트 시작 2017.01 2017.04 2017.06 2017.11 CNKT, Torch 생략
- 67 대기 시간 계산 기술이 빠르게 발전하고 있어서 N년 후에 로켓을 만들기 시작하면 지금 시작하는 것보다 더 빨리 안드로메다에 도달할 수 있습니다.
- 68 특징 •과거에는 거의 유일하고 간단한 옵션이었음 •양자화의 경우 별도의 최적화가 없어서 2~3배 정도 상당히 느림 •모델의 성능은 애플에 맡겨야 함(GPU는 강제 선택되지 않음) •Quantization은 빠르지만 아직 그렇지 않은 경우 느림 모든 작업을 지원하지 않음(예: conv_transpose) NN-API를 노출하는 하드웨어에 대한 GPU 지원 Mobile First NNPack과 같은 모바일 구현 라이브러리의 적절한 사용 사실상 없음 문서화하는 것이 더 빠릅니까? 올바르게 컴파일(NNPack, OpenBlas) 문서 없음
- 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 그렇다면 프레임은 어떻게 선택해야 할까요? 3가지 기준
- 71 교육에 사용되는 프레임워크에서 얻은 매개변수는 모바일 사용을 위해 쉽게 변환할 수 있어야 합니다.
배치 정규화에서 분모에 엡실론을 더하는 것과 같은 차이 1. 모바일 환경에 최적화된 구현이 있어야 합니다(Arm NEON) 양자화를 위해서는 SIMD 명령어를 사용하는 것이 합리적입니다.
2. 빠르게 함께 반응할 수 있는 커뮤니티가 있어야 합니다.
변화하는 딥러닝 세상 •배치 정규화, 배치 재정규화 , (…) •새로운 네트워크 구조를 만든 후 모바일로 옮겨 빠르게 실험(end-to-end) 3. - 72 프레임을 정했다면
- 73 모바일 환경에 적용할 수 있는 유용한 압축/구현 방법 3가지 소개
- 74 1. Parameter Pruning & Sharing 요약 1. 수렴 학습 2. 노드 삭제 및 미세 조정 후 정확도를 관찰하여 손상이 심한지 확인 3. 목표 속도/정확도 “압축 매개변수”의 크기는 작을 수 있습니다.
이는 네트워크를 통해 매개변수를 다운로드하는 데 유용할 수 있습니다.
단점 1. 학습 파이프라인이 너무 깁니다.
2. 추가 하드웨어/구현을 사용하지 않으면 가속이 되지 않습니다.
3. 이 방법을 사용하는 사람이 많지 않습니다. - 75 알아내다 https://arxiv.org/pdf/1711.02638.pdf • 터커 분해, CP 분해 • 학습 파이프라인이 프루닝에 비해 너무 길다 • 적용 범위가 제한적이다(특히 컨볼루션 연산) • 최근 압축 인식 학습 방법이 제안됨 2. 딥의 저위 근사/분해 인식 훈련 네트워크(NIPS2017) 매개변수의 순위를 낮추는 조정기
- 76 3. 양자화(8비트) 정수 산술(Arm NEON 최적화)만으로 연산을 빠르게 구현해야 가중치 및 활성화가 양자화되어야 함 별도의 학습 없이 네트워크가 작을수록 예측 정확도가 낮아짐 8비트 및 역전파 32비트 부동 숫자를 가정합니다.
https://arxiv.org/abs/1712.05877 - 77 알아내다 https://arxiv.org/abs/1712.05877 양자화 관련 도우미 노드(Fake Quant)로 인해 GPU에서 3배에서 4배 느려짐 Tensorflow Mobile은 같은 이유로 2배 느려집니다.
그러나 TensorFlowLite 3를 사용하면 2배 이상 빨라집니다.
양자화(8비트) - 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 그렇다면 어떤 기술을 사용해야 할까요?
- 80 AlexNet 및 VGG와 같이 매개변수가 과도하게 지정된 모델만 사용하는 실험은 신뢰할 수 없습니다1. – 실제 모바일 기기에서 요구되는 속도 벤치마킹 모델과 구현은 최대한 독립적이어야 함2. – 네트워크 구조를 변경하는 것보다 8비트를 사용하는 것이 훨씬 더 독립적입니다.
– 학습 파이프라인을 3단계 이상 늘리는 것은 현실적으로 어렵습니다.
특별한 하드웨어를 요구하는 구현은 무의미합니다3. – 깊은 압축은 EIE(Efficient Inference Engine)라는 하드웨어에서만 빠릅니다. - 81 딥 러닝을 모바일에 게시하는 것은 정말 쉽습니다.
- 82 구현 세부 정보
- 83 암호화 압축률 VS
- 84 암호화 압축률 VS 동적 주파수 스케일링
- 85 암호화 압축률 VS 동적 주파수 스케일링 빅-리틀
- 86 암호화 압축률 VS 동적 주파수 스케일링 빠른 I/O 문제(OpenGL) 빅-리틀
- 87 암호화 압축 비율 VS 동적 주파수 스케일링 빠른 I/O 문제(OpenGL) 적절한 후처리 빅-리틀
- 88 암호화 압축률 VS 동적 주파수 스케일링 Fast I/O Matters(OpenGL) ABGR, Big-Little 방향에 적합한 후처리
- 89 다가오는 미래
- 90 5G 세계
- 91 5G 월드 하드웨어 지원
- 92 5G World 하드웨어 지원 XLA
- 93 감사해요