TF Lite Delegate: nima, GPU va NNAPI delegatlari

Muallif: IT Sectr Nashr etilgan: 2026-07-18 O'qish vaqti: 10 daq

TF Lite Delegate — TensorFlow Lite komponenti bo'lib, neyron tarmoq operatsiyalarini ixtisoslashtirilgan apparat ta'minotiga yo'naltiradi: GPU, NPU, DSP yoki optimallashtirilgan CPU. Delegatsiz model CPUda to'liq moslik rejimida ishlaydi — sekin, ammo bashorat qilish mumkin. Delegate chip va modelga qarab inferenceni 3–10 marta tezlashtiradi. TensorFlow, 2025 ma'lumotlariga ko'ra, GPU va NNAPI delegatlari inference kechikishini 60–90% ga kamaytiradi va aniqlik sezilarli darajada yo'qolmaydi.

Asosiy fikrlar

  • TF Lite Delegate — TensorFlow Lite modellari uchun apparat tezlashtirish qatlami
  • GPU Delegate — suzuvchi nuqta operatsiyalarini OpenGL/Metal orqali tezlashtiradi
  • NNAPI Delegate — NPU va DSP uchun Android Neural Networks API dan foydalanadi
  • XNNPACK Delegate — SIMD ko'rsatmalari (ARM NEON, SSE) orqali CPU optimallashtirish
  • Core ML Delegate — iOS da Apple Neural Engine bilan mahalliy integratsiya

TF Lite Delegate nima: arxitektura va ishlash printsipi

TF Lite Delegate — TensorFlow Lite Runtime va qurilmaning apparat tezlatgichi o'rtasidagi dasturiy adapterdir. Delegate model grafi operatsiyalarini (konvolyutsiya, pooling, matritsa ko'paytirish) tutib oladi va ularni CPU o'rniga ixtisoslashtirilgan hisoblash qurilmasida bajaradi. Agar delegate ma'lum bir operatsiyani qo'llab-quvvatlamasa, u CPUda bajariladi — bu partial delegation deb ataladi.

TF Lite Delegate arxitekturasi SimpleDelegate API interfeysi va C++ tilidagi TfLiteDelegate strukturasi atrofida qurilgan. Har bir delegate graf tugunlarini topshirish, xotirani ajratish va maqsadli qurilmada bajarish usullarini amalga oshiradi. Dasturchi Invoke chaqiruvidan oldin delegate-ni Interpreter::ModifyGraphWithDelegate orqali ulaydi. TensorFlow Guide ga ko'ra, delegate avtomatik ravishda modelning barcha qo'llab-quvvatlanadigan operatsiyalariga qo'llaniladi.

Moslikni tekshirish — majburiy bosqich. Barcha operatsiyalar har bir delegate tomonidan qo'llab-quvvatlanmaydi. TensorFlow Lite Delegation Compatibility Check vositasini taqdim etadi: modelni delegate bilan ishga tushiring va nechta operatsiya (ops) topshirilganligini tekshiring. Agar 80% dan kam bo'lsa — boshqa delegate tanlash yoki CPUda qolish yaxshiroq. TensorFlow (2025) ma'lumotlariga ko'ra, GPU Delegate 45 operatsiyani, NNAPI esa 60+ operatsiyani qo'llab-quvvatlaydi.

IT Sectr loyihalarida biz iOS uchun GPU delegatlaridan va Android uchun XNNPACK dan ichki moslik tekshiruvi bilan foydalanamiz: model barcha delegatlarda sinovdan o'tkaziladi, topshirish to'liqligi kamida 90% bo'lgan eng tezisi tanlanadi.

kotlin
// Android da GPU Delegate ulanishi
val gpuDelegate = GpuDelegate()
val options = Interpreter.Options().apply {
    addDelegate(gpuDelegate)
    setNumThreads(4)
}
val interpreter = Interpreter(modelBuffer, options)
interpreter.run(input, output)
gpuDelegate.close()

Topshirilgan operatsiyalarni tekshirish — Interpreter orqali moslikni nazorat qilish. Standart bo'yicha, delegate qo'llab-quvvatlaydigan barcha operatsiyalarni qabul qiladi. Disk raskadrovka uchun topshirilgan tugunlar sonini jurnallashdan foydalaning. Agar model maxsus operatsiyalarni (custom ops) o'z ichiga olsa, delegate ularni tezlashtirmaydi, lekin buzmaydi ham — ular CPUda bajariladi.

