TF Lite Interpreter — کلیدی تصورات، انٹرفیس اور ماڈل استدلال

مصنف: IT Sectr اشاعت: 2026-07-18 مطالعے کا وقت: 6 منٹ

TF Lite Interpreter TensorFlow Lite کا ایک اہم جزو ہے جو موبائل اور ایمبیڈڈ آلات پر .tflite ماڈلز کو انجام دینے کا ذمہ دار ہے۔ انٹرپریٹر ماڈل کی FlatBuffers نمائندگی لوڈ کرتا ہے، ان پٹ اور آؤٹ پٹ ڈیٹا کے لیے ٹینسرز مختص کرتا ہے، حساب کا گراف انجام دیتا ہے اور نتیجہ واپس کرتا ہے۔ TensorFlow Lite API حوالہ، 2025 کے مطابق، انٹرپریٹر Android کے لیے Java اور C++، iOS کے لیے Swift اور Objective-C، اور جانچ کے لیے Python بائنڈنگز کے ذریعے دستیاب ہے۔ TF Lite Interpreter GPU، NNAPI اور Core ML کے ذریعے ہارڈویئر ایکسلریشن کے لیے ڈیلیگیٹس کو سپورٹ کرتا ہے۔

اہم نکات

  • TF Lite Interpreter — موبائل اور ایمبیڈڈ آلات پر .tflite ماڈلز چلانے کے لیے ایک رن ٹائم۔
  • انٹرپریٹر ماڈل لوڈ کرتا ہے، ٹینسرز مختص کرتا ہے اور آپریٹر بہ آپریٹر حساب کا گراف انجام دیتا ہے۔
  • API مختلف پلیٹ فارمز کے لیے Java, C++, Swift, Objective-C اور Python میں دستیاب ہے۔
  • GPU، NNAPI اور Core ML ڈیلیگیٹس CPU کے مقابلے میں استدلال کو 5 گنا تک تیز کرتے ہیں۔
  • متعدد انٹرپریٹرز ایک ایپلیکیشن میں متعدد ماڈلز کو متوازی طور پر چلانے کی اجازت دیتے ہیں۔

TF Lite Interpreter کے کلیدی تصورات

TF Lite Interpreter ایک کم سے کم رن ٹائم ہے جو سرور کے بنیادی ڈھانچے کے بغیر ڈیوائس پر مشین لرننگ ماڈل انجام دیتا ہے۔ انٹرپریٹر تربیت کو سپورٹ نہیں کرتا — صرف استدلال کرتا ہے۔ یہ اسے ہلکا بناتا ہے: Android پر بنیادی انٹرپریٹر کا بائنری سائز تقریباً 300 KB ہے۔

انٹرپریٹر FlatBuffers پر مبنی .tflite فارمیٹ میں ماڈلز کے ساتھ کام کرتا ہے۔ تخلیق کے وقت، انٹرپریٹر mmap کے ذریعے ماڈل کو میموری میں لوڈ کرتا ہے، کاپی کیے بغیر ڈیٹا تک براہ راست رسائی فراہم کرتا ہے۔ پھر انٹرپریٹر ماڈل کی وضاحت کی بنیاد پر ٹینسرز مختص کرتا ہے اور انجام دینے کے لیے تیار ہو جاتا ہے۔

ہر انٹرپریٹر مثال تھریڈ سیف نہیں ہے. ایک ہی ماڈل کو متعدد تھریڈز میں متوازی طور پر چلانے کے لیے، ماڈل کی علیحدہ کاپیوں کے ساتھ علیحدہ انٹرپریٹر مثالیں بنائیں۔ ایک ہی تھریڈ میں ترتیب وار کالز کے لیے، انٹرپریٹر مثال کو دوبارہ استعمال کیا جا سکتا ہے۔

Android اور iOS پر انٹرپریٹر API

Android پر، انٹرپریٹر org.tensorflow.lite.Interpreter پیکج میں Java API کے ذریعے دستیاب ہے۔ اہم طریقہ run(Object input, Object output) ہے، جو کثیر جہتی arrays یا ByteBuffer قبول کرتا ہے۔ زیادہ باریک کنٹرول کے لیے، runForMultipleInputsOutputs() اور resizeInput() طریقے استعمال کریں۔

iOS پر، انٹرپریٹر TensorFlowLite ماڈیول میں Swift API کے ذریعے دستیاب ہے۔ بنیادی انٹرفیس Android سے ملتا جلتا ہے: Interpreter.init(modelPath:) کے ذریعے ابتداء، allocateTensors() کے ذریعے ٹینسر مختص، invoke() کے ذریعے انجام۔ Swift API ان پٹ ڈیٹا کی اقسام کے طور پر Data اور MLMultiTensor کو سپورٹ کرتا ہے۔

پلیٹ فارم کے مطابق API موازنہ

پلیٹ فارمزبانکلاساستدلال کا طریقہ
AndroidJava / KotlinInterpreterrun(), runForMultipleInputsOutputs()
Android (مقامی)C++InterpreterInvoke()
iOSSwift / Obj-CInterpreterinvoke()
Linux / PythonPythonInterpreterget_tensor(), invoke()

