Arm ML 도구에서 유지 관리
이 문서는 가중치 클러스터링에 관해 간략히 설명하여 사용 사례와의 적합성을 판단하는 데 도움을 줍니다.
- 엔드 투 엔드 예를 바로 확인하려면 가중치 클러스터링 예를 참고하세요.
- 사용 사례에 필요한 API를 빠르게 찾으려면 가중치 클러스터링 종합 가이드를 참고하세요.
개요
클러스터링 또는 가중치 공유로 모델에서 고유한 가중치 값 수를 줄여 배포 이점으로 이어집니다. 먼저 각 레이어의 가중치를 N개의 클러스터로 그룹화한 다음 클러스터에 속하는 모든 가중치에 클러스터 중심 값을 공유합니다.
이 기법은 모델 압축을 통해 향상을 제공합니다. 향후 프레임워크 지원으로 메모리 공간을 개선하면 리소스가 제한된 삽입된 시스템에 딥 러닝 모델을 배포하는 데 상당한 차이를 만들 수 있습니다.
우리는 비전과 음성 작업에서 클러스터링을 실험했습니다. 아래 결과와 같이 정확성 손실은 최소화하면서 모델 압축이 최대 5배까지 향상되었습니다.
클러스터링은 배치 정규화 레이어 앞에 올 뿐만 아니라 축당 학습 후 양자화와 결합하는 컨볼루션 및 밀집 레이어의 이점은 줄입니다.
API 호환성 매트릭스
사용자는 다음 API를 사용하여 클러스터링을 적용할 수 있습니다.
- 모델 빌드: 순차 및 함수 모델만 있는
tf.keras
- TensorFlow 버전: 버전 1.14+ 및 2.x의 경우 TF 1.x
- TF 2.X 패키지가 있는
tf.compat.v1
및 TF 1.X 패키지가 있는tf.compat.v2
는 지원되지 않습니다.
- TF 2.X 패키지가 있는
- TensorFlow 실행 모드: 지연 실행과 즉시 실행 모두
결과
이미지 분류
모델 | 원본 | 클러스터링됨 | ||||
---|---|---|---|---|---|---|
최상위 정확성(%) | 압축된 .tflite 크기(MB) | 구성 | 클러스터 수 | 최상위 정확성(%) | 압축된 .tflite 크기(MB) | |
MobileNetV1 | 70.976 | 14.97 | ||||
선택적(마지막 Conv2D 레이어 3개) | 16, 16, 16 | 70.294 | 7.69 | |||
선택적(마지막 Conv2D 레이어 3개) | 32, 32, 32 | 70.69 | 8.22 | |||
전체(모든 Conv2D 레이어) | 32 | 69.4 | 4.43 | |||
MobileNetV2 | 71.778 | 12.38 | ||||
선택적(마지막 Conv2D 레이어 3개) | 16, 16, 16 | 70.742 | 6.68 | |||
선택적(마지막 Conv2D 레이어 3개) | 32, 32, 32 | 70.926 | 7.03 | |||
전체(모든 Conv2D 레이어) | 32 | 69.744 | 4.05 |
이 모델은 ImageNet에서 학습되고 테스트되었습니다.
키워드 찾기
모델 | 원본 | 클러스터링됨 | ||||
---|---|---|---|---|---|---|
최상위 정확성(%) | 압축된 .tflite 크기(MB) | 구성 | 클러스터 수 | 최상위 정확성(%) | 압축된 .tflite 크기(MB) | |
DS-CNN-L | 95.233 | 1.46 | ||||
전체(모든 Conv2D 레이어) | 32 | 95.09 | 0.39 | |||
전체(모든 Conv2D 레이어) | 8 | 94.272 | 0.27 |
이 모델은 SpeechCommands v0.02에서 학습되고 테스트되었습니다.
- Keras 모델을 .h5 파일로 직렬화합니다.
TFLiteConverter.from_keras_model_file()
을 사용하여 .h5 파일을 .tflite로 변환합니다.- .tflite 파일을 zip으로 압축합니다.
예시
Keras의 가중치 클러스터링 예 외에 다음 예도 참고하세요.
- MNIST 필기 입력 숫자 분류 데이터 세트에서 학습된 CNN 모델의 가중치를 클러스터링합니다. 코드
가중치 클러스터링 구현은 Deep Compression: Compressing Deep Neural Networks With Pruning, Trained Quantization and Huffman Coding 논문에 근거합니다. 3장 Trained Quantization and Weight Sharing을 참고하세요.