CoreML에서 Model compression하는 방법 자세히 알려줘 한글로

Generated on 8/12/2024

1 search

CoreML에서 모델 압축을 수행하는 방법에 대해 설명드리겠습니다. Apple의 WWDC 2024에서 소개된 내용을 바탕으로, CoreML에서 모델 압축을 위한 다양한 기법과 워크플로우가 소개되었습니다.

모델 압축 기법

  1. 팔레타이제이션 (Palletization): 이 기법은 유사한 값의 가중치를 클러스터링하여 클러스터 중심값으로 표현하는 방법입니다. 클러스터 중심값은 조회 테이블에 저장되며, 압축된 가중치는 이 테이블에 대한 인덱스로 표현됩니다.

  2. 양자화 (Quantization): 부동 소수점 가중치를 정수 범위로 선형 매핑하여 저장하는 방법입니다. 정수 가중치는 스케일과 바이어스 쌍과 함께 저장되며, 이는 나중에 정수를 부동 소수점으로 다시 매핑하는 데 사용됩니다.

  3. 프루닝 (Pruning): 가중치 행렬에서 가장 작은 값을 0으로 설정하여 희소 표현으로 모델 가중치를 효율적으로 패킹하는 방법입니다. 비트마스크와 비영 값만 저장하면 됩니다.

모델 압축 워크플로우

  • 데이터 없는 사후 훈련 압축: 사전 훈련된 CoreML 모델을 데이터 없이 압축하는 방법으로, 편리하지만 높은 압축 비율에서는 정확도가 급격히 떨어질 수 있습니다.

  • 캘리브레이션 데이터와 함께하는 사후 훈련 압축: 제한된 양의 데이터를 사용하여 모델을 캘리브레이션하는 방법으로, 데이터 없는 방법과 미세 조정 방법의 중간에 위치한 절충안을 제공합니다. 이 방법은 설정이 간단하고 시간이 덜 소요됩니다.

이러한 기법과 워크플로우를 통해 CoreML 모델을 효과적으로 압축하여 Apple 기기에서 효율적으로 실행할 수 있습니다. 더 자세한 내용은 Bring your machine learning and AI models to Apple silicon 세션을 참고하시기 바랍니다.