ہارڈویئر ایکسلریشن کے لیے ڈیلیگیٹس ترتیب دینا

ڈیلیگیٹس ایسے اجزاء ہیں جو آپریشنز کی انجام دہی کو خصوصی ہارڈویئر میں منتقل کرتے ہیں۔ GPU ڈیلیگیٹ گرافکس آپریشنز کو تیز کرنے کے لیے OpenGL ES (Android) اور Metal (iOS) استعمال کرتا ہے۔ NNAPI ڈیلیگیٹ Android Neural Networks API کے ذریعے NPU، DSP یا GPU پر انجام منتقل کرتا ہے۔

Core ML ڈیلیگیٹ iOS پر دستیاب ہے اور TFLite آپریشنز کو Core ML فارمیٹ میں ترجمہ کرتا ہے۔ Apple ML Benchmarking کے مطابق، iPhone 15 Pro پر Core ML ڈیلیگیٹ استعمال کرنے سے CPU کے مقابلے میں استدلال 4 گنا تک تیز ہوتا ہے۔ ڈیلیگیٹ FP32 اور FP16 آپریشنز کو سپورٹ کرتا ہے۔

XNNPACK ڈیلیگیٹ ARM CPU کے لیے ایک عالمگیر حل ہے، جو موبائل پروسیسرز کے لیے بہتر بنایا گیا ہے۔ اسے خصوصی ہارڈویئر کی ضرورت نہیں ہے اور یہ INT8، FP16 اور FP32 کو سپورٹ کرتا ہے۔ اسے بطور بنیادی ڈیلیگیٹ تجویز کیا جاتا ہے جو تمام آلات پر فعال ہوتا ہے۔

میموری اور ٹینسر کا انتظام

انٹرپریٹر allocateTensors() کو کال کرنے پر مختص کردہ میموری پول کے ذریعے ٹینسرز کا انتظام کرتا ہے۔ پول کا سائز .tflite فائل میں ماڈل کی وضاحت کی بنیاد پر متعین کیا جاتا ہے۔ مختص کرنے کے بعد، انٹرپریٹر استدلال کے دوران اضافی میموری مختص نہیں کرتا۔

متحرک ان پٹ سائز والے ماڈلز کے لیے، resizeInput() استعمال کریں۔ یہ طریقہ نئے سائز کے مطابق ان پٹ ٹینسرز کے لیے میموری دوبارہ مختص کرتا ہے۔ ان پٹ ٹینسر کا سائز تبدیل کرنے کے بعد، allocateTensors() کے ذریعے دوبارہ مختص کرنے کی ضرورت ہو سکتی ہے۔

متعدد ماڈلز کے ساتھ کام کرتے وقت close() کے ذریعے وسائل جاری کرنا ضروری ہے۔ جاری نہ کیے گئے انٹرپریٹرز میموری لیکج کا سبب بن سکتے ہیں، خاص طور پر محدود RAM والے آلات پر۔ iOS کے لیے، خودکار حوالہ گنتی ARC استعمال کریں، Android کے لیے — try-with-resources یا واضح close() کال استعمال کریں۔

خرابی کا انتظام اور ڈیبگنگ

انٹرپریٹر کے ساتھ کام کرتے وقت سب سے عام خرابیاں ٹینسر جہتوں کا عدم مماثلت ہیں۔ اگر ان پٹ ڈیٹا متوقع شکل سے مماثل نہ ہو تو، انٹرپریٹر Android پر IllegalArgumentException یا iOS پر رن ٹائم خرابی پھینکتا ہے۔ inputTensorAt() اور outputTensorAt() کے ذریعے جہتیں چیک کریں۔

دوسرا عام مسئلہ ڈیلیگیٹ استعمال کرتے وقت غیر تعاون یافتہ آپریٹرز ہے۔ اگر ڈیلیگیٹ کسی آپریٹر کو سپورٹ نہیں کرتا تو، انٹرپریٹر خود بخود اس آپریٹر کے لیے CPU پر واپس آجاتا ہے۔ ایسی صورتحال کی نشاندہی کرنے کے لیے، setCancelled() کے ذریعے لاگنگ فعال کریں یا TFLite لاگز چیک کریں۔

TFLite پروفائلنگ کے لیے ایک بینچ مارک ٹول فراہم کرتا ہے: ہر آپریٹر کے انجام دینے کے وقت، میموری کی کھپت، ڈیلیگیٹ موازنہ کی پیمائش۔ بینچ مارک ٹول TFLite سپورٹ لائبریری کے حصے کے طور پر دستیاب ہے اور براہ راست ڈیوائس پر چلایا جا سکتا ہے۔

انٹرپریٹر کے ذریعے استدلال کی مثالیں

GPU ڈیلیگیٹ استعمال کرتے ہوئے Android پر Java API کے ساتھ ماڈل چلانے کی مثال۔ انٹرپریٹر GPU ڈیلیگیٹ سمیت اختیارات کے ساتھ بنایا جاتا ہے۔ استدلال کے بعد، نتیجہ آؤٹ پٹ ٹینسر سے پڑھا جاتا ہے:

