.tflite — ماهیت، ساختار و کاربرد فرمت مدل TFLite

نویسنده: IT Sectr منتشر شده: 2026-07-18 زمان مطالعه: 6 دقیقه

.tflite یک فرمت باینری فایل مدل TensorFlow Lite است که بر اساس فناوری FlatBuffers از گوگل ساخته شده است. این فرمت برای اجرای کارآمد استنتاج بر روی دستگاه‌های موبایل، تعبیه‌شده و edge با منابع محدود بهینه‌سازی شده است. بر خلاف سایر فرمت‌های سریال‌سازی، FlatBuffers دسترسی مستقیم به داده‌ها را بدون مرحله تجزیه و کپی فراهم می‌کند که برای راه‌اندازی سریع مدل حیاتی است. به گفته راهنمای TensorFlow Lite Converter، 2025، فایل .tflite شامل گراف محاسبات، وزن‌های کوانتیزه یا با دقت کامل و فراداده‌ها برای مفسر است. .tflite فرمت استاندارد برای ML روی دستگاه در اکوسیستم گوگل است.

نکات اصلی

  • .tflite — فرمت باینری مدل TensorFlow Lite مبتنی بر FlatBuffers برای استنتاج موبایل.
  • فایل شامل گراف محاسبات، وزن‌های مدل و فراداده‌ها در یک کانتینر باینری واحد است.
  • FlatBuffers دسترسی مستقیم به داده‌ها را بدون تجزیه و تخصیص حافظه فراهم می‌کند.
  • از کوانتیزاسیون INT8، FP16 و کوانتیزاسیون پویا پشتیبانی می‌کند.
  • .tflite همراه با TFLite Interpreter در Android، iOS و لینوکس استفاده می‌شود.

ماهیت فرمت .tflite

.tflite — یک نمایش سریال‌سازی شده از مدل یادگیری ماشین است که برای استنتاج در دستگاه‌های با حافظه و توان محاسباتی محدود بهینه‌سازی شده است. بر خلاف فرمت SavedModel که گراف را در protobuf ذخیره می‌کند و برای بارگذاری به منابع قابل توجهی نیاز دارد، .tflite از FlatBuffers استفاده می‌کند — کتابخانه سریال‌سازی با دسترسی به داده‌ها بدون کپی کردن.

فرمت .tflite با در نظر گرفتن ویژگی‌های پلتفرم‌های موبایل طراحی شده است: حداقل مصرف حافظه هنگام بارگذاری، شروع سریع، پشتیبانی از وزن‌های کوانتیزه. فایل .tflite از آموزش پشتیبانی نمی‌کند — فقط استنتاج. این تفاوت اساسی با فرمت‌های کامل TensorFlow است که به کاهش قابل توجه اندازه زمان اجرا کمک می‌کند.

به گفته Google Research، 2024، مدل‌های در فرمت .tflite با کوانتیزاسیون INT8 حدود 60٪ سریع‌تر از مدل‌های مشابه در فرمت FP32 بارگذاری می‌شوند و در طول استنتاج 40٪ حافظه رم کمتری مصرف می‌کنند.

ساختار داخلی فایل .tflite

فایل .tflite از چند بخش تشکیل شده است که بر اساس طرح FlatBuffers سازماندهی شده‌اند. بخش اصلی — Model که شامل گراف محاسبات (SubGraph)، لیست عملگرها (OperatorCodes) و بافرهای وزن است. هر SubGraph شامل تنسورها، عملگرها، ایندکس‌های ورودی و خروجی است.

بخش OperatorCodes شامل شناسه‌های تمام عملگرهای استفاده شده در مدل است — Conv2D، DepthwiseConv2D، FullyConnected، Softmax و غیره. هر عملگر یک کد از لیست از پیش تعریف شده BuiltinOperator دارد. اگر مدل شامل عملیاتی باشد که در لیست وجود ندارند، به عنوان Custom علامت‌گذاری می‌شوند و نیاز به پیاده‌سازی از طریق دلیگیت یا عملگر سفارشی دارند.

بخش Buffers شامل داده‌های باینری وزن‌های مدل است. بسته به حالت کوانتیزاسیون، وزن‌ها می‌توانند در FP32، FP16، INT8 یا در فرمت کوانتیزه با پارامترهای مقیاس‌بندی ذخیره شوند. بافرها از طریق مکانیزم mmap مستقیماً به حافظه نگاشت می‌شوند که کپی اضافی را حذف می‌کند.

بخش‌های اصلی فایل .tflite

