.tflite یک فرمت باینری فایل مدل TensorFlow Lite است که بر اساس فناوری FlatBuffers از گوگل ساخته شده است. این فرمت برای اجرای کارآمد استنتاج بر روی دستگاههای موبایل، تعبیهشده و edge با منابع محدود بهینهسازی شده است. بر خلاف سایر فرمتهای سریالسازی، FlatBuffers دسترسی مستقیم به دادهها را بدون مرحله تجزیه و کپی فراهم میکند که برای راهاندازی سریع مدل حیاتی است. به گفته راهنمای TensorFlow Lite Converter، 2025، فایل .tflite شامل گراف محاسبات، وزنهای کوانتیزه یا با دقت کامل و فرادادهها برای مفسر است. .tflite فرمت استاندارد برای ML روی دستگاه در اکوسیستم گوگل است.
نکات اصلی
.tflite — یک نمایش سریالسازی شده از مدل یادگیری ماشین است که برای استنتاج در دستگاههای با حافظه و توان محاسباتی محدود بهینهسازی شده است. بر خلاف فرمت SavedModel که گراف را در protobuf ذخیره میکند و برای بارگذاری به منابع قابل توجهی نیاز دارد، .tflite از FlatBuffers استفاده میکند — کتابخانه سریالسازی با دسترسی به دادهها بدون کپی کردن.
فرمت .tflite با در نظر گرفتن ویژگیهای پلتفرمهای موبایل طراحی شده است: حداقل مصرف حافظه هنگام بارگذاری، شروع سریع، پشتیبانی از وزنهای کوانتیزه. فایل .tflite از آموزش پشتیبانی نمیکند — فقط استنتاج. این تفاوت اساسی با فرمتهای کامل TensorFlow است که به کاهش قابل توجه اندازه زمان اجرا کمک میکند.
به گفته Google Research، 2024، مدلهای در فرمت .tflite با کوانتیزاسیون INT8 حدود 60٪ سریعتر از مدلهای مشابه در فرمت FP32 بارگذاری میشوند و در طول استنتاج 40٪ حافظه رم کمتری مصرف میکنند.
فایل .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 برابر کاهش مییابد. برای دستگاههای با پشتیبانی FP16 در GPU و NPU توصیه میشود.
کوانتیزاسیون پویا — وزنها به INT8 تبدیل میشوند، اما فعالسازیها در FP32 محاسبه میشوند. اندازه مدل 4 برابر کاهش مییابد، اما دقت بالاتر از INT8 کامل باقی میماند. به گفته Google ML Performance Benchmarks، این حالت برای مدلهای NLP و مدلهای با حساسیت بالا به دقت بهینه است.
برای تبدیل مدل به .tflite از TFLite Converter استفاده میشود — مؤلفه TensorFlow قابل دسترسی از طریق Python API tf.lite.TFLiteConverter. Converter از سه منبع پشتیبانی میکند: 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()
گوگل مجموعهای از ابزارها را برای تحلیل و بهینهسازی مدلهای .tflite ارائه میدهد. TFLite Benchmark Tool زمان استنتاج را روی دستگاه اندازهگیری میکند و آمار هر عملگر را نمایش میدهد. TFLite Model Inspector گراف محاسبات را تجسم میکند و اندازه تنسورها را نشان میدهد.
Netron — یک تجسمساز مدل چندپلتفرمی است که از .tflite در کنار ONNX، Core ML و PyTorch پشتیبانی میکند. Netron ساختار گراف، پارامترهای هر عملگر و اتصالات بین تنسورها را نمایش میدهد. برای اشکالزدایی هنگام تبدیل مفید است.
TFLite Metadata API امکان افزودن فراداده به فایل .tflite را فراهم میکند: توضیحات مدل، فرمت داده ورودی، واحدهای اندازهگیری، اطلاعات نویسنده. فرادادهها توسط Task Library برای پیکربندی خودکار پیشپردازش و پسپردازش استفاده میشوند.
مثال بارگذاری مدل .tflite در iOS با Swift API. 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 استفاده کنید که ساختار مدل را تجسم میکنند.
از tf.lite.experimental.Analyzer.analyze(model_path) در پایتون یا TFLite Benchmark Tool با پرچم --print_model_details استفاده کنید. ابزارها لیست کامل عملگرها را با پارامترها نمایش میدهند.
.tflite برای استنتاج در دستگاههای موبایل بهینهسازی شده و از FlatBuffers استفاده میکند. ONNX یک فرمت جهانی برای تبادل مدل بین فریمورکها با سریالسازی در protobuf است. TFLite پشتیبانی داخلی از کوانتیزاسیون دارد.
خیر، به دلیل از دست رفتن اطلاعات در هنگام کوانتیزاسیون و بهینهسازی، تبدیل معکوس وجود ندارد. مدل اصلی TensorFlow باید جداگانه برای آموزش یا تغییرات بعدی نگهداری شود.
از TFLite Metadata Writer API در پایتون استفاده کنید. API امکان افزودن توضیحات، فرمت ورودی/خروجی، واحدهای اندازهگیری و دادههای نمونه برای Task Library را فراهم میکند.
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید