Я буду говорить о TensorFlow Lite, в частности, это платформа для запуска операций TensorFlow на Android и iOS.На их сайте упоминается несколько методов оптимизации, но я расскажу о тех, которые для меня важны.
Построение соответствующих моделей для платформ:
Первым шагом в оптимизации модели является ее построение с нуля, то есть TensorFlow.Нам нужно создать модель, которую можно использовать для экспорта в устройство с ограниченным объемом памяти.
Нам определенно необходимо обучить разные модели для разных машин.Модель, созданная для работы на высокопроизводительном TPU, никогда не будет эффективно работать на мобильном процессоре.
Создать модель с минимальным количеством слоев и операций.
Делайте это без ущерба для точности модели.
Для этого вам понадобится опыт работы с ML, а также какие операции лучше всего подходят для предварительной обработки данных.
Кроме того, дополнительная предварительная обработка входных данных значительно снижает сложность модели.
Квантование модели:
Мы преобразуем числа с высокой точностью или десятичные числа в числа с более низкой точностью.Это немного влияет на производительность модели, но значительно уменьшает размер модели, а затем удерживает меньше памяти.
Квантование после обучения - это общая методика, позволяющая уменьшить размер модели и в то же время обеспечить в 3 раза меньшую задержку снебольшое снижение точности модели.Квантование после обучения квантовает веса от плавающей запятой до 8-битной точности - от TF документов .
Вы можете увидеть пример TensorFlow Lite TFLiteConverter
:
import tensorflow as tf
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter.optimizations = [tf.lite.Optimize.OPTIMIZE_FOR_SIZE]
tflite_quant_model = converter.convert()
Также вы должны попробовать использовать флаг post_training_quantize=
, который значительно уменьшает размер модели.
Надеюсь, это поможет.