모바일 및 임베디드 장치는 컴퓨팅 리소스가 제한되므로 애플리케이션 리소스의 효율성을 유지하는 것이 중요합니다 Google에서는 데이터 침해와 관련해 TensorFlow를 개선하는 데 사용할 수 있는 권장사항과 전략을 소개합니다. 라이트 모델 성능
작업에 가장 적합한 모델 선택
작업에 따라 모델 복잡도 사이에서 절충해야 함 지정할 수 있습니다 작업에 높은 정확성이 필요한 경우 복잡한 모델입니다. 정밀도가 낮은 작업의 경우 디스크 공간과 메모리를 덜 사용할 뿐만 아니라 더 빠르고 에너지 효율적입니다. 예를 들어 아래 그래프는 정확성과 지연 시간을 절충해야 합니다.
휴대기기에 최적화된 모델의 한 가지 예는 모바일에 최적화된 MobileNets 살펴보겠습니다 Kaggle 모델은 여러 다른 모바일 및 임베디드 기기에 맞게 특별히 최적화된 모델입니다.
전송을 사용하여 자체 데이터 세트에 나열된 모델을 다시 학습시킬 수 있습니다. 있습니다.
모델 프로파일링
작업에 적합한 후보 모델을 선택했다면 모델을 프로파일링하고 벤치마킹하는 것이 좋습니다. LiteRT 벤치마킹 도구 에는 연산자별 프로파일링 통계를 표시하는 기본 프로파일러가 있습니다. 이렇게 하면 성능 병목 현상과 가장 큰 영향을 미치는 연산자를 이해하는 데 도움이 됩니다. 컴퓨팅 시간이 단축됩니다.
또한 LiteRTRTT를 사용할 수도 있습니다. trace를 사용하여 표준 Android 시스템 추적을 사용하여 Android 애플리케이션의 GUI 기반 프로파일링을 통해 시간별로 연산자 호출을 시각화합니다. 있습니다.
그래프에서 연산자 프로파일링 및 최적화
특정 연산자가 모델에 자주 나타나는 경우 연산자가 가장 많은 시간을 소비하는 것을 알았다면 해당 연산자를 최적화하는 방법을 살펴보겠습니다 이 시나리오는 TensorFlow Lite에는 대부분의 연산자에 최적화된 버전이 있습니다. 그러나 다음을 수행할 수도 있습니다. 작업을 수행해야 하는 제약 조건을 알고 있다면 더 빠른 버전의 연산자가 실행됩니다. 커스텀 연산자 가이드를 참고하세요.
모델 최적화
모델 최적화는 일반적으로 더 빠르고 속도가 빠른 더 작은 모델을 만드는 것을 목표로 합니다. 에너지 효율이 높아져 휴대기기에 설치할 수 있습니다. LiteRT는 양자화와 같은 여러 최적화 기법을 지원합니다.
자세한 내용은 모델 최적화 문서를 참조하세요.
스레드 수 조정하기
LiteRT는 여러 연산자에 다중 스레드 커널을 지원합니다. 다음을 수행할 수 있습니다. 스레드 수를 늘리고 연산자 실행 속도를 높일 수 있습니다. 증가 하지만 스레드의 수가 늘어남에 따라 모델이 더 많은 리소스를 사용하고 강력합니다.
일부 애플리케이션의 경우 지연 시간이 에너지 효율보다 더 중요할 수 있습니다. 나 인터프리터 수를 설정하여 스레드 수를 늘릴 수 있음 스레드가 포함될 수 있습니다. 그러나 다중 스레드 실행은 성능을 향상시키는 대가를 치러집니다. 동시에 실행되는 다른 항목에 따라 변동이 있을 수 있습니다 이것은 특히 모바일 앱의 경우에 그렇습니다. 예를 들어 개별 테스트는 단일 스레드의 속도가 더 빨라지지만, 다른 앱이 동시에 실행되면 단일 스레드보다 성능이 저하될 수 있습니다.
중복 사본 제거
애플리케이션을 신중하게 설계하지 않으면 중복 사본이 있을 수 있습니다.
모델에서 출력을 읽을 때 사용됩니다. 반드시
중복 사본을 제거할 수 있습니다. Java와 같은 상위 수준 API를 사용하는 경우
문서에서 성능 관련 주의사항을 주의 깊게 확인하세요. 예를 들어
ByteBuffers
를 다음과 같이 사용하면 Java API가 훨씬 더 빠릅니다.
입력입니다.
플랫폼별 도구로 애플리케이션 프로파일링
플랫폼별 도구(예: Android) Profiler와 계기는 부를 제공함 프로파일링 정보를 제공합니다. 경우에 따라 성능 버그가 모델에 없을 수도 있지만 상호작용하지 않아도 됩니다 플랫폼을 숙지합니다. 플랫폼별 특정 프로파일링 도구 및 권장사항을 살펴봅니다.
기기에서 제공되는 하드웨어 가속기를 사용하여 모델이 이점을 얻을 수 있는지 평가
LiteRT는 더 빠른 하드웨어로 모델을 가속화하는 새로운 방법을 추가했습니다. GPU, DSP, 신경망 가속기처럼 작동합니다 일반적으로 이러한 가속기는 대체하는 위임 하위 모듈을 통해 노출됨 일부에만 집중합니다 LiteRT는 다음과 같은 방법으로 대리인을 사용할 수 있습니다.
- GPU 대리자는 OpenGL/OpenCL 및 Metal을 사용하는 Android 및 iOS에서 사용할 수 있습니다. 로 나뉩니다. 사용해 보려면 GPU 대리자를 참고하세요.
- 다음에 대한 액세스 권한이 있는 경우 직접 대리인을 만들 수 있습니다. 사용할 수 없습니다. LiteRT를 참조하세요. 위임을 참조하세요.
일부 가속기는 여러 유형의 모델에서 더 잘 작동한다는 점에 유의하세요. 다소 유용함 위임은 부동 소수점 모델 또는 특정 방식으로 최적화된 모델만 지원합니다. 그것은 각 대리자를 벤치마킹하여 좋은지 확인하는 것이 중요합니다. 선택할 수 있습니다 예를 들어, 모델이 아주 작은 경우 모델을 GPU에 위임할 가치가 없습니다. 반대로 가속기는 는 산술 강도가 높은 대형 모델에 적합합니다.