kotlin
// Topshirilgan operatsiyalar sonini tekshiring
val delegateCount = interpreter.getDelegateOpsCount(gpuDelegate)
val totalNodes = interpreter.getNodesCount()
Log.d("TFLite", "Topshirildi: $delegateCount / $totalNodes")
if (delegateCount < totalNodes * 0.8) {
    // 80% chegarasi — boshqa delegate tanlang
}

GPU Delegate: grafik protsessorda tezlashtirish

GPU Delegate — modelni OpenGL ES 3.1+ (Android) yoki Metal (iOS) orqali GPUda bajarish uchun TensorFlow Lite delegati. Grafik protsessorlar parallel matritsa operatsiyalari uchun optimallashtirilgan — Core ML va konvolyutsion neyron tarmoqlar (CNN) eng katta o'sishni oladi. GPU Delegate MobileNet, EfficientNet, Inception kabi modellar uchun inference kechikishini 4–8 marta kamaytiradi.

GPU Delegate cheklovlari: barcha operatsiyalarni qo'llab-quvvatlamaydi (TF Lite dagi ~120 dan faqat 45 tasi), OpenGL ES 3.1 yoki Metal talab qiladi, CPUdan ko'proq energiya sarflaydi. GPU mobil stsenariylarda batch size > 1 uchun samarasiz. TensorFlow benchmarklariga (2025) ko'ra, Pixel 8 qurilmasida Adreno 740 GPU bilan MobileNetV2 modeli GPUda 4.2 ms da, CPUda 18.7 ms da ishlaydi — 4.4x tezlashish.

