이 페이지는 Cloud Translation API를 통해 번역되었습니다.
Switch to English

TensorFlow Lite 바이너리 크기 줄이기

개요

온 디바이스 머신 러닝 (ODML) 애플리케이션 용 모델을 배포 할 때 모바일 디바이스에서 사용할 수있는 제한된 메모리를 인식하는 것이 중요합니다. 모델 바이너리 크기는 모델에 사용 된 작업 수와 밀접한 관련이 있습니다. TensorFlow Lite를 사용하면 선택적 빌드를 사용하여 모델 바이너리 크기를 줄일 수 있습니다. 선택적 빌드는 모델 집합에서 사용되지 않는 작업을 건너 뛰고 모바일 장치에서 모델을 실행하는 데 필요한 런타임 및 op 커널 만있는 컴팩트 라이브러리를 생성합니다.

선택적 빌드는 다음 세 가지 작업 라이브러리에 적용됩니다.

  1. TensorFlow Lite 내장 작업 라이브러리
  2. TensorFlow Lite 맞춤 작업
  3. TensorFlow ops 라이브러리 선택

아래 표는 몇 가지 일반적인 사용 사례에 대한 선택적 빌드의 영향을 보여줍니다.

모델명 도메인 타겟 아키텍처 AAR 파일 크기
Mobilenet_1.0_224 (float) 이미지 분류 armeabi-v7a tensorflow-lite.aar (296,635 바이트)
arm64-v8a tensorflow-lite.aar (382,892 바이트)
기미 음높이 추출 armeabi-v7a tensorflow-lite.aar (375,813 바이트)
tensorflow-lite-select-tf-ops.aar (1,676,380 바이트)
arm64-v8a tensorflow-lite.aar (421,826 바이트)
tensorflow-lite-select-tf-ops.aar (2,298,630 바이트)
i3d- 키네틱 스 -400 비디오 분류 armeabi-v7a tensorflow-lite.aar (240,085 바이트)
tensorflow-lite-select-tf-ops.aar (1,708,597 바이트)
arm64-v8a tensorflow-lite.aar (273,713 바이트)
tensorflow-lite-select-tf-ops.aar (2,339,697 바이트)

알려진 문제 / 제한 사항

  1. C API 및 iOS 버전 용 선택적 빌드는 현재 지원되지 않습니다.

Bazel을 사용하여 TensorFlow Lite를 선택적으로 빌드

이 섹션에서는 TensorFlow 소스 코드를 다운로드하고 Bazel에 로컬 개발 환경설정 했다고 가정합니다.

Android 프로젝트 용 AAR 파일 빌드

다음과 같이 모델 파일 경로를 제공하여 커스텀 TensorFlow Lite AAR을 빌드 할 수 있습니다.

sh tensorflow/lite/tools/build_aar.sh \
  --input_models=/a/b/model_one.tflite,/c/d/model_two.tflite \
  --target_archs=x86,x86_64,arm64-v8a,armeabi-v7a

위의 명령은 TensorFlow Lite 기본 제공 및 사용자 지정 작업에 대한 AAR 파일 bazel-bin/tmp/tensorflow-lite.aar 를 생성합니다. 모델에 Select TensorFlow ops가 포함 된 경우 선택적으로 aar 파일 bazel-bin/tmp/tensorflow-lite-select-tf-ops.aar 생성합니다. 이것은 몇 가지 다른 아키텍처로 "뚱뚱한"AAR을 구축합니다. 모두 필요하지 않은 경우 배포 환경에 적합한 하위 집합을 사용하십시오.

고급 사용 : 사용자 지정 작업으로 빌드

커스텀 작업으로 Tensorflow Lite 모델을 개발 한 경우 빌드 명령어에 다음 플래그를 추가하여 빌드 할 수 있습니다.

sh tensorflow/lite/tools/build_aar.sh \
  --input_models=/a/b/model_one.tflite,/c/d/model_two.tflite \
  --target_archs=x86,x86_64,arm64-v8a,armeabi-v7a \
  --tflite_custom_ops_srcs=/e/f/file1.cc,/g/h/file2.h \
  --tflite_custom_ops_deps=dep1,dep2

tflite_custom_ops_srcs 플래그에는 커스텀 작업의 소스 파일이 포함되고 tflite_custom_ops_deps 플래그에는 이러한 소스 파일을 빌드하기위한 종속성이 포함됩니다. 이러한 종속성은 TensorFlow 저장소에 있어야합니다.

Docker로 TensorFlow Lite를 선택적으로 빌드

이 섹션에서는 로컬 머신에 Docker 를 설치 하고 TensorFlow Lite Docker 파일을 빌드 했다고 가정 합니다 .

Android 프로젝트 용 AAR 파일 빌드

다음을 실행하여 Docker로 빌드하기위한 스크립트를 다운로드합니다.

curl -o build_aar_with_docker.sh \
  https://raw.githubusercontent.com/tensorflow/tensorflow/master/tensorflow/lite/tools/build_aar_with_docker.sh &&
chmod +x build_aar_with_docker.sh

그런 다음 다음과 같이 모델 파일 경로를 제공하여 커스텀 TensorFlow Lite AAR을 빌드 할 수 있습니다.

sh build_aar_with_docker.sh \
  --input_models=/a/b/model_one.tflite,/c/d/model_two.tflite \
  --target_archs=x86,x86_64,arm64-v8a,armeabi-v7a \
  --checkpoint=master

checkpoint 플래그는 라이브러리를 빌드하기 전에 체크 아웃하려는 TensorFlow 저장소의 커밋, 분기 또는 태그입니다. 위의 명령은 TensorFlow Lite 기본 제공 및 사용자 지정 작업에 대한 AAR 파일 tensorflow-lite.aar 를 생성하고 선택적으로 현재 디렉터리에서 TensorFlow 작업 선택에 대한 AAR 파일 tensorflow-lite-select-tf-ops.aar 를 생성합니다.

프로젝트에 AAR 파일 추가

AAR을 프로젝트로 직접 가져 오거나 사용자 지정 AAR을 로컬 Maven 저장소게시하여 AAR 파일을 추가 합니다 . tensorflow-lite-select-tf-ops.aar 를 생성하는 경우에도 AAR 파일을 추가해야합니다.