TensorFlow Lite는 계산 리소스가 제한된 모바일 및 임베디드 기기에서 머신러닝 모델을 실행하기 위해 Google이 개발한 TensorFlow 프레임웍크의 가밌게 한 버전입니다. 완전한 TensorFlow와 달리 TFLite는 전문 인터프리터와 .tflite 포맷을 사용하며, 트레이닝 지원 없이 빠른 추론에 최적화되어 있습니다. TensorFlow Lite Guide, 2025에 따르면, 이 프레임웍크는 Android, iOS 그리고 Linux에서 동작하며 40억 개 이상의 기기에서 사용되고 있습니다. TensorFlow Lite는 양자화, NNAPI, GPU 및 Core ML 데리게이트를 통한 하드웨어 가속을 지원합니다.
중요 포인트
TensorFlow Lite는 제한된 리소스를 가진 기기에서 머신러닝 모델을 실행하기 위한 전문 런타임입니다. 완전한 TensorFlow와 달리 TFLite는 트레이닝이나 역전파를 지원하지 않고 추론만 수행합니다. 이를 통해 라이브러리의 바이너리 크기를 최소로 유지할 수 있습니다: Android에서 기본 인터프리터의 경우 약 300KB입니다.
TFLite 아키텍처는 FlatBuffers를 기반으로 한 .tflite 포맷을 중심으로 구축되어 있습니다. FlatBuffers는 파싱 단계 없이 데이터에 직접 액세스할 수 있게 해주며, 이는 메모리가 제한된 모바일 기기에 중요합니다. .tflite 포맷의 모델은 계산 그래프, 가중치 및 메타데이터를 하나의 바이너리 파일에 포함합니다.
Google I/O 2024에 따르면 TFLite는 Google Photos, Gboard, YouTube 및 기타 Google 애플리케이션에서 사용되며, 합처 40억 개 이상의 기기에서 활용되고 있습니다. 이 프레임웍크는 CNN, RNN, LSTM, Transformer 및 데리게이트를 통한 사용자 정의 연산과 같은 모든 주요 아키텍처를 지원합니다.
TFLite 런타임은 네 가지 컴포넌트로 구성됩니다. TFLite Converter는 TensorFlow(SavedModel, Keras, ConcreteFunction)에서 모델을 가젤와 선택적 최적화를 적용하여 .tflite 포맷으로 변환합니다. TFLite Interpreter는 .tflite 파일을 로드하고 텐서와 메모리를 관리하며 추론을 수행합니다.
데리게이트는 연산 실행을 전문 하드웨어로 옮기는 컴포넌트입니다. GPU Delegate는 OpenGL ES와 Metal을, NNAPI Delegate는 Android Neural Networks API를, Core ML Delegate는 Apple Core ML을 사용합니다. XNNPACK Delegate는 ARM CPU에서의 실행을 최적화합니다. 각 데리게이트는 특정 연산자 집합을 지원합니다.
넣째 컴포넌트는 Task Library로, 이미지 분류, 객체 감지, 세그멘테이션, NLU와 같은 일반적인 작업을 위한 고급 API를 제공합니다. Task Library는 Interpreter 상에서 동작하며 텐서 관리의 세부 사항을 숨깁니다.
TFLite는 세 가지 양자화 레벨을 지원합니다. 완전 정수 INT8 양자화는 가중치와 활성화를 FP32에서 8비트 정수로 변환합니다. 모델 크기가 4배 감소하고 INT8을 지원하는 기기에서의 추론 속도가 최대 3배까지 향샑됩니다. FP16 양자화는 최소한의 정밀도 손실로 크기를 반으로 줄입니다.
동적 양자화는 가중치를 INT8로 유지하지만 계산은 FP32로 수행합니다. 이 모드는 정밀도에 민감한 모델에 적합하며 품질을 유지하며 최대 4배까지 크기를 줄입니다. Google ML Performance Benchmarks에 따르면 동적 양자화는 NLP 모델에 권장됩니다.
| 모드 | 가중치 유형 | 활성화 유형 | 크기 감소 |
|---|---|---|---|
| FP32 (양자화 없음) | FP32 | FP32 | 1x |
| FP16 | FP16 | FP32 | 2x |
| 동적 INT8 | INT8 | FP32 | 4x |
| 완전 INT8 | INT8 | INT8 | 4x |
Android에서 주요 가속 메커니즘은 NNAPI Delegate로, Android Neural Networks API를 통해 연산 실행을 NPU, DSP 또는 GPU로 옮깁니다. NNAPI는 Android 8.1+ 기기에서 사용 가능하며 INT8 및 FP16 계산을 지원합니다. Android용 GPU Delegate는 OpenGL ES 3.1+ 및 Vulkan을 사용합니다.
iOS에서는 Core ML Delegate를 통해 가속이 제공되며, TFLite 연산을 Core ML 포맷으로 변환하여 Apple Neural Engine에서 실행합니다. Apple ML Benchmarking에 따르면 Core ML Delegate를 사용하면 iPhone 15 Pro에서 CPU 대비 최대 4배까지 추론이 가속됩니다. iOS용 GPU Delegate는 Metal Performance Shaders를 사용합니다.
XNNPACK Delegate는 ARM CPU용 크로스 플랫폼 솔루션으로, 모바일 프로세서에 최적화되어 있습니다. XNNPACK은 FP32, FP16 및 INT8 연산을 지원하며 별도의 하드웨어가 필요하지 않습니다. 모든 기기의 기본 데리게이트로 권장됩니다.
배포 과정은 세 단계로 구성됩니다. 첫 번째는 TFLite Converter를 통해 모델을 .tflite로 변환하는 것입니다. 둘 째는 .tflite 파일을 애플리케이션 리소스에 포함하는 것입니다. Android의 경우 파일은 assets에 배치되고, iOS의 경우 Xcode를 통해 앱 번들에 포함됩니다. 셸 째는 Interpreter를 초기화하고 추론을 수행하는 것입니다.
동적 모델 업데이트를 위해 Google은 Firebase ML Model Downloading 또는 클라우드에서의 사용자 다운로드 메커니즘을 권장합니다. 업데이트된 .tflite 파일은 로컬 저장소에 저장되고 다음 실행 시 Interpreter에 로드됩니다.
배포 시 .tflite 파일 크기를 고려하는 것이 중요합니다. Google Play는 APK 크기를 200 MB로 제한합니다. 50 MB를 초과하는 모델의 경우 Android App Bundle을 사용하거나 Play Asset Delivery를 통해 모델을 별도로 다운로드할 것을 권장합니다.
Android Java API에서 모델을 로드하고 실행하는 예제입니다. assets에서 .tflite를 로드하려면 Interpreter.create()을, 추론에는 run()을 사용하십시오. 입력 및 출력 데이터는 다차원 배열 또는 ByteBuffer로 전달됩니다:
import org.tensorflow.lite.Interpreter;
import java.nio.MappedByteBuffer;
import java.io.FileInputStream;
import java.nio.channels.FileChannel;
MappedByteBuffer model = new FileInputStream(
getAssets().openFd("model.tflite")
).getChannel().map(
FileChannel.MapMode.READ_ONLY, 0, fc.size()
);
Interpreter interpreter = new Interpreter.create(model);
float[][] input = new float[1][224 * 224 * 3];
float[][] output = new float[1][1000];
interpreter.run(input, output);
interpreter.close();
하드웨어 가속을 위한 Android에서 GPU Delegate 사용 예제입니다. 종속성 com.android.support:tensorflow-lite-gpu를 추가하고 Interpreter를 생성할 때 데리게이트를 지정하십시오:
import org.tensorflow.lite.Interpreter;
import org.tensorflow.lite.gpu.GpuDelegate;
GpuDelegate gpuDelegate = new GpuDelegate.create();
Interpreter.Options options = new Interpreter.Options().addDelegate(gpuDelegate);
Interpreter interpreter = new Interpreter.create(model, options);
// Run inference on the input data
interpreter.run(input, output);
// Release delegate resources after inference
gpuDelegate.close();
interpreter.close();
자주 묻는 질문
TensorFlow는 트레이닝과 추론을 위한 완전한 프레임웍크입니다. TensorFlow Lite는 모바일 기기에서의 추론만을 위합니다. TFLite는 .tflite 포맷을 사용하며 역전파를 지원하지 않습니다.
지원되는 데리게이트는 GPU Delegate(OpenGL/Metal), NNAPI Delegate(Android), Core ML Delegate(iOS) 그리고 XNNPACK Delegate(ARM CPU)가 있습니다. 각 데리게이트는 특정 하드웨어에 최적화되어 있습니다.
양자화를 사용하십시오. FP16은 크기를 2배, INT8은 4배 줄입니다. 동적 양자화, 가중치 프루닝, 변환 전 모델 증류도 가능합니다.
네, TFLite Model Maker 및 온디바이스 트레이닝 API(실험적)를 통해 지원합니다. 사용자 기기에서 직접 파인튜닝 및 모델 개인화가 가능합니다.
TFLite는 CNN, RNN, LSTM, Transformer, 모바일 아키텍처(MobileNet, EfficientNet, YOLO, BERT) 및 사용자 정의 연산을 지원합니다. 제한사항은 대상 데리게이트에서 사용 가능한 연산자입니다.
요약
턴키 방식의 모바일 애플리케이션을 개발해 드립니다
IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.