Поддерживается оптимизацией модели TensorFlow
Существует две формы квантования: квантование после обучения и обучение с учетом квантования. Начните с квантования после обучения, поскольку его проще использовать, хотя обучение с учетом квантования часто лучше для точности модели.
На этой странице представлен обзор обучения с учетом квантования, который поможет вам определить, насколько оно соответствует вашему варианту использования.
- Чтобы погрузиться прямо в пример от начала до конца, см. Пример обучения с учетом квантования .
- Чтобы быстро найти API-интерфейсы, необходимые для вашего варианта использования, см. Подробное руководство по обучению с учетом квантования .
Обзор
Обучение с учетом квантования имитирует квантование во время вывода, создавая модель, которую последующие инструменты будут использовать для создания фактически квантованных моделей. Квантованные модели используют более низкую точность (например, 8-битное вместо 32-битного числа с плавающей запятой), что дает преимущества при развертывании.
Развертывание с квантованием
Квантование приносит улучшения за счет сжатия модели и уменьшения задержки. При использовании значений API по умолчанию размер модели уменьшается в 4 раза, и мы обычно видим от 1,5 до 4 раз увеличения задержки ЦП в тестируемых серверных модулях. В конце концов, улучшение задержки можно увидеть на совместимых ускорителях машинного обучения, таких как EdgeTPU и NNAPI.
Этот метод используется при производстве речи, видения, текста и вариантов использования для перевода. Код в настоящее время поддерживает подмножество этих моделей .
Экспериментируйте с квантованием и сопутствующим оборудованием
Пользователи могут настраивать параметры квантования (например, количество битов) и, в некоторой степени, лежащие в основе алгоритмы. Обратите внимание, что с этими изменениями по сравнению со значениями API по умолчанию, в настоящее время не существует поддерживаемого пути для развертывания на бэкэнд. Например, преобразование TFLite и реализации ядра поддерживают только 8-битное квантование.
API-интерфейсы, относящиеся к этой конфигурации, являются экспериментальными и не подлежат обратной совместимости.
Совместимость API
Пользователи могут применять квантование с помощью следующих API:
-
tf.keras
модели:tf.keras
только с последовательной и функциональной моделями. - Версии TensorFlow: TF 2.x для tf-nightly.
-
tf.compat.v1
с пакетом TF 2.X не поддерживается.
-
- Режим выполнения TensorFlow: активное выполнение
В нашей дорожной карте добавлена поддержка в следующих областях:
- Построение модели: поясните, как модели с подклассами ограничиваются отсутствием поддержки
- Распределенное обучение:
tf.distribute
Матрица общей поддержки
Поддержка доступна в следующих областях:
- Покрытие модели: модели, использующие разрешенные слои , BatchNormalization, когда она следует за уровнями Conv2D и DepthwiseConv2D, и в ограниченных случаях
Concat
. - Аппаратное ускорение: наши настройки API по умолчанию совместимы с ускорением на бэкэндах EdgeTPU, NNAPI и TFLite, среди прочего. См. Предостережение в дорожной карте.
- Развертывание с квантованием: в настоящее время поддерживается только осевое квантование для сверточных слоев, но не тензорное квантование.
В нашей дорожной карте добавлена поддержка в следующих областях:
- Охват модели: расширен за счет включения RNN / LSTM и общей поддержки Concat.
- Аппаратное ускорение: убедитесь, что конвертер TFLite может создавать модели с полным целым числом. Подробнее см. В этом выпуске .
- Поэкспериментируйте с вариантами использования квантования:
- Поэкспериментируйте с алгоритмами квантования, которые охватывают слои Keras или требуют шага обучения.
- Стабилизируйте API.
Полученные результаты
Классификация изображений с помощью инструментов
Модель | Неквантованная точность Top-1 | 8-битная квантованная точность |
---|---|---|
MobilenetV1 224 | 71,03% | 71,06% |
Resnet v1 50 | 76,3% | 76,1% |
MobilenetV2 224 | 70,77% | 70,01% |
Модели были протестированы на Imagenet и оценены как в TensorFlow, так и в TFLite.
Классификация изображений по технике
Модель | Неквантованная точность Top-1 | 8-битная квантованная точность |
---|---|---|
Наснет-Мобайл | 74% | 73% |
Реснет-v2 50 | 75,6% | 75% |
Модели были протестированы на Imagenet и оценены как в TensorFlow, так и в TFLite.
Примеры
В дополнение к примеру обучения с учетом квантования см. Следующие примеры:
- Модель CNN на задаче классификации рукописных цифр MNIST с квантованием: код
Для фона на что - то подобное, увидеть Квантование и обучения нейронных сетей для эффективного Integer-Арифметика-только Inference бумаги . В этом документе представлены некоторые концепции, которые использует этот инструмент. Реализация не совсем такая же, и в этом инструменте используются дополнительные концепции (например, квантование по осям).