java
import org.tensorflow.lite.Interpreter;
import org.tensorflow.lite.gpu.GpuDelegate;
import java.nio.MappedByteBuffer;

MappedByteBuffer model = loadModelFile(context);
GpuDelegate gpu = new GpuDelegate();
Interpreter.Options opts = new Interpreter.Options().addDelegate(gpu);
Interpreter interpreter = new Interpreter.create(model, opts);

float[][] input = preprocessImage(bitmap);
float[][] output = new float[1][1000];
interpreter.run(input, output);

int bestClass = argmax(output[0]);
Log.d("TFLite", "سب سے اوپر کی کلاس: " + bestClass);

gpu.close();
interpreter.close();

تعیناتی سے پہلے جانچ کے لیے Python پر چلانے کی مثال۔ TFLite Python API .tflite لوڈ کرنے، استدلال انجام دینے اور نتیجہ ظاہر کرنے کی اجازت دیتا ہے۔ ڈیبگنگ اور ماڈل کی درستگی کی تصدیق کے لیے استعمال کیا جاتا ہے:

python
import tensorflow as tf
import numpy as np

# فائل سے TFLite ماڈل لوڈ کریں
interpreter = tf.lite.Interpreter(model_path="model.tflite")
interpreter.allocate_tensors()

# ان پٹ اور آؤٹ پٹ ٹینسر کی تفصیلات حاصل کریں
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()

# جانچ کے لیے بے ترتیب ان پٹ ڈیٹا تیار کریں
input_data = np.random.randn(
    *input_details[0]["shape"]
).astype(np.float32)

interpreter.set_tensor(input_details[0]["index"], input_data)
interpreter.invoke()

output_data = interpreter.get_tensor(output_details[0]["index"])
print("آؤٹ پٹ شکل:", output_data.shape)

اکثر پوچھے گئے سوالات

TF Lite Interpreter کتنی میموری استعمال کرتا ہے؟

Android کے لیے بنیادی انٹرپریٹر تقریباً 300 KB لیتا ہے۔ اضافی میموری ماڈل ٹینسرز کے لیے مختص کی جاتی ہے اور ان پٹ ڈیٹا کے سائز، آپریٹرز کی تعداد اور کوانٹائزیشن موڈ پر منحصر ہے۔

کیا انٹرپریٹر کو متعدد تھریڈز میں استعمال کیا جا سکتا ہے؟

ایک انٹرپریٹر مثال تھریڈ سیف نہیں ہے۔ متوازی انجام دہی کے لیے، ماڈل کی علیحدہ کاپیوں کے ساتھ متعدد مثالیں بنائیں۔ ہر مثال ٹینسرز کے لیے اپنی میموری استعمال کرتی ہے۔

کیسے چیک کریں کہ ڈیوائس پر کون سے ڈیلیگیٹس دستیاب ہیں؟

TFLite سپورٹ لائبریری — DelegatesApi کلاس استعمال کریں۔ کسی مخصوص ڈیوائس پر دستیاب ڈیلیگیٹس کی فہرست حاصل کرنے کے لیے DelegatesApi.getAvailableDelegates() کو کال کریں۔

اگر انٹرپریٹر ماڈل لوڈ کرتے وقت خرابی پھینکے تو کیا کریں؟

tf.lite.experimental.Analyzer کے ذریعے .tflite فائل کی سالمیت چیک کریں۔ یقینی بنائیں کہ ماڈل صحیح TFLite ورژن کے لیے تبدیل کیا گیا ہے اور ہدف ڈیوائس پر دستیاب آپریشنز کو سپورٹ کرتا ہے۔

انٹرپریٹر بنانے کے بعد ان پٹ ٹینسر کا سائز کیسے تبدیل کریں؟

Java API میں resizeInput(int idx, int[] dims) طریقہ یا Swift میں resizeInput(at:to:) استعمال کریں۔ سائز تبدیل کرنے کے بعد، میموری دوبارہ مختص کرنے کے لیے allocateTensors() کو کال کریں۔

خلاصہ

  • TF Lite Interpreter — موبائل آلات پر .tflite ماڈلز چلانے کے لیے ایک کم سے کم رن ٹائم۔
  • انٹرپریٹر mmap کے ذریعے ماڈل لوڈ کرتا ہے، ٹینسرز مختص کرتا ہے اور حساب کا گراف انجام دیتا ہے۔
  • API ایک متحد انٹرفیس کے ساتھ Java, C++, Swift, Objective-C اور Python میں دستیاب ہے۔
  • GPU، NNAPI اور Core ML ڈیلیگیٹس CPU کے مقابلے میں استدلال کو 5 گنا تک تیز کرتے ہیں۔
  • متحرک ان پٹ ڈیٹا سائز والے ماڈلز کے لیے resizeInput() استعمال کریں۔
  • میموری لیکج کو روکنے کے لیے انٹرپریٹر کو close() کے ذریعے بند کریں۔
  • بینچ مارک ٹول حقیقی آلات پر کارکردگی کا پروفائل بنانے میں مدد کرتا ہے۔

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں