.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 অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন