TensorFlow Lite — نسخه سبکوزن فریمورک TensorFlow است که توسط Google برای اجرای مدلهای یادگیری ماشین بر روی دستگاههای موبایل و تعبیهشده با منابع محاسباتی محدود توسعه یافته است. برخلاف TensorFlow کامل، TFLite از مفسر تخصصی و فرمت .tflite استفاده میکند که برای استنتاج سریع بدون پشتیبانی از آموزش بهینهسازی شده است. به گزارش TensorFlow Lite Guide, 2025، این فریمورک بر روی Android، iOS و Linux کار میکند و در بیش از ۴ میلیارد دستگاه استفاده میشود. TensorFlow Lite از کوانتسازی، شتاب سختافزاری از طریق NNAPI، GPU و دلیگیتهای Core ML پشتیبانی میکند.
نکات کلیدی
TensorFlow Lite — یک محیط اجرای تخصصی برای اجرای مدلهای یادگیری ماشین بر روی دستگاههایی با منابع محدود است. برخلاف TensorFlow کامل، TFLite از آموزش و انتشار معکوس پشتیبانی نمیکند — فقط استنتاج. این امکان حداقل کردن اندازه باینری کتابخانه را فراهم میکند: حدود ۳۰۰ KB برای مفسر پایه در Android.
معماری TFLite حول فرمت .tflite ساخته شده است که مبتنی بر FlatBuffers است. FlatBuffers دسترسی مستقیم به دادهها را بدون مرحله تجزیه فراهم میکند، که برای دستگاههای موبایل با حافظه محدود حیاتی است. مدل در فرمت .tflite شامل گراف محاسباتی، وزنها و فراداده در یک فایل باینری واحد است.
به گزارش Google I/O 2024، TFLite در Google Photos، Gboard، YouTube و سایر برنامههای Google با مجموع بیش از ۴ میلیارد دستگاه استفاده میشود. این فریمورک از تمام معماریهای اصلی پشتیبانی میکند: CNN، RNN، LSTM، Transformer و عملیات سفارشی از طریق دلیگیتها.
محیط اجرای TFLite از چهار مؤلفه تشکیل شده است. TFLite Converter مدل را از TensorFlow (SavedModel، Keras، ConcreteFunction) دریافت کرده و آن را با بهینهسازی اختیاری به فرمت .tflite تبدیل میکند. TFLite Interpreter فایل .tflite را بارگذاری کرده و استنتاج را با مدیریت تنسورها و حافظه اجرا میکند.
دلیگیتها — مؤلفههایی هستند که اجرای عملیات را به سختافزار تخصصی منتقل میکنند. GPU Delegate از OpenGL ES و Metal، NNAPI Delegate از Android Neural Networks API، Core ML Delegate از Apple Core ML استفاده میکند. XNNPACK Delegate اجرا را بر روی ARM CPU بهینه میکند. هر دلیگیت از مجموعه خاصی از عملگرها پشتیبانی میکند.
مؤلفه چهارم — Task Library است که API سطح بالا برای وظایف معمولی فراهم میکند: طبقهبندی تصاویر، تشخیص اشیاء، بخشبندی، NLU. Task Library بر روی Interpreter کار میکند و جزئیات مدیریت تنسورها را پنهان میکند.
TFLite از سه سطح کوانتسازی پشتیبانی میکند. کوانتسازی کامل اعداد صحیح INT8 وزنها و فعالسازیها را از FP32 به اعداد صحیح ۸ بیتی تبدیل میکند. اندازه مدل ۴ برابر کاهش مییابد و سرعت استنتاج در دستگاههای دارای پشتیبانی INT8 تا ۳ برابر افزایش مییابد. کوانتسازی FP16 اندازه را با حداقل کاهش دقت به نصف کاهش میدهد.
کوانتسازی پویا وزنها را در INT8 حفظ میکند، اما محاسبات را در FP32 انجام میدهد. این حالت برای مدلهای حساس به دقت مناسب است و تا ۴ برابر کاهش اندازه را با حفظ کیفیت فراهم میکند. به گزارش Google ML Performance Benchmarks، کوانتسازی پویا برای مدلهای NLP توصیه میشود.
| حالت | نوع وزنها | نوع فعالسازیها | کاهش اندازه |
|---|---|---|---|
| FP32 (بدون کوانتسازی) | FP32 | FP32 | 1x |
| FP16 | FP16 | FP32 | 2x |
| INT8 پویا | INT8 | FP32 | 4x |
| INT8 کامل | INT8 | INT8 | 4x |
در Android، مکانیسم اصلی شتاب NNAPI Delegate است که اجرای عملیات را از طریق Android Neural Networks API به NPU، DSP یا GPU منتقل میکند. NNAPI در دستگاههای دارای Android ۸.۱+ در دسترس است و از محاسبات INT8 و FP16 پشتیبانی میکند. GPU Delegate برای Android از OpenGL ES ۳.۱+ و Vulkan استفاده میکند.
در iOS، شتاب از طریق Core ML Delegate تأمین میشود که عملیات TFLite را به فرمت Core ML ترجمه کرده و آنها را بر روی Apple Neural Engine اجرا میکند. به گزارش Apple ML Benchmarking، استفاده از Core ML Delegate استنتاج را در iPhone 15 Pro تا ۴ برابر در مقایسه با CPU加速 میکند. GPU Delegate برای iOS از Metal Performance Shaders استفاده میکند.
XNNPACK Delegate — یک راهحل چندپلتفرمی برای ARM CPU است که برای پردازندههای موبایل بهینهسازی شده است. XNNPACK از عملیات FP32، FP16 و INT8 پشتیبانی میکند و به سختافزار خاصی نیاز ندارد. به عنوان دلیگیت پایه برای همه دستگاهها توصیه میشود.
فرآیند استقرار شامل سه مرحله است. مرحله اول — تبدیل مدل به .tflite از طریق TFLite Converter. مرحله دوم — افزودن فایل .tflite به منابع برنامه. برای Android فایل در assets، برای iOS — در bundle برنامه از طریق Xcode قرار میگیرد. مرحله سوم — راهاندازی Interpreter و اجرای استنتاج.
برای بهروزرسانی پویا مدلها، Google استفاده از Firebase ML Model Downloading یا مکانیزم بارگیری شخصی از ابر را توصیه میکند. فایل .tflite بهروز شده در حافظه محلی ذخیره شده و در اجرای بعدی به Interpreter بارگذاری میشود.
در هنگام استقرار، توجه به اندازه فایل .tflite مهم است. Google Play اندازه APK را به ۲۰۰ MB محدود میکند. برای مدلهای بزرگتر از ۵۰ MB، توصیه میشود از Android App Bundle استفاده کرده یا مدل را جداگانه از طریق Play Asset Delivery بارگیری کنید.
نمونه بارگذاری و اجرای مدل بر روی Android با Java API. از Interpreter.create() برای بارگذاری .tflite از assets و run() برای استنتاج استفاده کنید. دادههای ورودی و خروجی به عنوان آرایههای چندبعدی یا ByteBuffer منتقل میشوند:
import org.tensorflow.lite.Interpreter;
import java.nio.MappedByteBuffer;
import java.io.FileInputStream;
import java.nio.channels.FileChannel;
MappedByteBuffer model = new FileInputStream(
getAssets().openFd("model.tflite")
).getChannel().map(
FileChannel.MapMode.READ_ONLY, 0, fc.size()
);
Interpreter interpreter = new Interpreter.create(model);
float[][] input = new float[1][224 * 224 * 3];
float[][] output = new float[1][1000];
interpreter.run(input, output);
interpreter.close();
نمونه استفاده از GPU Delegate در Android برای شتاب سختافزاری. وابستگی com.android.support:tensorflow-lite-gpu را اضافه کرده و هنگام ایجاد Interpreter دلیگیت را مشخص کنید:
import org.tensorflow.lite.Interpreter;
import org.tensorflow.lite.gpu.GpuDelegate;
GpuDelegate gpuDelegate = new GpuDelegate.create();
Interpreter.Options options = new Interpreter.Options().addDelegate(gpuDelegate);
Interpreter interpreter = new Interpreter.create(model, options);
// اجرای استنتاج بر روی دادههای ورودی
interpreter.run(input, output);
// آزادسازی منابع دلیگیت پس از استنتاج
gpuDelegate.close();
interpreter.close();
سؤالات متداول
TensorFlow — فریمورک کامل برای آموزش و استنتاج. TensorFlow Lite — فقط برای استنتاج در دستگاههای موبایل. TFLite از فرمت .tflite استفاده میکند و از انتشار معکوس پشتیبانی نمیکند.
GPU Delegate (OpenGL/Metal)، NNAPI Delegate (Android)، Core ML Delegate (iOS) و XNNPACK Delegate (ARM CPU) پشتیبانی میشوند. هر دلیگیت برای نوع خاصی از سختافزار بهینهسازی شده است.
از کوانتسازی استفاده کنید: FP16 اندازه را ۲ برابر، INT8 — ۴ برابر کاهش میدهد. همچنین کوانتسازی پویا، هرس وزن (weight pruning) و تقطیر مدل قبل از تبدیل در دسترس است.
بله، از طریق TFLite Model Maker و API آموزش روی دستگاه (به صورت آزمایشی). تنظیم دقیق (fine-tuning) و شخصیسازی مدلها مستقیماً روی دستگاه کاربر پشتیبانی میشود.
TFLite از CNN، RNN، LSTM، Transformer، معماریهای موبایل (MobileNet، EfficientNet، YOLO، BERT) و عملیات سفارشی پشتیبانی میکند. محدودیت — عملگرهای موجود در دلیگیت هدف.
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید