TF Lite Interpreter — konsep kunci, antarmuka dan menjalankan model

Penulis: IT Sectr Diterbitkan: 2026-07-18 Waktu membaca: 6 mnt

TF Lite Interpreter adalah komponen kunci TensorFlow Lite yang bertanggung jawab untuk menjalankan model dalam format .tflite pada perangkat seluler dan tertanam. Interpreter memuat representasi FlatBuffers model, mengalokasikan tensor untuk data masukan dan keluaran, menjalankan grafik komputasi dan mengembalikan hasil. Menurut TensorFlow Lite API Reference, 2025, Interpreter tersedia di Java dan C++ untuk Android, Swift dan Objective-C untuk iOS, serta melalui binding Python untuk pengujian. TF Lite Interpreter mendukung delegat untuk percepatan perangkat keras melalui GPU, NNAPI dan Core ML.

Poin Utama

  • TF Lite Interpreter — runtime untuk menjalankan model .tflite pada perangkat seluler dan tertanam.
  • Interpreter memuat model, mengalokasikan tensor dan menjalankan grafik komputasi operator demi operator.
  • API tersedia di Java, C++, Swift, Objective-C dan Python untuk berbagai platform.
  • Delegat GPU, NNAPI dan Core ML mempercepat inferensi hingga 5x dibandingkan CPU.
  • Beberapa interpreter memungkinkan menjalankan banyak model secara paralel dalam satu aplikasi.

Konsep kunci TF Lite Interpreter

TF Lite Interpreter adalah runtime minimalis yang menjalankan model machine learning pada perangkat tanpa infrastruktur server. Interpreter tidak mendukung pelatihan — hanya inferensi. Ini membuatnya ringan: ukuran biner interpreter dasar di Android sekitar 300 KB.

Interpreter bekerja dengan model dalam format .tflite, berdasarkan FlatBuffers. Saat dibuat, Interpreter memuat model ke memori melalui mmap, yang memberikan akses langsung ke data tanpa menyalin. Kemudian Interpreter mengalokasikan tensor berdasarkan deskripsi dari model dan siap untuk dijalankan.

Setiap instance Interpreter tidak thread-safe. Untuk menjalankan satu model secara paralel di beberapa thread, buat instance Interpreter terpisah dengan salinan model. Untuk panggilan berurutan dalam satu thread, instance Interpreter dapat digunakan kembali.

API interpreter di Android dan iOS

Di Android, Interpreter tersedia melalui Java API dalam paket org.tensorflow.lite.Interpreter. Metode utama — run(Object input, Object output) — menerima array multidimensi atau ByteBuffer. Untuk kontrol yang lebih halus, gunakan metode runForMultipleInputsOutputs() dan resizeInput().

Di iOS, Interpreter tersedia melalui Swift API dalam modul TensorFlowLite. Antarmuka dasar mirip dengan Android: inisialisasi melalui Interpreter.init(modelPath:), alokasi tensor melalui allocateTensors(), eksekusi melalui invoke(). Swift API mendukung Data dan MLMultiTensor sebagai tipe data masukan.

Perbandingan API antar platform

PlatformBahasaKelasMetode inferensi
AndroidJava / KotlinInterpreterrun(), runForMultipleInputsOutputs()
Android (native)C++InterpreterInvoke()
iOSSwift / Obj-CInterpreterinvoke()
Linux / PythonPythonInterpreterget_tensor(), invoke()

Konfigurasi delegat untuk percepatan perangkat keras

Delegat adalah komponen yang memindahkan eksekusi operasi ke perangkat keras khusus. GPU Delegate menggunakan OpenGL ES (Android) dan Metal (iOS) untuk mempercepat operasi grafis. NNAPI Delegate memindahkan eksekusi ke NPU, DSP atau GPU melalui Android Neural Networks API.

Core ML Delegate tersedia di iOS dan menerjemahkan operasi TFLite ke format Core ML. Menurut Apple ML Benchmarking, penggunaan Core ML Delegate di iPhone 15 Pro mempercepat inferensi hingga 4x dibandingkan CPU. Delegat mendukung operasi FP32 dan FP16.

XNNPACK Delegate adalah solusi universal untuk ARM CPU, dioptimalkan untuk prosesor seluler. Tidak memerlukan perangkat keras khusus dan mendukung INT8, FP16 dan FP32. Direkomendasikan sebagai delegat dasar yang diaktifkan di semua perangkat.

Manajemen memori dan tensor

Interpreter mengelola tensor melalui pool memori yang dialokasikan saat pemanggilan allocateTensors(). Ukuran pool ditentukan berdasarkan deskripsi model dalam file .tflite. Setelah alokasi, interpreter tidak mengalokasikan memori tambahan selama inferensi.

Untuk model dengan ukuran masukan dinamis gunakan resizeInput(). Metode ini mengalokasikan ulang memori untuk tensor masukan dengan mempertimbangkan ukuran baru. Setelah mengubah ukuran tensor masukan, mungkin diperlukan alokasi ulang melalui allocateTensors().

