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 एक न्यूनतम रनटाइम है जो सर्वर बुनियादी ढांचे के बिना डिवाइस पर मशीन लर्निंग मॉडल निष्पादित करता है। Interpreter प्रशिक्षण का समर्थन नहीं करता — केवल अनुमान। यह इसे हल्का बनाता है: Android पर बेस इंटरप्रेटर का बाइनरी आकार लगभग 300 KB है।
Interpreter FlatBuffers पर आधारित .tflite प्रारूप में मॉडल के साथ काम करता है। बनाते समय, Interpreter mmap के माध्यम से मॉडल को मेमोरी में लोड करता है, जो बिना कॉपी किए डेटा तक सीधी पहुंच प्रदान करता है। फिर Interpreter मॉडल विवरण के आधार पर टेंसर आवंटित करता है और निष्पादन के लिए तैयार होता है।
प्रत्येक Interpreter इंस्टेंस थ्रेड-सेफ नहीं है. एक ही मॉडल को कई थ्रेड में समानांतर निष्पादित करने के लिए, मॉडल की अलग-अलग प्रतियों के साथ अलग-अलग Interpreter इंस्टेंस बनाएं। एक ही थ्रेड में अनुक्रमिक कॉल के लिए, Interpreter इंस्टेंस का पुन: उपयोग किया जा सकता है।
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 का समर्थन करता है।
| प्लेटफॉर्म | भाषा | क्लास | अनुमान विधि |
|---|---|---|---|
| Android | Java / Kotlin | Interpreter | run(), runForMultipleInputsOutputs() |
| Android (नेटिव) | C++ | Interpreter | Invoke() |
| iOS | Swift / Obj-C | Interpreter | invoke() |
| Linux / Python | Python | Interpreter | get_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 के भाग के रूप में उपलब्ध है और सीधे डिवाइस पर चलाया जा सकता है।
GPU Delegate का उपयोग करके Android पर Java API के साथ मॉडल चलाने का उदाहरण। Interpreter GPU डेलिगेट सहित विकल्पों के साथ बनाया जाता है। अनुमान के बाद, परिणाम आउटपुट टेंसर से पढ़ा जाता है:
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 लोड करने, अनुमान निष्पादित करने और परिणाम आउटपुट करने की अनुमति देता है। डीबगिंग और मॉडल सटीकता सत्यापन के लिए उपयोग किया जाता है:
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)
अक्सर पूछे जाने वाले प्रश्न
Android के लिए बेस Interpreter लगभग 300 KB लेता है। अतिरिक्त मेमोरी मॉडल टेंसर के लिए आवंटित की जाती है और इनपुट डेटा आकार, ऑपरेटरों की संख्या और क्वांटाइज़ेशन मोड पर निर्भर करती है।
एक Interpreter इंस्टेंस थ्रेड-सेफ नहीं है. समानांतर निष्पादन के लिए, अलग-अलग मॉडल प्रतियों के साथ कई इंस्टेंस बनाएं। प्रत्येक इंस्टेंस टेंसर के लिए अपनी स्वयं की मेमोरी का उपयोग करता है।
TFLite Support Library — DelegatesApi क्लास का उपयोग करें। किसी विशिष्ट डिवाइस पर उपलब्ध डेलिगेट की सूची प्राप्त करने के लिए DelegatesApi.getAvailableDelegates() को कॉल करें।
tf.lite.experimental.Analyzer के माध्यम से .tflite फ़ाइल अखंडता जांचें। सुनिश्चित करें कि मॉडल सही TFLite संस्करण के लिए रूपांतरित है और लक्ष्य डिवाइस पर उपलब्ध संचालन का समर्थन करता है।
Java API में resizeInput(int idx, int[] dims) विधि या Swift में resizeInput(at:to:) का उपयोग करें। आकार बदलने के बाद, मेमोरी पुनः आवंटित करने के लिए allocateTensors() को कॉल करें।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें