모델 최적화

에지 기기는 메모리나 컴퓨팅 성능이 제한적인 경우가 많습니다. 여러 상태 모델에 최적화를 적용하여 이러한 범위 내에서 실행할 수 제약이 있습니다 또한 일부 최적화를 사용하면 가속 추론을 위한 하드웨어입니다.

LiteRT 및 TensorFlow 모델 최적화 도구를 사용하면 추론 최적화의 복잡성을 최소화할 수 있습니다.

적용 과정에서 모델 최적화를 고려하는 것이 좋습니다. 살펴봤습니다 이 문서에서는 최적화를 위한 몇 가지 권장사항을 간략히 설명합니다. 에지 하드웨어에 배포하기 위한 TensorFlow 모델

모델을 최적화해야 하는 이유

모델 최적화가 애플리케이션에 도움이 될 수 있는 몇 가지 주요 방법은 살펴봤습니다

크기 축소

일부 최적화 형식은 모델의 크기를 줄이는 데 사용할 수 있습니다. 작게 모델에는 다음과 같은 이점이 있습니다.

  • 스토리지 크기 축소: 모델이 작을수록 기기의 저장공간을 덜 차지합니다. 사용자 기기에서 사용할 수 있습니다. 예를 들어, 더 작은 모델을 사용하는 Android 앱은 모바일 장치의 저장공간이 덜 차지할 수 있습니다.
  • 다운로드 크기 축소: 모델이 작을수록 앱 실행에 필요한 시간과 대역폭이 다운로드 해야 할 수도 기기에서 사용할 수 있습니다.
  • 메모리 사용량 감소: 작은 모델은 실행 시 RAM을 덜 사용합니다. 애플리케이션의 다른 부분에서 사용할 수 있도록 메모리가 확보되며, 성능 및 안정성이 향상됩니다

양자화는 이러한 모든 경우에 모델의 크기를 줄일 수 있으며, 정확성이 다소 떨어질 수 있습니다 프루닝과 클러스터링은 클러스터의 더 쉽게 압축하도록 하여 다운로드할 수 있도록 합니다.

지연 시간 단축

지연 시간은 지정된 데이터로 단일 추론을 실행하는 데 걸리는 시간입니다. 있습니다. 일부 최적화 형식은 필요한 계산량을 줄일 수 있습니다. 모델을 사용하여 추론을 실행하여 지연 시간이 단축됩니다. 지연 시간은 전력 소비에 영향을 미칩니다.

현재 양자화를 사용하면 많은 양의 계산이 필요할 수 있으므로 있습니다.

가속기 호환성

일부 하드웨어 가속기(예: Edge) TPU는 다음과 같이 매우 빠르게 추론을 실행할 수 있습니다. 모델이 올바르게 최적화되었는지 확인합니다.

일반적으로 이러한 유형의 장치는 모델을 특정 밀리초로 양자화해야 있습니다. 각 하드웨어 가속기의 문서를 참조하여 요구사항을 충족해야 합니다

절충사항

최적화로 인해 모델 정확성이 변경될 수 있습니다. 애플리케이션 개발 프로세스 단계에서 고려해야 합니다

정확도의 변화는 최적화되는 개별 모델에 따라 달라지며, 예측하기가 어렵습니다. 일반적으로 머신러닝 모델에 최적화된 모델은 약간의 정확성이 떨어지게 됩니다 사용 중인 사용자의 서비스 이용에 영향을 미칠 수도 있고 경험해 볼 수 있습니다 드문 경우지만, 최적화 프로세스의 결과로 특정 모델의 정확성이 향상될 수 있습니다.

최적화 유형

LiteRT는 현재 양자화, 프루닝 및 살펴보겠습니다

이는 TensorFlow 모델 최적화 도구 모음을 TensorFlow와 호환되는 모델 최적화 기법을 위한 리소스 라이트입니다.

양자화

양자화 모델의 정밀도를 나타내는 데 사용되는 숫자의 정밀도를 매개변수를 사용하며, 이는 기본적으로 32비트 부동 소수점 숫자입니다. 그 결과 더 작은 모델 크기와 더 빠른 계산이 가능합니다.

LiteRT에서 사용할 수 있는 양자화 유형은 다음과 같습니다.

기법 데이터 요구사항 크기 축소 정확성 지원되는 하드웨어
학습 후 float16 양자화 데이터 없음 최대 50% 미미한 정확성 손실 CPU, GPU
학습 후 동적 범위 양자화 데이터 없음 최대 75% 최소 정확도 손실 CPU, GPU (Android)
학습 후 정수 양자화 라벨이 지정되지 않은 대표 샘플 최대 75% 작은 정확도 손실 CPU, GPU (Android), EdgeTPU
양자화 인식 학습 라벨이 지정된 학습 데이터 최대 75% 최소 정확도 손실 CPU, GPU (Android), EdgeTPU