Saat bekerja dengan banyak model, penting untuk membebaskan sumber daya melalui close(). Interpreter yang tidak dibebaskan dapat menyebabkan kebocoran memori, terutama pada perangkat dengan RAM terbatas. Untuk iOS gunakan penghitungan referensi otomatis ARC, untuk Android — try-with-resources atau panggilan close() eksplisit.

Penanganan kesalahan dan debugging

Kesalahan paling umum saat bekerja dengan Interpreter — ketidakcocokan dimensi tensor. Jika data masukan tidak sesuai dengan bentuk yang diharapkan, Interpreter melempar IllegalArgumentException di Android atau runtime error di iOS. Periksa dimensi melalui inputTensorAt() dan outputTensorAt().

Masalah umum kedua — operator yang tidak didukung saat menggunakan delegat. Jika delegat tidak mendukung operator, Interpreter secara otomatis kembali ke CPU untuk operator tersebut. Untuk mendeteksi situasi seperti itu, aktifkan logging melalui setCancelled() atau periksa log TFLite.

TFLite menyediakan Benchmark Tool untuk profiling: pengukuran waktu setiap operator, konsumsi memori, perbandingan delegat. Benchmark Tool tersedia sebagai bagian dari TFLite Support Library dan dapat dijalankan langsung di perangkat.

Contoh inferensi melalui Interpreter

Contoh eksekusi model di Android dengan Java API menggunakan GPU Delegate. Interpreter dibuat dengan opsi yang mencakup delegat GPU. Setelah menjalankan inferensi, hasilnya dibaca dari tensor keluaran:

java
import org.tensorflow.lite.Interpreter;
import org.tensorflow.lite.gpu.GpuDelegate;
import java.nio.MappedByteBuffer;

MappedByteBuffer model = loadModelFile(context);
GpuDelegate gpu = new GpuDelegate();
Interpreter.Options opts = new Interpreter.Options().addDelegate(gpu);
Interpreter interpreter = new Interpreter.create(model, opts);

float[][] input = preprocessImage(bitmap);
float[][] output = new float[1][1000];
interpreter.run(input, output);

int bestClass = argmax(output[0]);
Log.d("TFLite", "Kelas atas: " + bestClass);

gpu.close();
interpreter.close();

Contoh eksekusi di Python untuk pengujian sebelum deployment. Python API TFLite memungkinkan memuat .tflite, menjalankan inferensi dan menampilkan hasil. Digunakan untuk debugging dan memeriksa akurasi model:

python
import tensorflow as tf
import numpy as np

# Muat model TFLite dari file
interpreter = tf.lite.Interpreter(model_path="model.tflite")
interpreter.allocate_tensors()

# Dapatkan detail tensor masukan dan keluaran
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()

# Siapkan data masukan acak untuk pengujian
input_data = np.random.randn(
    *input_details[0]["shape"]
).astype(np.float32)

interpreter.set_tensor(input_details[0]["index"], input_data)
interpreter.invoke()

output_data = interpreter.get_tensor(output_details[0]["index"])
print("Bentuk keluaran:", output_data.shape)

Pertanyaan yang sering diajukan

Berapa banyak memori yang digunakan TF Lite Interpreter?

Interpreter dasar untuk Android memakan sekitar 300 KB. Memori tambahan dialokasikan untuk tensor model dan tergantung pada ukuran data masukan, jumlah operator dan mode kuantisasi.

Bisakah Interpreter digunakan di beberapa thread?

Satu instance Interpreter tidak thread-safe. Untuk eksekusi paralel, buat beberapa instance dengan salinan model terpisah. Setiap instance menggunakan memorinya sendiri untuk tensor.

Bagaimana cara memeriksa delegat apa saja yang tersedia di perangkat?

Gunakan TFLite Support Library — kelas DelegatesApi. Panggil DelegatesApi.getAvailableDelegates() untuk mendapatkan daftar delegat yang tersedia di perangkat tertentu.

Apa yang harus dilakukan jika Interpreter melempar kesalahan saat memuat model?

Periksa integritas file .tflite melalui tf.lite.experimental.Analyzer. Pastikan model telah dikonversi untuk versi TFLite yang benar dan mendukung operasi yang tersedia di perangkat target.

Bagaimana cara mengubah ukuran tensor masukan setelah membuat Interpreter?

Gunakan metode resizeInput(int idx, int[] dims) di Java API atau resizeInput(at:to:) di Swift. Setelah mengubah ukuran, panggil allocateTensors() untuk mengalokasikan ulang memori.

Kesimpulan

  • TF Lite Interpreter — runtime minimalis untuk menjalankan model .tflite di perangkat seluler.
  • Interpreter memuat model melalui mmap, mengalokasikan tensor dan menjalankan grafik komputasi.
  • API tersedia di Java, C++, Swift, Objective-C dan Python dengan antarmuka yang seragam.
  • Delegat GPU, NNAPI dan Core ML mempercepat inferensi hingga 5x dibandingkan CPU.
  • Gunakan resizeInput() untuk model dengan ukuran data masukan dinamis.
  • Tutup Interpreter melalui close() untuk mencegah kebocoran memori.
  • Benchmark Tool membantu memprofilkan kinerja di perangkat nyata.

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga