.tflite Google کی FlatBuffers ٹیکنالوجی پر مبنی TensorFlow Lite ماڈل کا بائنری فائل فارمیٹ ہے۔ یہ فارمیٹ محدود وسائل والے موبائل، ایمبیڈڈ اور ایج ڈیوائسز پر موثر انفرنس کے لیے موزوں کیا گیا ہے۔ سیریلائزیشن کے دیگر فارمیٹس کے برعکس، FlatBuffers پارسنگ اور کاپی کیے بغیر ڈیٹا تک براہ راست رسائی فراہم کرتا ہے، جو ماڈل کے تیز آغاز کے لیے اہم ہے۔ TensorFlow Lite Converter Guide, 2025 کے مطابق، .tflite فائل میں حساب کا گراف، کوانٹائزڈ یا مکمل درستگی والے وزن اور انٹرپریٹر کے لیے میٹا ڈیٹا ہوتا ہے۔ .tflite Google کے ماحولیاتی نظام میں آن ڈیوائس ML کے لیے معیاری فارمیٹ ہے۔
اہم نکات
.tflite مشین لرننگ ماڈل کی ایک سیریلائزڈ نمائندگی ہے جو محدود میموری اور کمپیوٹنگ طاقت والے ڈیوائسز پر انفرنس کے لیے موزوں کی گئی ہے۔ SavedModel فارمیٹ کے برعکس، جو گراف کو protobuf میں محفوظ کرتا ہے اور لوڈ کرنے کے لیے اہم وسائل کی ضرورت ہوتی ہے، .tflite FlatBuffers استعمال کرتا ہے — کاپی کے بغیر ڈیٹا تک رسائی والی ایک سیریلائزیشن لائبریری۔
.tflite فارمیٹ موبائل پلیٹ فارم کی خصوصیات کو مدنظر رکھتے ہوئے ڈیزائن کیا گیا ہے: لوڈنگ کے دوران کم سے کم میموری استعمال، تیز آغاز، اور کوانٹائزڈ وزن کی حمایت۔ .tflite فائل تربیت کو سپورٹ نہیں کرتی — صرف انفرنس۔ یہ مکمل TensorFlow فارمیٹس سے ایک بنیادی فرق ہے، جو رن ٹائم سائز کو نمایاں طور پر کم کرنے کی اجازت دیتا ہے۔
Google Research, 2024 کے مطابق، INT8 کوانٹائزیشن والے .tflite فارمیٹ میں ماڈل FP32 ماڈلز کے مقابلے میں 60% تیزی سے لوڈ ہوتے ہیں اور انفرنس کے دوران 40% کم RAM استعمال کرتے ہیں۔
.tflite فائل FlatBuffers اسکیما کے مطابق منظم کئی حصوں پر مشتمل ہوتی ہے۔ اہم حصہ Model ہے، جس میں حساب کا گراف (SubGraph)، آپریٹرز کی فہرست (OperatorCodes) اور وزن کے بفر ہوتے ہیں۔ ہر SubGraph میں ٹینسرز، آپریٹرز اور ان پٹ/آؤٹ پٹ انڈیکس ہوتے ہیں۔
OperatorCodes حصے میں ماڈل میں استعمال ہونے والے تمام آپریٹرز کے شناخت کار ہوتے ہیں — Conv2D, DepthwiseConv2D, FullyConnected, Softmax اور دیگر۔ ہر آپریٹر کا پہلے سے طے شدہ BuiltinOperator فہرست سے ایک کوڈ ہوتا ہے۔ اگر ماڈل میں ایسی کارروائیاں ہیں جو فہرست میں نہیں ہیں، تو انہیں Custom کے طور پر نشان زد کیا جاتا ہے اور انہیں ڈیلیگیٹ یا کسٹم آپریٹر کے ذریعے نفاذ کی ضرورت ہوتی ہے۔
Buffers حصے میں ماڈل کے وزن کا بائنری ڈیٹا ہوتا ہے۔ کوانٹائزیشن موڈ پر منحصر ہے، وزن FP32, FP16, INT8 یا اسکیلنگ پیرامیٹرز کے ساتھ کوانٹائزڈ فارمیٹ میں محفوظ کیا جا سکتا ہے۔ بفر mmap کے ذریعے براہ راست میموری میں میپ ہوتے ہیں، اضافی کاپی کو ختم کرتے ہیں۔
| حصہ | مقصد |
|---|---|
| Model | بنیادی ساخت، ورژن، تفصیل |
| SubGraph | حساب کا گراف: ٹینسرز، آپریٹرز، ان پٹ/آؤٹ پٹ |
| OperatorCodes | استعمال شدہ آپریٹرز کی فہرست |
| Buffers | ماڈل کے وزن کا بائنری ڈیٹا |
| Metadata | میٹا ڈیٹا: ورژن، مصنف، تفصیل |
| SignatureDef | API کے لیے نامزد ان پٹ اور آؤٹ پٹ |
.tflite تین کوانٹائزیشن موڈز کو سپورٹ کرتا ہے۔ مکمل عددی INT8 کوانٹائزیشن — وزن اور ایکٹیویشن 8 بٹ عددی نمبروں کے طور پر پیش کیے جاتے ہیں۔ تبدیلی کے لیے ایکٹیویشن رینج کیلیبریٹ کرنے کے لیے نمائندہ ڈیٹا سیٹ درکار ہوتا ہے۔ ماڈل کا سائز 4 گنا کم ہو جاتا ہے۔
FP16 کوانٹائزیشن — وزن کو 16 بٹ فلوٹنگ پوائنٹ نمبروں میں تبدیل کیا جاتا ہے۔ اس موڈ میں کیلیبریشن کی ضرورت نہیں اور کم سے کم درستگی کا نقصان ہوتا ہے۔ ایکٹیویشن FP32 میں رہتی ہیں۔ ماڈل کا سائز 2 گنا کم ہو جاتا ہے۔ GPU اور NPU پر FP16 سپورٹ والے ڈیوائسز کے لیے تجویز کیا جاتا ہے۔
ڈائنامک کوانٹائزیشن — وزن INT8 میں تبدیل ہوتے ہیں لیکن ایکٹیویشن FP32 میں شمار ہوتی ہیں۔ ماڈل کا سائز 4 گنا کم ہوتا ہے جبکہ درستگی مکمل INT8 سے زیادہ رہتی ہے۔ Google ML Performance Benchmarks کے مطابق، یہ موڈ NLP ماڈلز اور اعلی درستگی حساسیت والے ماڈلز کے لیے بہترین ہے۔
ماڈل کو .tflite میں تبدیل کرنے کے لیے TFLite Converter استعمال کیا جاتا ہے — Python API tf.lite.TFLiteConverter کے ذریعے دستیاب TensorFlow کا ایک جزو۔ کنورٹر تین ذرائع کو سپورٹ کرتا ہے: SavedModel, Keras H5 اور ConcreteFunction۔ Keras ماڈل کی تبدیلی کی ایک کم سے کم مثال:
import tensorflow as tf
# فائل سے تربیت یافتہ Keras ماڈل لوڈ کریں
model = tf.keras.models.load_model("my_model.h5")
# ڈائنامک کوانٹائزیشن کے ساتھ .tflite میں تبدیل کریں
converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_model = converter.convert()
# تبدیل شدہ ماڈل کو .tflite فائل میں لکھیں
with open("model.tflite", "wb") as f:
f.write(tflite_model)
مکمل INT8 کوانٹائزیشن کے ساتھ تبدیلی کے لیے ایک کیلیبریشن ڈیٹا سیٹ درکار ہے۔ ایکٹیویشن رینج متعین کرنے کے لیے representative_dataset فراہم کریں:
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 ماڈلز کے تجزیہ اور اصلاح کے لیے اوزاروں کا ایک سیٹ فراہم کرتا ہے۔ TFLite Benchmark Tool ڈیوائس پر انفرنس کا وقت ناپتا ہے اور ہر آپریٹر کے اعدادوشمار دکھاتا ہے۔ TFLite Model Inspector حساب کے گراف کو تصوراتی شکل میں دکھاتا ہے اور ٹینسر کے سائز دکھاتا ہے۔
Netron ایک کراس پلیٹ فارم ماڈل ویژولائزر ہے جو ONNX, Core ML اور PyTorch کے ساتھ .tflite کو بھی سپورٹ کرتا ہے۔ Netron گراف کی ساخت، ہر آپریٹر کے پیرامیٹرز اور ٹینسرز کے درمیان روابط دکھاتا ہے۔ تبدیلی کے دوران ڈیبگنگ کے لیے مفید۔
TFLite Metadata API .tflite فائل میں میٹا ڈیٹا شامل کرنے کی اجازت دیتی ہے: ماڈل کی تفصیل، ان پٹ ڈیٹا فارمیٹ، پیمائش کی اکائیاں، مصنف کی معلومات۔ میٹا ڈیٹا Task Library کے ذریعے خودکار پری پروسیسنگ اور پوسٹ پروسیسنگ کنفیگریشن کے لیے استعمال ہوتا ہے۔
iOS پر Swift API کے ساتھ .tflite ماڈل لوڈ کرنے کی مثال۔ TFLite Swift API بنڈل سے ماڈل لوڈ کرنے اور انفرنس چلانے کے لیے Interpreter فراہم کرتا ہے۔ Core ML Delegate کے ذریعے ہارڈویئر ایکسلریشن کے لیے ایک ڈیلیگیٹ مقرر کریں:
import TensorFlowLite
guard let modelPath = Bundle.main.path(
forResource: "model", ofType: "tflite"
) else { return }
let interpreter = try Interpreter.init(modelPath: modelPath)
try interpreter.allocateTensors()
// ماڈل کے لیے ان پٹ ڈیٹا تیار کریں
let inputData = Data.init(count: 1 * 224 * 224 * 3)
try interpreter.copy(inputData, toInputAt: 0)
// ماڈل انفرنس چلائیں
try interpreter.invoke()
// آؤٹ پٹ ٹینسر ڈیٹا پڑھیں
let outputTensor = try interpreter.output(at: 0)
let results = outputTensor.data.withUnsafeBytes {
Array($0.bindMemory(to: Float32.self))
}
اکثر پوچھے گئے سوالات
.tflite فائل بائنری FlatBuffers فارمیٹ میں ہوتی ہے اور ٹیکسٹ ایڈیٹر میں نہیں پڑھی جا سکتی۔ دیکھنے کے لیے Netron یا TFLite Model Inspector استعمال کریں جو ماڈل کی ساخت کو تصوراتی شکل میں دکھاتے ہیں۔
Python میں tf.lite.experimental.Analyzer.analyze(model_path) یا --print_model_details پرچم کے ساتھ TFLite Benchmark Tool استعمال کریں۔ یہ اوزار پیرامیٹرز سمیت آپریٹرز کی مکمل فہرست دکھاتے ہیں۔
.tflite موبائل ڈیوائسز پر انفرنس کے لیے موزوں کیا گیا ہے اور FlatBuffers استعمال کرتا ہے۔ ONNX protobuf سیریلائزیشن کے ساتھ فریم ورکس کے درمیان ماڈل کے تبادلے کے لیے ایک عالمگیر فارمیٹ ہے۔ TFLite میں بلٹ ان کوانٹائزیشن سپورٹ ہے۔
نہیں، کوانٹائزیشن اور اصلاح کے دوران معلومات کے نقصان کی وجہ سے کوئی الٹی تبدیلی موجود نہیں۔ اصل TensorFlow ماڈل کو مستقبل کی تربیت یا تبدیلیوں کے لیے الگ سے محفوظ کیا جانا چاہیے۔
Python میں TFLite Metadata Writer API استعمال کریں۔ API Task Library کے لیے تفصیل، ان پٹ/آؤٹ پٹ فارمیٹ، پیمائش کی اکائیاں اور مثال کے طور پر ڈیٹا شامل کرنے کی اجازت دیتی ہے۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں