TensorFlow Lite — je odlehčená verze frameworku TensorFlow vyvinutá společností Google pro provádění modelů strojového učení na mobilních a vestavěných zařízeních s omezenými výpočetními prostředky. Na rozdíl od plného TensorFlow používá TFLite specializovaný interpret a formát .tflite optimalizovaný pro rychlou inferenci bez podpory učení. Podle TensorFlow Lite Guide, 2025 framework funguje na Android, iOS a Linux a je používán na více než 4 miliardách zařízení. TensorFlow Lite podporuje kvantizaci, hardwarovou akceleraci přes NNAPI, GPU a delegáty Core ML.
Hlavní body
TensorFlow Lite — je specializované běhové prostředí pro provádění modelů strojového učení na zařízeních s omezenými prostředky. Na rozdíl od plného TensorFlow TFLite nepodporuje učení a zpětnou propagaci — pouze inferenci. To umožňuje minimalizovat binární velikost knihovny: přibližně 300 KB pro základní interpret na Android.
Architektura TFLite je postavena kolem formátu .tflite, založeného na FlatBuffers. FlatBuffers poskytuje přímý přístup k datům bez fáze parsování, což je kritické pro mobilní zařízení s omezenou pamětí. Model ve formátu .tflite obsahuje výpočetní graf, váhy a metadata v jediném binárním souboru.
Podle Google I/O 2024 je TFLite používán v Google Photos, Gboard, YouTube a dalších aplikacích Google s celkovým publikem více než 4 miliard zařízení. Framework podporuje všechny hlavní architektury: CNN, RNN, LSTM, Transformer a vlastní operace prostřednictvím delegátů.
Běhové prostředí TFLite se skládá ze čtyř komponent. TFLite Converter přijímá model z TensorFlow (SavedModel, Keras, ConcreteFunction) a převádí jej do formátu .tflite s volitelnou optimalizací. TFLite Interpreter načítá .tflite a provádí inferenci, přičemž spravuje tenzory a paměť.
Delegáti — jsou komponenty, které přenášejí provádění operací na specializovaný hardware. GPU Delegate používá OpenGL ES a Metal, NNAPI Delegate — Android Neural Networks API, Core ML Delegate — Apple Core ML. XNNPACK Delegate optimalizuje provádění na ARM CPU. Každý delegát podporuje specifickou sadu operátorů.
Čtvrtou komponentou je Task Library, která poskytuje vysokourovňová API pro typické úlohy: klasifikaci obrázků, detekci objektů, segmentaci, NLU. Task Library pracuje nad Interpreterem a skrývá detaily správy tenzorů.
TFLite podporuje tři úrovně kvantizace. Plná celočíselná kvantizace INT8 převádí váhy a aktivace z FP32 na 8bitová celá čísla. Velikost modelu se zmenšuje 4krát a rychlost inference na zařízeních s podporou INT8 se zvyšuje až 3x. Kvantizace FP16 zmenšuje velikost na polovinu s minimální ztrátou přesnosti.
Dynamická kvantizace uchovává váhy v INT8, ale provádí výpočty ve FP32. Tento režim je vhodný pro modely citlivé na přesnost a poskytuje zmenšení velikosti až 4x při zachování kvality. Podle Google ML Performance Benchmarks je dynamická kvantizace doporučena pro NLP modely.
| Režim | Typ vah | Typ aktivací | Zmenšení velikosti |
|---|---|---|---|
| FP32 (bez kvantizace) | FP32 | FP32 | 1x |
| FP16 | FP16 | FP32 | 2x |
| Dynamický INT8 | INT8 | FP32 | 4x |
| Plný INT8 | INT8 | INT8 | 4x |
Na Android je hlavním mechanismem akcelerace NNAPI Delegate, který přenáší provádění operací na NPU, DSP nebo GPU přes Android Neural Networks API. NNAPI je dostupný na zařízeních s Android 8.1+ a podporuje výpočty INT8 a FP16. GPU Delegate pro Android používá OpenGL ES 3.1+ a Vulkan.
Na iOS je akcelerace zajištěna prostřednictvím Core ML Delegate, který překládá operace TFLite do formátu Core ML a provádí je na Apple Neural Engine. Podle Apple ML Benchmarking použití Core ML Delegate urychluje inferenci na iPhone 15 Pro až 4x ve srovnání s CPU. GPU Delegate pro iOS používá Metal Performance Shaders.
XNNPACK Delegate — je cross-platform řešení pro ARM CPU optimalizované pro mobilní procesory. XNNPACK podporuje operace FP32, FP16 a INT8 a nevyžaduje specializovaný hardware. Je doporučen jako výchozí delegát pro všechna zařízení.
Proces nasazení zahrnuje tři kroky. První — konverze modelu do .tflite přes TFLite Converter. Druhý — zahrnutí .tflite souboru do zdrojů aplikace. Pro Android je soubor umístěn do assets, pro iOS — do bundle aplikace přes Xcode. Třetí — inicializace Interpreteru a provedení inference.
Pro dynamickou aktualizaci modelů Google doporučuje používat Firebase ML Model Downloading nebo vlastní mechanismus stahování z cloudu. Aktualizovaný .tflite soubor je uložen v lokálním úložišti a načten do Interpreteru při příštím spuštění.
Při nasazení je důležité zohlednit velikost .tflite souboru. Google Play omezuje velikost APK na 200 MB. Pro modely větší než 50 MB se doporučuje použít Android App Bundle nebo stáhnout model samostatně přes Play Asset Delivery.
Příklad načtení a provedení modelu na Android s Java API. Použijte Interpreter.create() pro načtení .tflite z assets a run() pro inferenci. Vstupní a výstupní data jsou předávána jako vícerozměrná pole nebo 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();
Příklad použití GPU Delegate na Android pro hardwarovou akceleraci. Přidejte závislost com.android.support:tensorflow-lite-gpu a určete delegáta při vytváření Interpreteru:
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);
// Spusťte inferenci na vstupních datech
interpreter.run(input, output);
// Uvolněte prostředky delegáta po inferenci
gpuDelegate.close();
interpreter.close();
Často kladené otázky
TensorFlow — plný framework pro učení a inferenci. TensorFlow Lite — pouze pro inferenci na mobilních zařízeních. TFLite používá formát .tflite a nepodporuje zpětnou propagaci.
Podporováni jsou GPU Delegate (OpenGL/Metal), NNAPI Delegate (Android), Core ML Delegate (iOS) a XNNPACK Delegate (ARM CPU). Každý delegát je optimalizován pro konkrétní typ hardwaru.
Použijte kvantizaci: FP16 zmenšuje velikost 2x, INT8 — 4x. K dispozici je také dynamická kvantizace, prořezávání vah (weight pruning) a destilace modelu před konverzí.
Ano, prostřednictvím TFLite Model Maker a API pro učení na zařízení (experimentální). Podporováno je dolaďování (fine-tuning) a personalizace modelů přímo na zařízení uživatele.
TFLite podporuje CNN, RNN, LSTM, Transformer, mobilní architektury (MobileNet, EfficientNet, YOLO, BERT) a vlastní operace. Omezením jsou dostupné operátory v cílovém delegátovi.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také