성능 권장사항

모바일 및 내장 기기는 컴퓨팅 리소스가 제한되므로 애플리케이션 리소스의 효율성을 유지하는 것이 중요합니다. TensorFlow Lite 모델 성능을 개선하는 데 사용할 수 있는 권장사항 및 전략 목록을 정리했습니다.

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

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

모델 크기 대 정확성의 그래프

정확성 대 지연 시간 그래프

휴대기기에 최적화된 모델의 한 가지 예로는 모바일 비전 애플리케이션에 최적화된 MobileNets가 있습니다. TensorFlow Hub에는 모바일 및 내장형 기기에 특별히 최적화된 다른 모델이 몇 가지 나와 있습니다.

전이 학습을 사용하여 자체 데이터 세트에 나열된 모델을 다시 학습시킬 수 있습니다.

모델 프로파일링

작업에 적합한 후보 모델을 선택했다면 모델을 프로파일링하고 벤치마킹하는 것이 좋습니다. TensorFlow Lite 벤치마킹 도구에는 연산자별 프로파일링 통계를 보여주는 프로파일러가 내장되어 있습니다. 이는 성능 병목 현상과 계산 시간의 대부분을 차지하는 연산자를 이해하는 데 도움이 될 수 있습니다.

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

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

특정 연산자가 모델에 자주 나타나는데 프로파일링을 기반으로 연산자가 가장 많은 시간을 소비하는 것으로 확인되면 해당 연산자를 최적화할 수 있습니다. TensorFlow Lite에는 대부분의 연산자에 최적화된 버전이 있으므로 이러한 시나리오는 드뭅니다. 그러나 연산자가 실행되는 제약조건을 알고 있다면 더 빠른 버전의 커스텀 작업을 작성할 수 있습니다. 커스텀 연산자 가이드를 참고하세요.

모델 최적화

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

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

스레드 수 조정하기

TensorFlow Lite는 여러 연산자의 멀티스레드 커널을 지원합니다. 스레드 수를 늘리고 연산자의 실행 속도를 높일 수 있습니다. 하지만 스레드 수를 늘리면 모델에서 더 많은 리소스와 전력을 사용하게 됩니다.

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

중복 사본 제거

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

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

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

기기에서 제공되는 하드웨어 가속기를 사용하여 모델이 이점을 얻을 수 있는지 평가

TensorFlow Lite에는 GPU, DSP, 신경망 가속기와 같은 더 빠른 하드웨어로 모델을 가속화하는 새로운 방법이 추가되었습니다. 일반적으로 이러한 가속기는 인터프리터 실행의 일부를 인계하는 위임 하위 모듈을 통해 노출됩니다. TensorFlow Lite는 다음과 같은 방법으로 위임을 사용할 수 있습니다.

  • GPU 대리자는 Android 및 iOS에서 OpenGL/OpenCL 및 Metal을 각각 사용하여 사용할 수 있습니다. 사용해 보려면 GPU 대리자를 참고하세요.
  • 비표준 하드웨어에 액세스할 수 있는 경우 자체 대리자를 만들 수 있습니다. 자세한 내용은 TensorFlow Lite 위임을 참조하세요.

일부 가속기는 여러 유형의 모델에서 더 잘 작동한다는 점에 유의하세요. 일부 대리자는 부동 소수점 수 모델 또는 특정 방식으로 최적화된 모델만 지원합니다. 각 대리자를 벤치마킹하여 애플리케이션에 적합한 선택인지 확인하는 것이 중요합니다. 예를 들어 모델이 매우 작은 경우 모델을 GPU에 위임하지 않아도 됩니다. 반대로 가속기는 산술 강도가 높은 대형 모델에 적합합니다.