بخشهدف
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 از مدل TensorFlow

برای تبدیل مدل به .tflite از TFLite Converter استفاده می‌شود — مؤلفه TensorFlow قابل دسترسی از طریق Python API tf.lite.TFLiteConverter. Converter از سه منبع پشتیبانی می‌کند: SavedModel، Keras H5 و ConcreteFunction. مثال حداقلی از تبدیل مدل Keras:

python
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 را برای تعیین محدوده فعال‌سازی مشخص کنید:

python
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 ارائه می‌دهد. TFLite Benchmark Tool زمان استنتاج را روی دستگاه اندازه‌گیری می‌کند و آمار هر عملگر را نمایش می‌دهد. TFLite Model Inspector گراف محاسبات را تجسم می‌کند و اندازه تنسورها را نشان می‌دهد.

Netron — یک تجسم‌ساز مدل چندپلتفرمی است که از .tflite در کنار ONNX، Core ML و PyTorch پشتیبانی می‌کند. Netron ساختار گراف، پارامترهای هر عملگر و اتصالات بین تنسورها را نمایش می‌دهد. برای اشکال‌زدایی هنگام تبدیل مفید است.

TFLite Metadata API امکان افزودن فراداده به فایل .tflite را فراهم می‌کند: توضیحات مدل، فرمت داده ورودی، واحدهای اندازه‌گیری، اطلاعات نویسنده. فراداده‌ها توسط Task Library برای پیکربندی خودکار پیش‌پردازش و پس‌پردازش استفاده می‌شوند.

مثال بارگذاری و اجرای .tflite

مثال بارگذاری مدل .tflite در iOS با Swift API. TFLite Swift API یک Interpreter برای بارگذاری مدل از باندل و اجرای استنتاج فراهم می‌کند. برای شتاب سخت‌افزاری از طریق Core ML Delegate یک دلیگیت مشخص کنید:

swift
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 را در ویرایشگر متن باز کرد؟

فایل .tflite دارای فرمت باینری FlatBuffers است و در ویرایشگر متن قابل خواندن نیست. برای مشاهده از Netron یا TFLite Model Inspector استفاده کنید که ساختار مدل را تجسم می‌کنند.

چگونه بررسی کنیم چه عملگرهایی در .tflite استفاده شده است؟

از tf.lite.experimental.Analyzer.analyze(model_path) در پایتون یا TFLite Benchmark Tool با پرچم --print_model_details استفاده کنید. ابزارها لیست کامل عملگرها را با پارامترها نمایش می‌دهند.

.tflite چه تفاوتی با ONNX دارد؟

.tflite برای استنتاج در دستگاه‌های موبایل بهینه‌سازی شده و از FlatBuffers استفاده می‌کند. ONNX یک فرمت جهانی برای تبادل مدل بین فریمورک‌ها با سریال‌سازی در protobuf است. TFLite پشتیبانی داخلی از کوانتیزاسیون دارد.

آیا می‌توان .tflite را دوباره به TensorFlow تبدیل کرد؟

خیر، به دلیل از دست رفتن اطلاعات در هنگام کوانتیزاسیون و بهینه‌سازی، تبدیل معکوس وجود ندارد. مدل اصلی TensorFlow باید جداگانه برای آموزش یا تغییرات بعدی نگهداری شود.

چگونه به فایل .tflite فراداده اضافه کنیم؟

از TFLite Metadata Writer API در پایتون استفاده کنید. API امکان افزودن توضیحات، فرمت ورودی/خروجی، واحدهای اندازه‌گیری و داده‌های نمونه برای Task Library را فراهم می‌کند.

خلاصه

  • .tflite — فرمت باینری مدل TensorFlow Lite مبتنی بر FlatBuffers برای استنتاج موبایل.
  • فایل شامل گراف محاسبات، وزن‌ها، فراداده‌ها و SignatureDef در یک کانتینر واحد است.
  • FlatBuffers دسترسی mmap به داده‌ها را بدون تجزیه و تخصیص اضافی فراهم می‌کند.
  • کوانتیزاسیون INT8، FP16 و پویا اندازه را تا 4 برابر کاهش می‌دهند.
  • برای تبدیل از TFLite Converter از SavedModel، Keras یا ConcreteFunction استفاده کنید.
  • تجسم و اشکال‌زدایی از طریق Netron، TFLite Inspector و Benchmark Tool در دسترس است.
  • فراداده‌ها از طریق Metadata Writer API برای ادغام با Task Library اضافه می‌شوند.

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید