.tflite — Google-un FlatBuffers texnologiyasına əsaslanan TensorFlow Lite model faylının ikili formatıdır. Format məhdud resurslara malik mobil, quraşdırılmış və edge cihazlarında səmərəli inferensiya üçün optimallaşdırılıb. Digər serializasiya formatlarından fərqli olaraq, FlatBuffers məlumatlara birbaşa girişi təmin edir və modelin sürətli işə salınması üçün vacib olan parsinq və kopyalama mərhələsini aradan qaldırır. TensorFlow Lite Converter Guide, 2025-ə əsasən, .tflite faylı hesablama qrafiki, kvantlaşdırılmış və ya tam dəqiqlikli çəkilər və interperetator üçün metadatalar ehtiva edir. .tflite Google ekosistemində on-device ML üçün standart formatdır.
Əsas məqamlar
.tflite — yaddaşı və hesablama gücü məhdud olan cihazlarda inferensiya üçün optimallaşdırılmış maşın öyrənmə modelinin serializasiya olunmuş təsviridir. Qrafiki protobuf-da saxlayan və yükləmək üçün əhəmiyyətli resurs tələb edən SavedModel formatından fərqli olaraq, .tflite FlatBuffers — məlumatlara kopyalanmadan birbaşa giriş imkanı verən serializasiya kitabxanasından istifadə edir.
.tflite formatı mobil platformaların xüsusiyyətləri nəzərə alınmaqla hazırlanmışdır: yükləmə zamanı minimal yaddaş sərfiyyatı, sürətli başlanğıc, kvantlaşdırılmış çəkilərin dəstəyi. .tflite faylı təlimi deyil, yalnız inferensiyanı dəstəkləyir. Bu, tam TensorFlow formatlarından prinsipial fərqdir və iş vaxtı mühitinin ölçüsünü əhəmiyyətli dərəcədə azaltmağa imkan verir.
Google Research, 2024 məlumatlarına görə, INT8 kvantlaşdırması ilə .tflite formatındakı modellər FP32 formatındakı analoji modellərdən 60% daha sürətli yüklənir və inferensiya zamanı 40% daha az operativ yaddaş sərf edir.
.tflite faylı FlatBuffers sxemi üzrə təşkil olunmuş bir neçə bölmədən ibarətdir. Əsas bölmə — hesablama qrafikini (SubGraph), operatorlar siyahısını (OperatorCodes) və çəkilərlə buferləri ehtiva edən Model-dir. Hər bir SubGraph tensorlar, operatorlar, giriş və çıxış indekslərini ehtiva edir.
OperatorCodes bölməsi modeldə istifadə olunan bütün operatorların identifikatorlarını ehtiva edir — Conv2D, DepthwiseConv2D, FullyConnected, Softmax və s. Hər bir operatorun BuiltinOperator-un əvvəlcədən təyin edilmiş siyahısından kodu var. Əgər model siyahıda olmayan əməliyyatları ehtiva edirsə, onlar Custom olaraq qeyd olunur və deleqat və ya fərdi operator vasitəsilə icra tələb edir.
Buffers bölməsi model çəkilərinin ikili məlumatlarını ehtiva edir. Kvantlaşdırma rejimindən asılı olaraq çəkilər FP32, FP16, INT8 və ya miqyaslama parametrləri ilə kvantlaşdırılmış formatda saxlanıla bilər. Buferlər mmap mexanizmi vasitəsilə birbaşa yaddaşa proyeksiya olunur ki, bu da əlavə kopyalamanı aradan qaldırır.
| Bölmə | Təyinat |
|---|---|
| Model | Kök strukturu, versiya, təsvir |
| SubGraph | Hesablama qrafiki: tensorlar, operatorlar, girişlər/çıxışlar |
| OperatorCodes | İstifadə olunan operatorların siyahısı |
| Buffers | Model çəkilərinin ikili məlumatları |
| Metadata | Metadatalar: versiya, müəllif, təsvir |
| SignatureDef | API üçün adlandırılmış giriş və çıxışlar |
.tflite üç kvantlaşdırma rejimini dəstəkləyir. Tam tam ədədli INT8 kvantlaşdırması — çəkilər və aktivasiyalar 8-bitli tam ədədlərlə təmsil olunur. Konvertasiya üçün aktivasiya diapazonlarının kalibrasiyası üçün reprezentativ məlumat dəsti tələb olunur. Model ölçüsü 4 dəfə azalır.
FP16 kvantlaşdırması — çəkilər 16-bitli üzən nöqtəli ədədlərə çevrilir. Bu rejim kalibrasiya tələb etmir və minimal dəqiqlik itkisi verir. Aktivasiyalar FP32-də qalır. Model ölçüsü 2 dəfə azalır. GPU və NPU-da FP16 dəstəyi olan cihazlar üçün tövsiyə olunur.
Dinamik kvantlaşdırma — çəkilər INT8-ə konvertasiya olunur, lakin aktivasiyalar FP32-də hesablanır. Model ölçüsü 4 dəfə azalır, lakin dəqiqlik tam INT8-dən daha yüksək qalır. Google ML Performance Benchmarks-a görə, bu rejim NLP modelləri və dəqiqliyə yüksək həssaslığı olan modellər üçün optimaldır.
Modeli .tflite-ə konvertasiya etmək üçün Python API tf.lite.TFLiteConverter vasitəsilə əlçatan olan TensorFlow komponenti TFLite Converter istifadə olunur. Converter üç mənbəni dəstəkləyir: SavedModel, Keras H5 və ConcreteFunction. Keras modelinin konvertasiyasının minimal nümunəsi:
import tensorflow as tf
# Təlim keçmiş Keras modelini fayldan yüklə
model = tf.keras.models.load_model("my_model.h5")
# Dinamik kvantlaşdırma ilə .tflite-ə konvertasiya et
converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_model = converter.convert()
# Konvertasiya olunmuş modeli .tflite faylına yaz
with open("model.tflite", "wb") as f:
f.write(tflite_model)
Tam INT8 kvantlaşdırması ilə konvertasiya üçün kalibrasiya məlumat dəsti tələb olunur. Aktivasiya diapazonlarını təyin etmək üçün representative_dataset təqdim edin:
converter = tf.lite.TFLiteConverter.from_saved_model("saved_model")
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.representative_dataset = representative_dataset
converter.target_spec.supported_ops = [
tf.lite.OpsSet.TFLITE_BUILTINS_INT8
]
converter.inference_input_type = tf.uint8
converter.inference_output_type = tf.uint8
tflite_quant_model = converter.convert()
Google .tflite modellərinin təhlili və optimallaşdırılması üçün alətlər dəsti təqdim edir. TFLite Benchmark Tool cihazda inferensiya vaxtını ölçür və hər bir operator üzrə statistika göstərir. TFLite Model Inspector hesablama qrafikini vizuallaşdırır və tensor ölçülərini göstərir.
Netron — ONNX, Core ML və PyTorch ilə yanaşı .tflite-ni dəstəkləyən çoxplatformalı model vizuallaşdırıcısı. Netron qrafikin strukturunu, hər bir operatorun parametrlərini və tensorlar arasında əlaqələri göstərir. Konvertasiya zamanı debug üçün faydalıdır.
TFLite Metadata API .tflite faylına metadatalar əlavə etməyə imkan verir: model təsviri, giriş məlumatlarının formatı, ölçü vahidləri, müəllif haqqında məlumat. Metadatalar Task Library tərəfindən preprosesinq və postprosesinqin avtomatik konfiqurasiyası üçün istifadə olunur.
iOS-da Swift API ilə .tflite modelinin yüklənməsi nümunəsi. TFLite Swift API modeli bundle-dan yükləmək və inferensiya yerinə yetirmək üçün Interpreter təqdim edir. Core ML Delegate vasitəsilə aparat sürətləndirilməsi üçün deleqat təyin edin:
import TensorFlowLite
guard let modelPath = Bundle.main.path(
forResource: "model", ofType: "tflite"
) else { return }
let interpreter = try Interpreter.init(modelPath: modelPath)
try interpreter.allocateTensors()
// Model üçün giriş məlumatlarını hazırla
let inputData = Data.init(count: 1 * 224 * 224 * 3)
try interpreter.copy(inputData, toInputAt: 0)
// Model inferensiyasını icra et
try interpreter.invoke()
// Çıxış tensor məlumatlarını oxu
let outputTensor = try interpreter.output(at: 0)
let results = outputTensor.data.withUnsafeBytes {
Array($0.bindMemory(to: Float32.self))
}
Tez-tez verilən suallar
.tflite faylı ikili FlatBuffers formatına malikdir və mətn redaktorunda oxunmur. Göstərmək üçün modelin strukturunu vizuallaşdıran Netron və ya TFLite Model Inspector-dan istifadə edin.
Python-da tf.lite.experimental.Analyzer.analyze(model_path) və ya --print_model_details flagı ilə TFLite Benchmark Tool istifadə edin. Alətlər parametrlərlə birlikdə operatorların tam siyahısını göstərir.
.tflite mobil cihazlarda inferensiya üçün optimallaşdırılıb və FlatBuffers istifadə edir. ONNX — protobuf-da serializasiya ilə freymvorklar arasında model mübadiləsi üçün universal formatdır. TFLite daxili kvantlaşdırma dəstəyinə malikdir.
Xeyr, kvantlaşdırma və optimallaşdırma zamanı məlumat itkisi səbəbindən əks konvertasiya mövcud deyil. Orijinal TensorFlow modeli sonrakı təlim və ya dəyişikliklər üçün ayrıca saxlanılmalıdır.
Python-da TFLite Metadata Writer API istifadə edin. API Task Library üçün təsvir, giriş/çıxış formatı, ölçü vahidləri və nümunə məlumatları əlavə etməyə imkan verir.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun