TF Lite Interpreter — प्रमुख अवधारणाएं, इंटरफ़ेस और मॉडल अनुमान

लेखक: IT Sectr प्रकाशित: 2026-07-18 पढ़ने का समय: 6 मिनट

TF Lite Interpreter TensorFlow Lite का एक प्रमुख घटक है जो मोबाइल और एम्बेडेड उपकरणों पर .tflite मॉडल को निष्पादित करने के लिए जिम्मेदार है। Interpreter मॉडल के FlatBuffers प्रतिनिधित्व को लोड करता है, इनपुट और आउटपुट डेटा के लिए टेंसर आवंटित करता है, गणना ग्राफ निष्पादित करता है और परिणाम लौटाता है। TensorFlow Lite API Reference, 2025 के अनुसार, Interpreter Android के लिए Java और C++, iOS के लिए Swift और Objective-C, और परीक्षण के लिए Python बाइंडिंग के माध्यम से उपलब्ध है। TF Lite Interpreter GPU, NNAPI और Core ML के माध्यम से हार्डवेयर त्वरण के लिए डेलिगेट का समर्थन करता है।

मुख्य बातें

  • TF Lite Interpreter — मोबाइल और एम्बेडेड उपकरणों पर .tflite मॉडल निष्पादित करने के लिए एक रनटाइम।
  • Interpreter मॉडल लोड करता है, टेंसर आवंटित करता है और ऑपरेटर दर ऑपरेटर गणना ग्राफ निष्पादित करता है।
  • API विभिन्न प्लेटफॉर्म के लिए Java, C++, Swift, Objective-C और Python में उपलब्ध है।
  • GPU, NNAPI और Core ML डेलिगेट CPU की तुलना में अनुमान को 5x तक तेज करते हैं।
  • एकाधिक इंटरप्रेटर एक एप्लिकेशन में कई मॉडलों को समानांतर चलाने की अनुमति देते हैं।

TF Lite Interpreter की प्रमुख अवधारणाएं

TF Lite Interpreter एक न्यूनतम रनटाइम है जो सर्वर बुनियादी ढांचे के बिना डिवाइस पर मशीन लर्निंग मॉडल निष्पादित करता है। Interpreter प्रशिक्षण का समर्थन नहीं करता — केवल अनुमान। यह इसे हल्का बनाता है: Android पर बेस इंटरप्रेटर का बाइनरी आकार लगभग 300 KB है।

Interpreter FlatBuffers पर आधारित .tflite प्रारूप में मॉडल के साथ काम करता है। बनाते समय, Interpreter mmap के माध्यम से मॉडल को मेमोरी में लोड करता है, जो बिना कॉपी किए डेटा तक सीधी पहुंच प्रदान करता है। फिर Interpreter मॉडल विवरण के आधार पर टेंसर आवंटित करता है और निष्पादन के लिए तैयार होता है।

प्रत्येक Interpreter इंस्टेंस थ्रेड-सेफ नहीं है. एक ही मॉडल को कई थ्रेड में समानांतर निष्पादित करने के लिए, मॉडल की अलग-अलग प्रतियों के साथ अलग-अलग Interpreter इंस्टेंस बनाएं। एक ही थ्रेड में अनुक्रमिक कॉल के लिए, Interpreter इंस्टेंस का पुन: उपयोग किया जा सकता है।

Android और iOS पर इंटरप्रेटर API

Android पर, Interpreter org.tensorflow.lite.Interpreter पैकेज में Java API के माध्यम से उपलब्ध है। मुख्य विधि run(Object input, Object output) है, जो बहु-आयामी सरणियाँ या ByteBuffer स्वीकार करती है। अधिक सूक्ष्म नियंत्रण के लिए, runForMultipleInputsOutputs() और resizeInput() विधियों का उपयोग करें।

iOS पर, Interpreter 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 Delegate ग्राफिक्स संचालन को तेज करने के लिए OpenGL ES (Android) और Metal (iOS) का उपयोग करता है। NNAPI Delegate Android Neural Networks API के माध्यम से NPU, DSP या GPU पर निष्पादन स्थानांतरित करता है।

Core ML Delegate iOS पर उपलब्ध है और TFLite संचालन को Core ML प्रारूप में अनुवादित करता है। Apple ML Benchmarking के अनुसार, iPhone 15 Pro पर Core ML Delegate का उपयोग CPU की तुलना में अनुमान को 4x तक तेज करता है। डेलिगेट FP32 और FP16 संचालन का समर्थन करता है।

XNNPACK Delegate ARM CPU के लिए एक सार्वभौमिक समाधान है, जो मोबाइल प्रोसेसर के लिए अनुकूलित है। इसे विशेष हार्डवेयर की आवश्यकता नहीं है और यह INT8, FP16 और FP32 का समर्थन करता है। इसे बेसलाइन डेलिगेट के रूप में अनुशंसित किया जाता है जो सभी उपकरणों पर सक्रिय होता है।

मेमोरी और टेंसर प्रबंधन

Interpreter मेमोरी पूल के माध्यम से टेंसर प्रबंधित करता है जो allocateTensors() को कॉल करने पर आवंटित होता है। पूल का आकार .tflite फ़ाइल में मॉडल विवरण के आधार पर निर्धारित किया जाता है। आवंटन के बाद, इंटरप्रेटर अनुमान के दौरान अतिरिक्त मेमोरी आवंटित नहीं करता है।