다음 결정 트리는 모델 학습에 사용할 수 있는 양자화 체계를 선택하는 데 단순히 예측된 모델 크기와 있습니다.

양자화 결정 트리

다음은 학습 후 양자화의 지연 시간 및 정확도 결과와 몇 가지 모델에서 양자화 인식 학습을 시도할 수 있었습니다. 모든 지연 시간 수치는 하나의 빅 코어 CPU를 사용하는 Pixel 2 기기 툴킷이 개선됨에 따라 숫자는 다음과 같습니다.

모델 최고의 정확성 (원본) 최상위 정확성 (교육 후 양자화) Top-1 정확성 (양자화 인식 학습) 지연 시간 (원본) (밀리초) 지연 시간 (학습 후 양자화) (밀리초) 지연 시간 (양자화 인식 학습) (밀리초) 크기 (원본) (MB) 크기 (최적화) (MB)
Mobilenet-v1-1-2240.7090.6570.70 1241126416.94.3
Mobilenet-v2-1-2240.7190.6370.709 899854143.6
Inception_v30.780.7720.775 113084554395.723.9
Resnet_v2_1010.7700.768해당 사항 없음 39732868해당 사항 없음178.344.9
<ph type="x-smartling-placeholder">
</ph> 표 1 일부 CNN 모델에서 모델 양자화의 이점

int16 활성화 및 int8 가중치를 사용한 전체 정수 양자화

int16 활성화를 사용한 양자화 int16에서 활성화되고 int16에서 가중치가 있는 완전한 정수 양자화 체계입니다. int8로 변경합니다. 이 모드는 Transformer에 비해 양자화 모델의 정확성을 활성화 및 가중치가 모두 int8인 완전 정수 양자화 체계 유사한 모델 사이즈를 유지할 수 있습니다 활성화가 민감한 경우에 권장됩니다. 양자화에 이르렀습니다.

참고: 현재는 최적화되지 않은 참조 커널 구현만 이 양자화 스키마에 대해 TFLite에서 사용할 수 있으므로, 기본적으로 int8 커널에 비해 느릴 것입니다. 이 모드의 장점은 현재 특수 하드웨어 또는 맞춤형 소프트웨어를 통해 액세스 할 수 있습니다.

다음은 이 모드를 사용하는 일부 모델의 정확도 결과입니다.

모델 정확성 측정항목 유형 정확성 (float32 활성화) 정확성 (int8 활성화) 정확성 (int16 활성화)
Wav2letterWER6.7%7.7% 7.2%
DeepSpeech 0.5.1 (언롤링)CER6.13%43.67% 6.52%
YoloV3mAP(IOU=0.5)0.5770.563 0.574
MobileNetV1최고의 정확성0.70620.694 0.6936
MobileNetV2최고의 정확성0.7180.7126 0.7137
MobileBertF1(일치검색)88.81(81.23)2.08(0) 88.73(81.15)
<ph type="x-smartling-placeholder">
</ph> 표 2 int16 활성화를 통한 모델 양자화의 이점

가지치기

프루닝 작업: 모델에 미미한 영향을 미치는 매개변수를 삭제하는 것을 학습합니다. 프루닝된 모델은 디스크에서 크기가 동일하고 런타임이 동일합니다. 보다 효과적으로 압축할 수 있습니다. 이렇게 하면 프루닝을 모델 다운로드 크기를 줄이는 기법입니다.

향후 LiteRT는 프루닝된 모델의 지연 시간을 단축시킬 것입니다.

클러스터링

클러스터링 모델의 각 레이어의 가중치를 사전 정의된 숫자로 그룹화하여 작동합니다. 각 클러스터에 속하는 가중치의 중심 값을 실행할 수 있습니다 이렇게 하면 모델에서 고유한 가중치 값의 수가 줄어들어 복잡성을 줄일 수 있습니다

그 결과, 클러스터링된 모델을 보다 효과적으로 압축할 수 있어 프루닝과 비슷한 배포 이점을 제공합니다

개발 워크플로

먼저 호스팅된 서비스에서 모델이 애플리케이션에 적합할 수 있습니다. 그렇지 않은 경우 먼저 학습 후 양자화 및 도구를 사용해야 합니다. 학습 데이터가 필요하지 않습니다

정확성 및 지연 시간 목표가 충족되지 않은 경우 또는 하드웨어 가속기 지원이 중요하므로 양자화 인식과 교육 더 나은 옵션입니다 그 밖의 최적화 기법은 TensorFlow 모델 최적화 툴킷에 대해 자세히 알아보세요.

모델 크기를 더 줄이려면 프루닝을 시도해 보세요. 클러스터링 및/또는 클러스터링에 대해 ML 모델을 학습시킬 수 있습니다