날짜를 저장하십시오! Google I / O가 5 월 18 일부터 20 일까지 반환됩니다. 지금 등록
이 페이지는 Cloud Translation API를 통해 번역되었습니다.
Switch to English

성능 모범 사례

모바일 및 임베디드 장치는 계산 리소스가 제한되어 있으므로 애플리케이션 리소스를 효율적으로 유지하는 것이 중요합니다. TensorFlow Lite 모델 성능을 개선하는 데 사용할 수있는 모범 사례 및 전략 목록을 작성했습니다.

작업에 가장 적합한 모델 선택

작업에 따라 모델 복잡성과 크기간에 균형을 맞춰야합니다. 작업에 높은 정확도가 필요한 경우 크고 복잡한 모델이 필요할 수 있습니다. 정밀도가 낮은 작업의 경우 디스크 공간과 메모리를 적게 사용할뿐만 아니라 일반적으로 더 빠르고 에너지 효율적이기 때문에 더 작은 모델을 사용하는 것이 좋습니다. 예를 들어 아래 그래프는 몇 가지 일반적인 이미지 분류 모델에 대한 정확도와 지연 시간을 보여줍니다.

Graph of model size vs accuracy

Graph of accuracy vs latency

모바일 장치에 최적화 된 모델의 한 가지 예는 모바일 비전 애플리케이션에 최적화 된 MobileNets 입니다. 호스팅 된 모델 에는 모바일 및 임베디드 장치에 특별히 최적화 된 몇 가지 다른 모델이 나열되어 있습니다.

전이 학습을 사용하여 자체 데이터 세트에서 나열된 모델을 재 학습 할 수 있습니다. 이미지 분류객체 감지에 대한 전이 학습 자습서를 확인하십시오.

모델 프로파일 링

작업에 적합한 후보 모델을 선택한 후에는 모델을 프로파일 링하고 벤치마킹하는 것이 좋습니다. TensorFlow Lite 벤치마킹 도구 에는 연산자 별 프로파일 링 통계를 표시하는 기본 제공 프로파일 러가 있습니다. 이는 성능 병목 현상과 계산 시간을 지배하는 연산자를 이해하는 데 도움이 될 수 있습니다.

또한 TensorFlow Lite 추적 을 사용하여 표준 Android 시스템 추적을 사용하여 Android 애플리케이션에서 모델을 프로파일 링하고 GUI 기반 프로파일 링 도구를 사용하여 시간별로 운영자 호출을 시각화 할 수 있습니다.

그래프에서 연산자 프로파일 링 및 최적화

특정 연산자가 모델에 자주 나타나고 프로파일 링을 기반으로 해당 연산자가 가장 많은 시간을 소비하는 경우 해당 연산자를 최적화하는 방법을 살펴볼 수 있습니다. TensorFlow Lite는 대부분의 운영자를 위해 최적화 된 버전을 가지고 있으므로이 시나리오는 드뭅니다. 그러나 연산자가 실행되는 제약 조건을 알고있는 경우 사용자 지정 작업의 더 빠른 버전을 작성할 수 있습니다. 맞춤형 운영자 문서를 확인하십시오.

모델 최적화

모델 최적화는 일반적으로 더 빠르고 에너지 효율적인 더 작은 모델을 만들어 모바일 장치에 배포 할 수 있도록하는 것을 목표로합니다. TensorFlow Lite는 양자화와 같은 여러 최적화 기술을 지원합니다.

자세한 내용은 모델 최적화 문서 를 확인하세요.

스레드 수 조정

TensorFlow Lite는 많은 연산자를위한 다중 스레드 커널을 지원합니다. 스레드 수를 늘리고 연산자 실행 속도를 높일 수 있습니다. 그러나 스레드 수를 늘리면 모델이 더 많은 리소스와 성능을 사용하게됩니다.