गतिशील इनपुट आकार वाले मॉडल के लिए, resizeInput() का उपयोग करें। यह विधि नए आकार के अनुसार इनपुट टेंसर के लिए मेमोरी पुनः आवंटित करती है। इनपुट टेंसर का आकार बदलने के बाद, allocateTensors() के माध्यम से पुनः आवंटन आवश्यक हो सकता है।

कई मॉडलों के साथ काम करते समय close() के माध्यम से संसाधनों को मुक्त करना महत्वपूर्ण है। मुक्त न किए गए Interpreter मेमोरी लीक का कारण बन सकते हैं, विशेष रूप से सीमित RAM वाले उपकरणों पर। iOS के लिए, स्वचालित संदर्भ गणना ARC का उपयोग करें, Android के लिए — try-with-resources या स्पष्ट close() कॉल का उपयोग करें।

त्रुटि प्रबंधन और डीबगिंग

Interpreter के साथ काम करते समय सबसे आम त्रुटियाँ टेंसर आयाम बेमेल हैं। यदि इनपुट डेटा अपेक्षित आकार से मेल नहीं खाता है, तो Interpreter Android पर IllegalArgumentException या iOS पर रनटाइम त्रुटि फेंकता है। inputTensorAt() और outputTensorAt() के माध्यम से आयाम जांचें।

दूसरी सामान्य समस्या डेलिगेट का उपयोग करते समय असमर्थित ऑपरेटर है। यदि डेलिगेट किसी ऑपरेटर का समर्थन नहीं करता है, तो Interpreter स्वचालित रूप से उस ऑपरेटर के लिए CPU पर वापस आ जाता है। ऐसी स्थितियों की पहचान करने के लिए, setCancelled() के माध्यम से लॉगिंग सक्षम करें या TFLite लॉग जांचें।

TFLite प्रोफाइलिंग के लिए एक Benchmark Tool प्रदान करता है: प्रत्येक ऑपरेटर के निष्पादन समय, मेमोरी खपत, डेलिगेट तुलना को मापना। Benchmark Tool TFLite Support Library के भाग के रूप में उपलब्ध है और सीधे डिवाइस पर चलाया जा सकता है।

Interpreter के माध्यम से अनुमान के उदाहरण

GPU Delegate का उपयोग करके Android पर Java API के साथ मॉडल चलाने का उदाहरण। Interpreter 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 के लिए बेस Interpreter लगभग 300 KB लेता है। अतिरिक्त मेमोरी मॉडल टेंसर के लिए आवंटित की जाती है और इनपुट डेटा आकार, ऑपरेटरों की संख्या और क्वांटाइज़ेशन मोड पर निर्भर करती है।

क्या Interpreter का उपयोग कई थ्रेड में किया जा सकता है?

एक Interpreter इंस्टेंस थ्रेड-सेफ नहीं है. समानांतर निष्पादन के लिए, अलग-अलग मॉडल प्रतियों के साथ कई इंस्टेंस बनाएं। प्रत्येक इंस्टेंस टेंसर के लिए अपनी स्वयं की मेमोरी का उपयोग करता है।

कैसे जांचें कि डिवाइस पर कौन से डेलिगेट उपलब्ध हैं?

TFLite Support Library — DelegatesApi क्लास का उपयोग करें। किसी विशिष्ट डिवाइस पर उपलब्ध डेलिगेट की सूची प्राप्त करने के लिए DelegatesApi.getAvailableDelegates() को कॉल करें।

यदि Interpreter मॉडल लोड करते समय त्रुटि फेंकता है तो क्या करें?

tf.lite.experimental.Analyzer के माध्यम से .tflite फ़ाइल अखंडता जांचें। सुनिश्चित करें कि मॉडल सही TFLite संस्करण के लिए रूपांतरित है और लक्ष्य डिवाइस पर उपलब्ध संचालन का समर्थन करता है।

Interpreter बनाने के बाद इनपुट टेंसर का आकार कैसे बदलें?

Java API में resizeInput(int idx, int[] dims) विधि या Swift में resizeInput(at:to:) का उपयोग करें। आकार बदलने के बाद, मेमोरी पुनः आवंटित करने के लिए allocateTensors() को कॉल करें।

सारांश

  • TF Lite Interpreter — मोबाइल उपकरणों पर .tflite मॉडल निष्पादित करने के लिए एक न्यूनतम रनटाइम।
  • Interpreter mmap के माध्यम से मॉडल लोड करता है, टेंसर आवंटित करता है और गणना ग्राफ निष्पादित करता है।
  • API एक एकीकृत इंटरफ़ेस के साथ Java, C++, Swift, Objective-C और Python में उपलब्ध है।
  • GPU, NNAPI और Core ML डेलिगेट CPU की तुलना में अनुमान को 5x तक तेज करते हैं।
  • गतिशील इनपुट डेटा आकार वाले मॉडल के लिए resizeInput() का उपयोग करें।
  • मेमोरी लीक को रोकने के लिए Interpreter को close() के माध्यम से बंद करें।
  • Benchmark Tool वास्तविक उपकरणों पर प्रदर्शन प्रोफाइल करने में मदद करता है।

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें