TensorFlow Lite — bu Google tomonidan cheklangan hisoblash resurslariga ega mobil va o'rnatilgan qurilmalarda mashina o'rganish modellarini bajarish uchun ishlab chiqilgan TensorFlow framework-ining yengil versiyasidir. To'liq TensorFlow-dan farqli o'laroq, TFLite o'qitishni qo'llab-quvvatlamasdan tez inferens uchun optimallashtirilgan maxsus interpretator va .tflite formatidan foydalanadi. TensorFlow Lite Guide, 2025 ma'lumotlariga ko'ra, framework Android, iOS va Linux-da ishlaydi va 4 milliarddan ortiq qurilmalarda qo'llaniladi. TensorFlow Lite kvantlash, NNAPI, GPU va Core ML delegatlari orqali apparat tezlashtirishni qo'llab-quvvatlaydi.
Asosiy ma'lumotlar
TensorFlow Lite — cheklangan resursli qurilmalarda mashina o'rganish modellarini bajarish uchun ixtisoslashtirilgan ishga tushirish muhitidir. To'liq TensorFlow-dan farqli o'laroq, TFLite o'qitish va orqaga tarqalishni — faqat inferensni qo'llab-quvvatlamaydi. Bu kutubxonaning ikkilik hajmini minimal qilish imkonini beradi: Android-da asosiy interpretator uchun taxminan 300 KB.
TFLite arxitekturasi FlatBuffers-ga asoslangan .tflite formati atrofida qurilgan. FlatBuffers cheklangan xotiraga ega mobil qurilmalar uchun muhim bo'lgan, tahlil qilish bosqichisiz ma'lumotlarga to'g'ridan-to'g'ri kirishni ta'minlaydi. .tflite formatidagi model hisoblash grafi, og'irliklar va metama'lumotlarni yagona ikkilik faylda o'z ichiga oladi.
Google I/O 2024 ma'lumotlariga ko'ra, TFLite Google Photos, Gboard, YouTube va boshqa Google ilovalarida jami 4 milliarddan ortiq qurilmalarda qo'llaniladi. Framework barcha asosiy arxitekturalarni qo'llab-quvvatlaydi: CNN, RNN, LSTM, Transformer va delegatlar orqali maxsus operatsiyalar.
TFLite ishga tushirish muhiti to'rt komponentdan iborat. TFLite Converter TensorFlow-dan (SavedModel, Keras, ConcreteFunction) modelni qabul qiladi va uni ixtiyoriy optimallashtirish bilan .tflite formatiga o'zgartiradi. TFLite Interpreter .tflite-ni yuklaydi va tensorlar va xotirani boshqarib, inferensni bajaradi.
Delegatlar — operatsiyalarning bajarilishini ixtisoslashtirilgan uskunalarga o'tkazadigan komponentlardir. GPU Delegate OpenGL ES va Metal, NNAPI Delegate — Android Neural Networks API, Core ML Delegate — Apple Core ML dan foydalanadi. XNNPACK Delegate ARM CPU-da bajarishni optimallashtiradi. Har bir delegat ma'lum operatorlar to'plamini qo'llab-quvvatlaydi.
To'rtinchi komponent — Task Library, odatiy vazifalar uchun yuqori darajali API-larni taqdim etadi: tasvir tasnifi, ob'ektlarni aniqlash, segmentatsiya, NLU. Task Library Interpreter ustida ishlaydi va tensorlarni boshqarish tafsilotlarini yashiradi.
TFLite uch darajadagi kvantlashni qo'llab-quvvatlaydi. To'liq butun sonli INT8 kvantlash og'irliklar va aktivatsiyalarni FP32 dan 8-bitli butun sonlarga o'zgartiradi. Model hajmi 4 marta kamayadi, INT8 ni qo'llab-quvvatlovchi qurilmalarda inferens tezligi 3x gacha oshadi. FP16 kvantlash minimal aniqlik yo'qotilishi bilan hajmni ikki baravar kamaytiradi.
Dinamik kvantlash og'irliklarni INT8 da saqlaydi, lekin hisoblashlarni FP32 da bajaradi. Bu rejim aniqlikka sezgir modellar uchun mos keladi va sifatni saqlab, hajmni 4x gacha kamaytirishni ta'minlaydi. Google ML Performance Benchmarks ma'lumotlariga ko'ra, dinamik kvantlash NLP modellari uchun tavsiya etiladi.
| Rejim | Og'irlik turi | Aktivatsiya turi | Hajm kamayishi |
|---|---|---|---|
| FP32 (kvantlashsiz) | FP32 | FP32 | 1x |
| FP16 | FP16 | FP32 | 2x |
| Dinamik INT8 | INT8 | FP32 | 4x |
| To'liq INT8 | INT8 | INT8 | 4x |
Android-da asosiy tezlashtirish mexanizmi NNAPI Delegate bo'lib, u operatsiyalarning bajarilishini Android Neural Networks API orqali NPU, DSP yoki GPU-ga o'tkazadi. NNAPI Android 8.1+ bo'lgan qurilmalarda mavjud va INT8 va FP16 hisoblashlarni qo'llab-quvvatlaydi. Android uchun GPU Delegate OpenGL ES 3.1+ va Vulkan-dan foydalanadi.
iOS-da tezlashtirish Core ML Delegate orqali ta'minlanadi, u TFLite operatsiyalarini Core ML formatiga tarjima qiladi va ularni Apple Neural Engine-da bajaradi. Apple ML Benchmarking ma'lumotlariga ko'ra, Core ML Delegate-dan foydalanish iPhone 15 Pro da inferensni CPU bilan solishtirganda 4x gacha tezlashtiradi. iOS uchun GPU Delegate Metal Performance Shaders-dan foydalanadi.
XNNPACK Delegate — mobil protsessorlar uchun optimallashtirilgan ARM CPU uchun platformalararo yechimdir. XNNPACK FP32, FP16 va INT8 operatsiyalarini qo'llab-quvvatlaydi va maxsus uskuna talab qilmaydi. Barcha qurilmalar uchun asosiy delegat sifatida tavsiya etiladi.
Joylashtirish jarayoni uch qadamni o'z ichiga oladi. Birinchi — modelni TFLite Converter orqali .tflite ga o'tkazish. Ikkinchi — .tflite faylini ilova resurslariga qo'shish. Android uchun fayl assets-ga, iOS uchun Xcode orqali ilova bundle-iga joylashtiriladi. Uchinchi — Interpreter-ni ishga tushirish va inferensni bajarish.
Modellarni dinamik yangilash uchun Google Firebase ML Model Downloading yoki bulutdan yuklab olishning o'z mexanizmidan foydalanishni tavsiya qiladi. Yangilangan .tflite fayli mahalliy xotirada saqlanadi va keyingi ishga tushirishda Interpreter-ga yuklanadi.
Joylashtirishda .tflite faylining hajmini hisobga olish muhimdir. Google Play APK hajmini 200 MB bilan cheklaydi. 50 MB dan katta modellar uchun Android App Bundle dan foydalanish yoki modelni Play Asset Delivery orqali alohida yuklab olish tavsiya etiladi.
Android-da Java API bilan modelni yuklash va bajarish misoli. .tflite-ni assets-dan yuklash uchun Interpreter.create() va inferens uchun run() dan foydalaning. Kirish va chiqish ma'lumotlari ko'p o'lchovli massivlar yoki ByteBuffer sifatida uzatiladi:
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();
Apparat tezlashtirish uchun Android-da GPU Delegate dan foydalanish misoli. com.android.support:tensorflow-lite-gpu bog'liqligini qo'shing va Interpreter yaratishda delegatni ko'rsating:
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);
// Kirish ma'lumotlari bo'yicha inferensni bajarish
interpreter.run(input, output);
// Inferensdan so'ng delegat resurslarini bo'shatish
gpuDelegate.close();
interpreter.close();
Tez-tez so'raladigan savollar
TensorFlow — o'qitish va inferens uchun to'liq framework. TensorFlow Lite — faqat mobil qurilmalarda inferens uchun. TFLite .tflite formatidan foydalanadi va orqaga tarqalishni qo'llab-quvvatlamaydi.
GPU Delegate (OpenGL/Metal), NNAPI Delegate (Android), Core ML Delegate (iOS) va XNNPACK Delegate (ARM CPU) qo'llab-quvvatlanadi. Har bir delegat ma'lum bir uskuna turi uchun optimallashtirilgan.
Kvantlashdan foydalaning: FP16 hajmni 2x, INT8 — 4x kamaytiradi. Shuningdek, dinamik kvantlash, og'irliklarni kesish (weight pruning) va konvertatsiyadan oldin model distillash mavjud.
Ha, TFLite Model Maker va qurilmada o'qitish API orqali (eksperimental). Nozik sozlash (fine-tuning) va modellarni to'g'ridan-to'g'ri foydalanuvchi qurilmasida shaxsiylashtirish qo'llab-quvvatlanadi.
TFLite CNN, RNN, LSTM, Transformer, mobil arxitekturalarni (MobileNet, EfficientNet, YOLO, BERT) va maxsus operatsiyalarni qo'llab-quvvatlaydi. Cheklov — maqsadli delegatda mavjud operatorlar.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.