일부 애플리케이션의 경우 대기 시간이 에너지 효율성보다 더 중요 할 수 있습니다. 인터프리터 스레드 수를 설정하여 스레드 수를 늘릴 수 있습니다. 그러나 다중 스레드 실행은 동시에 실행되는 다른 항목에 따라 성능 변동성이 증가합니다. 이는 특히 모바일 앱의 경우입니다. 예를 들어 격리 된 테스트는 단일 스레드에 비해 2 배의 속도 향상을 보여줄 수 있지만 다른 앱이 동시에 실행되는 경우 단일 스레드보다 성능이 저하 될 수 있습니다.

중복 사본 제거

애플리케이션이 신중하게 설계되지 않은 경우 모델에 입력을 공급하고 모델에서 출력을 읽을 때 중복 사본이있을 수 있습니다. 중복 사본을 제거하십시오. Java와 같은 더 높은 수준의 API를 사용하는 경우 설명서에서 성능주의 사항을주의 깊게 확인하십시오. 예를 들어, Java API는 ByteBuffers입력 으로 사용되는 경우 훨씬 더 빠릅니다.

플랫폼 별 도구로 애플리케이션 프로파일 링

Android 프로파일 러Instruments 와 같은 플랫폼 별 도구는 앱을 디버그하는 데 사용할 수있는 풍부한 프로파일 링 정보를 제공합니다. 때로는 성능 버그가 모델이 아니라 모델과 상호 작용하는 애플리케이션 코드의 일부에있을 수 있습니다. 플랫폼 별 프로파일 링 도구 및 플랫폼에 대한 모범 사례를 숙지하십시오.

장치에서 사용할 수있는 하드웨어 가속기를 사용하여 모델이 혜택을 받는지 평가

TensorFlow Lite는 GPU, DSP, 신경 가속기와 같은 더 빠른 하드웨어로 모델을 가속화하는 새로운 방법을 추가했습니다. 일반적으로 이러한 가속기는 인터프리터 실행의 일부를 차지하는 델리게이트 서브 모듈을 통해 노출됩니다. TensorFlow Lite는 다음을 통해 대리자를 사용할 수 있습니다.

  • Android의 Neural Networks API 사용 . 이러한 하드웨어 가속기 백엔드를 활용하여 모델의 속도와 효율성을 개선 할 수 있습니다. Neural Networks API를 활성화하려면 NNAPI 델리게이트 가이드를 확인하세요.
  • GPU 델리게이트는 각각 OpenGL / OpenCL 및 Metal을 사용하여 Android 및 iOS에서 사용할 수 있습니다. 사용해 보려면 GPU 델리게이트 자습서설명서를 참조하십시오.
  • Hexagon delegate는 Android에서 사용할 수 있습니다. 기기에서 사용 가능한 경우 Qualcomm Hexagon DSP를 활용합니다. 자세한 내용은 Hexagon 대리자 자습서 를 참조하십시오.
  • 비표준 하드웨어에 대한 액세스 권한이있는 경우 고유 한 대리인을 만들 수 있습니다. 자세한 내용은 TensorFlow Lite 델리게이트 를 참조하세요.

일부 액셀러레이터는 다양한 유형의 모델에서 더 잘 작동합니다. 일부 대리자는 특정 방식으로 최적화 된 부동 모델 또는 모델 만 지원합니다. 각 델리게이트를 벤치마킹 하여 애플리케이션에 적합한 지 확인하는 것이 중요합니다. 예를 들어 모델이 매우 작은 경우 모델을 NN API 또는 GPU에 위임 할 가치가 없습니다. 반대로, 액셀러레이터는 산술 강도가 높은 대형 모델에 적합한 선택입니다.

더 많은 도움이 필요

TensorFlow 팀은 직면 할 수있는 특정 성능 문제를 진단하고 해결하도록 기꺼이 도와드립니다. 문제에 대한 세부 정보와 함께 GitHub에 문제를 제출하세요.