가중치 클러스터링

Arm ML 도구에서 유지 관리

이 문서는 가중치 클러스터링에 관해 간략히 설명하여 사용 사례와의 적합성을 판단하는 데 도움을 줍니다.

개요

클러스터링 또는 가중치 공유로 모델에서 고유한 가중치 값 수를 줄여 배포 이점으로 이어집니다. 먼저 각 레이어의 가중치를 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는 지원되지 않습니다.
  • 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에서 학습되고 테스트되었습니다.

  1. Keras 모델을 .h5 파일로 직렬화합니다.
  2. TFLiteConverter.from_keras_model_file()을 사용하여 .h5 파일을 .tflite로 변환합니다.
  3. .tflite 파일을 zip으로 압축합니다.

예시

Keras의 가중치 클러스터링 예 외에 다음 예도 참고하세요.

  • MNIST 필기 입력 숫자 분류 데이터 세트에서 학습된 CNN 모델의 가중치를 클러스터링합니다. 코드

가중치 클러스터링 구현은 Deep Compression: Compressing Deep Neural Networks With Pruning, Trained Quantization and Huffman Coding 논문에 근거합니다. 3장 Trained Quantization and Weight Sharing을 참고하세요.