GPU Delegate sozlamalari aniqlik tanlovini o'z ichiga oladi: float16 aniqlikni kamaytiradi, lekin inferenceni 30–40% tezlashtiradi va sifat sezilarli darajada yo'qolmaydi (ko'pchilik vazifalar uchun). GPUda maksimal ishlash uchun allow_precision_loss=true ni yoqing. Yuqori aniqlik talab qiladigan vazifalar uchun (tibbiyot, moliya) float32 dan foydalaning.

kotlin
// Aniqlik optimallashtirishi bilan GPU Delegate
val gpuOptions = GpuDelegateFactory.Options().apply {
    isPrecisionLossAllowed = true
    inferencePreference = GpuDelegateFactory.Options.InferencePreference.SUSTAINED_SPEED
}
val delegate = GpuDelegateFactory.create(gpuOptions)

iOS da GPU Delegate Metal Performance Shaders dan Metal Delegate orqali foydalanadi. iOS da delegate Apple Neural Engine uchun Core ML delegate yoki to'g'ridan-to'g'ri Metal orqali ishlaydi. Apple A17 Pro MobileNetV2 ni 1.3 ms da bajaradi — CPUdan 6 marta tez. Metal delegate iOS 12 dan boshlab mavjud va A7+ chipiga ega barcha qurilmalarni qo'llab-quvvatlaydi.

NNAPI Delegate: Android da Neural Networks API orqali neyron tarmoqlar

NNAPI Delegate (Android Neural Networks API) — Android NN HAL (Hardware Abstraction Layer) orqali apparat tezlashtirishdan foydalanadigan TF Lite delegati. NNAPI model operatsiyalarini qurilmaning mavjud drayverlariga qarab NPU, DSP yoki GPU ga yo'naltiradi. Android 8.1+ (API 27+) da qo'llab-quvvatlanadi va Android uchun tavsiya etilgan standart delegatdir.

NNAPI ning afzalligi — avtomatik tezlatgich tanlash. Agar qurilmada NPU bo'lsa (Qualcomm Hexagon, MediaTek APU, Samsung NPU), NNAPI operatsiyalarni unga topshiradi. Agar NPU bo'lmasa — OpenCL orqali GPUga. Agar GPU ham qo'llab-quvvatlamasa — DSP optimallashtirishlari bilan CPUga. Dasturchi aniq tezlatgichni ko'rsatmaydi — NNAPI optimalini tanlaydi. Google I/O 2024 ma'lumotlariga ko'ra, Snapdragon 8 Gen 3 da NNAPI delegate LLM modellarini 12 marta tezlashtiradi.

NNAPI cheklovlari: turli qurilmalarda notekis qo'llab-quvvatlash. Eski qurilmalar (Android 8.1) cheklangan drayverlar to'plamiga ega. Kirin protsessorli Huawei Google Services orqali NNAPI ni qo'llab-quvvatlamaydi — GPU Delegate dan foydalaning. Kafolatlangan moslik uchun Google NNAPI Delegate ni birinchi tanlov sifatida, GPU yoki XNNPACK ga fallback bilan tavsiya qiladi.

kotlin
// CPU fallback bilan NNAPI Delegate
val nnApiOptions = NnApiDelegate.Options().apply {
    acceleratorName = null // null = avtomatik tanlash
    allowFp16 = true
    executionPreference = NnApiDelegate.ExecutionPreference.SUSTAINED_SPEED
}
val delegate = NnApiDelegate(nnApiOptions)
val interpreter = Interpreter(model, Interpreter.Options().apply {
    addDelegate(delegate)
    setNumThreads(4)
})

NNAPI Accelerator Name — tezlatgichni aniq tanlash uchun parametr. Agar null uzatilsa, NNAPI avtomatik tanlaydi. Sinov uchun aniq ko'rsating: "qti", "google-edgetpu", "mediatek". Mavjud tezlatgichlar ro'yxati NnApiDelegate.getAvailableAccelerators() orqali ko'rsatiladi. Production da moslik chegarasi bilan avtotanlashdan foydalaning.

XNNPACK Delegate: SIMD orqali CPU optimallashtirish

XNNPACK Delegate — SIMD ko'rsatmalari (ARM NEON, SSE, AVX) orqali optimallashtirilgan CPU bajarish uchun TensorFlow Lite delegati. XNNPACK GPU yoki NPU talab qilmaydi — bu sof CPU delegati, lekin SIMD, operator fusion, memory pre-fetching va quantized inference (INT8) tufayli 2–4x tezlashish bilan. Ajratilgan NPU bo'lmagan qurilmalar yoki kafolatlangan moslik kerak bo'lganda ideal.

XNNPACK Google tomonidan CPU uchun standart TF Lite delegati sifatida ishlab chiqilgan (TFLite Runtime ga standart sifatida kiritilgan). 90+ operatsiyani qo'llab-quvvatlaydi — GPU yoki NNAPI dan ko'p. XNNPACK ayniqsa kvantlangan modellar (INT8, INT16) uchun samarali: operatsiyalar float32 versiyasidan 2–3 marta tez bajariladi. Google benchmarklariga (2025) ko'ra, XNNPACK INT8 MobileNetV2 ni bazaviy CPU ga nisbatan 2.8x tezlashtiradi.

XNNPACK vs GPU: NPU bo'lmagan qurilmalarda XNNPACK ko'pincha kichik batch (1–4) uchun GPU Delegate dan tezroq — GPU CPU va GPU o'rtasida ma'lumot uzatish qo'shimcha yukiga ega. XNNPACK bir xil CPU manzil fazosida ishlaydi — xotira nusxalanishi yo'q. 5MB gacha bo'lgan modellar uchun XNNPACK GPU dan tezroq bo'lishi mumkin. Katta CNN modellari uchun GPU parallellik hisobiga yutadi.

kotlin
// XNNPACK Delegate TFLite 2.18+ da standart yoqilgan
// XnnpackDelegate orqali aniq foydalanish
val xnnpackOptions = XnnpackDelegate.Options().apply {
    numThreads = 4
    flags = XnnpackDelegate.Flags.USE_XNNPACK
}
val delegate = XnnpackDelegate(xnnpackOptions)
val interpreter = Interpreter(modelBuffer, Interpreter.Options().apply {
    addDelegate(delegate)
})

XNNPACK Flags: USE_XNNPACK — majburiy delegate yoqish, FLUSH_TO_ZERO — tezlashtirish uchun denormalizatsiyalangan sonlarni qayta ishlash, ENABLE_XNNPACK_SHAPES — dinamik kirish o'lchamlari. Maksimal moslik uchun standart variantlardan foydalaning. Eski qurilmalarda xatolar yuzaga kelsa, XNNPACK ni o'chiring — model hali ham CPUda ishlaydi, lekin sekinroq.

Core ML va Metal Delegate: iOS da tezlashtirish

Core ML Delegate — Apple Core ML Framework dan foydalanadigan iOS uchun TensorFlow Lite delegati. Core ML TF Lite modelini .mlmodel formatiga o'zgartiradi va Apple Neural Engine (ANE), GPU (Metal) yoki CPU da bajaradi. Apple A17 Pro va M3 ajratilgan Neural Engine ga ega va Core ML uni avtomatik ishlatadi. Core ML Delegate zamonaviy iOS qurilmalarida inferenceni CPU ga nisbatan 5–10 marta tezlashtiradi.

iOS da Core ML flex delegate (Core ML uchun mavjud operatsiyalarni dinamik topshirish) va full model conversion (butun modelni .mlmodel ga o'zgartirish) ni qo'llab-quvvatlaydi. Apple flex delegate ni tavsiya qiladi — tezroq, chunki oldindan konvertatsiyasiz ish vaqtida ishlaydi. Core ML Delegate float32, float16 va kvantlangan modellarni (INT8) qo'llab-quvvatlaydi.

Metal Delegate — to'g'ridan-to'g'ri Metal Performance Shaders bilan ishlaydigan past darajadagi delegat. Core ML alohida operatsiyalarni qo'llab-quvvatlamaganda Metal dan foydalaning. Metal Delegate GPU ustidan maksimal nazorat beradi, lekin ko'proq kod talab qiladi. Apple (WWDC 2024) ma'lumotlariga ko'ra, mahalliy Swift modellari uchun Metal Delegate konvertatsiya qo'shimcha yuki yo'qligi sababli Core ML dan 15–20% tezroq bo'lishi mumkin.

swift
// TFLite Swift API orqali iOS da Core ML Delegate
import TensorFlowLite

let coreMLDelegate = CoreMLDelegate()
var options = InterpreterOptions()
options.addDelegate(coreMLDelegate)

let interpreter = try Interpreter(modelPath: modelPath, options: options)
try interpreter.invoke(at: 0)

Core ML va Metal o'rtasida tanlov: Core ML — production uchun, Metal — chekka holatlar uchun. Core ML NE xotirasini avtomatik boshqaradi, CPU ga tushishni (fallback) qo'llab-quvvatlaydi va qo'lda konvertatsiyani talab qilmaydi. Metal buferlar ustidan nazorat beradi va maxsus operatsiyalar uchun mos keladi. IT Sectr loyihalarida biz barcha iOS modellari uchun Core ML Delegate dan, Metal dan esa faqat real vaqt videoanalitikasi vazifalari uchun foydalanamiz.

Loyiha uchun delegatni qanday tanlash

TF Lite Delegate tanlovi maqsadli platformaga, modelga va kechikish talablariga bog'liq. Universal eng yaxshi delegate mavjud emas — har birining kuchli va zaif tomonlari bor. Optimal strategiya: barcha mavjud delegatlarni maqsadli qurilmada sinab ko'ring va minimal tez yetarlisini tanlang — eng tezini emas, balki minimal yetarlisini.

DelegatePlatformaTezlashtirishMoslik
GPUAndroid, iOS4–8x45 operatsiya
NNAPIAndroid 8.1+3–12x60+ operatsiya
XNNPACKAndroid, iOS2–4x90+ operatsiya
Core MLiOS 12+5–10x50+ operatsiya

Tanlov bo'yicha tavsiyalar: NPU li Android uchun (Snapdragon 8 Gen 2+, Dimensity 9000+) — NNAPI Delegate. NPU siz Android uchun — XNNPACK Delegate (standart). iOS uchun — Core ML Delegate. Platformalararo loyihalar uchun strategiyadan foydalaning: Android da NNAPI, iOS da Core ML, fallback sifatida XNNPACK. GPU Delegate — NNAPI mavjud bo'lmaganda va XNNPACK yetarlicha tez bo'lmaganda.

Kechikishni sinovdan o'tkazish — tanlovning majburiy bosqichi. Minimal haroratda (qurilma sovuq) va 5 daqiqa uzluksiz ishdan so'ng (termal sozlash) inferenceni o'lchang. GPU va NNAPI qizdirilganda ishlashni pasaytirishi mumkin. XNNPACK (CPU) kamroq azoblanadi. Qurilmangizda barcha delegatlarning avtomatik sinovi uchun TensorFlow Lite Benchmark Tool dan foydalaning.

kotlin
// Delegate tanlash strategiyasi
fun selectDelegate(): TfLiteDelegate {
    return when {
        NnApiDelegate.getAvailableAccelerators()?.isNotEmpty == true ->
            NnApiDelegate()
        GpuDelegateFactory.isGpuDelegateAvailable() ->
            GpuDelegate()
        else -> XnnpackDelegate()
    }
}

Fallback strategiyasi — modelni istisnosiz yuklang: agar delegate qo'llab-quvvatlanmasa, CPU da ishga tushiring. TensorFlow Lite delegate yaratishda xato bo'lganda IllegalArgumentException ni chiqaradi. Delegate yaratilishini try-catch ga o'rab oling va xato bo'lganda modelni delegatsiz ishga tushiring. Sekin, lekin ishlaydigan AI foydalanuvchi uchun xatodan yaxshiroq.

Tez-tez beriladigan savollar

TF Lite Delegate oddiy so'zlar bilan nima?

TF Lite Delegate — mobil qurilmada neyron tarmoqlar uchun tezlatgichdir. Modelni CPU da sekin bajarish o'rniga, delegate hisob-kitoblarni GPU ga yoki maxsus neyrochipga (NPU) yuboradi. Tasavvur qiling, CPU universal asbob, delegate esa aniq vazifalar uchun maxsus mashina: xuddi shu narsani bajaradi, lekin bir necha marta tezroq.

Qaysi TF Lite delegate eng tez?

Eng tez delegate qurilmaga bog'liq. Neural Engine (Apple A17 Pro, Snapdragon 8 Gen 3) bo'lgan qurilmalarda — NNAPI (Android) yoki Core ML (iOS) 10–12x gacha maksimal tezlashtirish beradi. GPU Delegate tezlik bo'yicha ikkinchi. XNNPACK (CPU) delegatlarning eng sekin, lekin eng mosidir. NPU bo'lmagan qurilmalarda XNNPACK yoki GPU optimal bo'lishi mumkin.

TF Lite Delegate barcha operatsiyalarni qo'llab-quvvatlaydimi?

Yo'q, har bir delegate cheklangan operatsiyalar to'plamini qo'llab-quvvatlaydi. GPU Delegate — 45 operatsiya, NNAPI — 60+, XNNPACK — 90+. Qo'llab-quvvatlanmaydigan operatsiyalar CPU da bajariladi (partial delegation). Maxsus operatsiyalar (custom ops) uchun delegate qo'llanilmaydi. Ishlatishdan oldin getDelegateOpsCount orqali moslikni tekshiring — agar tugunlarning 80% dan kamrog'i topshirilgan bo'lsa, boshqa delegate tanlang.

Android da TF Lite Delegate ni qanday ulash mumkin?

build.gradle ga bog'liqlik qo'shing: implementation 'org.tensorflow:tensorflow-lite-gpu-delegate:+' yoki 'org.tensorflow:tensorflow-lite:x.x.x' (XNNPACK ichki). Delegate yarating (GpuDelegate(), NnApiDelegate(), XnnpackDelegate()) va Interpreter.Options.addDelegate() ga uzating. Interpretatorni ishga tushiring — delegate avtomatik qo'llaniladi. Bajarishdan so'ng delegate ni close() orqali yoping.

Bir vaqtning o'zida bir nechta delegate ishlatish mumkinmi?

Ha, TF Lite multiple delegates ni qo'llab-quvvatlaydi — ular ketma-ket qo'llaniladi. Interpretator operatsiyani birinchi delegate ga topshirishga harakat qiladi, keyin ikkinchisiga va hokazo. Agar hech bir delegate operatsiyani qo'llab-quvvatlamasa — CPU da bajariladi. Bu fallback uchun foydali: avval NNAPI, keyin GPU, keyin XNNPACK. Qo'shish tartibi ustuvorlikka ta'sir qiladi.

Xulosa

  • TF Lite Delegate — mobil qurilmalarda TensorFlow Lite modellari uchun apparat tezlatgichi
  • GPU Delegate — OpenGL ES (Android) yoki Metal (iOS) orqali tezlashtirish, CPU dan 4–8x tez
  • NNAPI Delegate — Android Neural Networks API orqali, NPU/DSP/GPU ishlatadi, 3–12x
  • XNNPACK Delegate — SIMD orqali CPU optimallashtirish, 2–4x, maksimal moslik (90+ ops)
  • Core ML Delegate — iOS tezlashtirish Neural Engine va Metal orqali, 5–10x
  • Delegate tanlovi — maqsadli qurilmada sinab ko'ring, CPU ga fallback ishlating
  • Partial delegation — qo'llab-quvvatlanmaydigan operatsiyalar avtomatik CPU da bajariladi

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.

Loyihani muhokama qilish

Shuningdek o'qing