ОПТИМИЗАЦИЯ ВЫЧИСЛЕНИЙ НЕЙРОННОЙ СЕТИ
- Авторы: Ахметзянов К.Р1, Тур А.И1, Кокоулин А.Н1, Южаков А.А1
- Учреждения:
- Пермский национальный исследовательский политехнический университет
- Выпуск: № 36 (2020)
- Страницы: 117-130
- Раздел: Статьи
- URL: https://ered.pstu.ru/index.php/elinf/article/view/2457
- DOI: https://doi.org/10.15593/2224-9397/2020.4.07
- Цитировать
Аннотация
Микрокомпьютеры обладают ограниченными вычислительными мощностями (производительность процессора и количество памяти). При запуске нейронной сети на таком компьютере производительность снижается по сравнению с персональными и настольными компьютерами. Для устранения этого недостатка применяются различные методы оптимизации вычислений нейронных сетей, в частности квантование. Квантование уменьшает точность чисел, в которых хранятся весовые коэффициенты нейронных сетей, до 8-битных целых чисел или до 16-битных чисел с плавающей точкой с небольшими потерями или вовсе без потери точности нейронной сети, что приводит к уменьшению объема памяти, занимаемой моделью сети. Квантование позволяет оптимизировать вычисления под определенный вид процессора (CPU, GPU, TPU), но в этой статье будет рассмотрена оптимизация только под CPU. Цель исследования: уменьшение размера файла весовых коэффициентов нейронной сети. Методы и результаты исследования: сформулирована оптимизационная задача, заключающаяся в нахождении функции преобразования весовых коэффициентов, для которой достигается минимум суммы относительных изменений размера файла весовых коэффициентов, времени обработки изображения, точности нейронной сети. Проведены эксперименты с различными типами квантования (квантование динамического диапазона, квантование с использованием репрезентативного набора данных, целочисленное квантование с использованием репрезентативного набора данных, квантование во float16). Показаны вычислительные блоки и изменения в архитектуре нейронной сети, которые вносит каждый из рассмотренных типов квантования. Проведен сравнительный анализ типов квантования с различными характеристиками (точность нейронной сети после применения квантования, количество времени, затрачиваемое нейронной сетью на обработку одного изображения, размер файла с весовыми коэффициентами нейронной сети). Выбран метод квантования, для которого достигается минимум оптимизационной функции. Практическая значимость: уменьшение времени обновления нейронной сети на удаленном микрокомпьютере. В итоге выбрано квантование во float16, так как с его помощью количество занимаемой памяти уменьшается вдвое, а точность нейронной сети и производительность остаются без изменений.
Полный текст
Введение. В проекте по созданию аппарата по сортировке твердых коммунальных отходов разработано устройство, состоящее из нескольких компонентов: микрокомпьютер, видеокамера и механическая часть. На микрокомпьютере запускается нейронная сеть, которая на основе поступающей входной информации с видеокамер принимает решение, какой вид мусора находится на изображении, затем механическая часть выполняет действия по сортировке на основании этого решения. Микрокомпьютер обладает ограниченной вычислительной мощностью. По этой причине к нейронной сети помимо высокой точности предъявляется дополнительное требование - высокое быстродействие и малый объем занимаемой памяти. Проблема заключается в преобразовании обученной нейронной сети таким образом, чтобы ее быстродействие увеличилось, размер модели нейронной сети уменьшился, а точность при этом осталась прежней или уменьшилась незначительно. Для оценки точности используется метрика accuracy, для оценки быстродействия - количество миллисекунд, затрачиваемое нейронной сетью на обработку одного изображения. Поскольку в последнее время обученные нейронные сети часто запускаются на микрокомпьютерах и встраиваемых системах, например, беспилотных автомобилях [1] и роботах [2], рассматриваемая проблема является достаточно актуальной. Постановка цели и задач исследования. Цель работы заключается в поиске такого преобразования весовых коэффициентов нейронной сети, при котором достигаются наименьшие размер файла модели нейронной сети и время обработки изображения, а точность на тестовой выборке остается как можно более близкой к точности до применения преобразования. Для достижения этой цели необходимо выполнить следующие задачи: осуществить постановку задачи оптимизации; определить множество функций преобразования весовых коэффициентов; получить значения оптимизационной функций для сформированного множества функций; выбрать функцию преобразования. Новизна исследования состоит в применении многокритериальной оптимизации для поиска функции преобразования весовых коэффициентов нейронной сети на основе методов квантования, которые обладают возможностью использования без необходимости заново обучать нейронную сеть. Предлагаемый в данной статье метод сформулирован в общем виде и является универсальным, т.е. применим не только в рамках рассматриваемой задачи выбора нейронной сети для аппарата по сортировке твердых коммунальных отходов, но и для других нейронных сетей. Метод является агностическим, т.е. подходит для нескольких видов задач: как для классификации, так и для регрессии. В данной статье описываются принципы использования предлагаемого метода для задачи классификации. При его использовании для решения задач регрессии необходимо заменить используемую метрику классификации (точность) на метрику, применяемую в регрессионном анализе (например, MSE). Для решения задач, описанных выше, выполняется минимизация следующей целевой функции: (1) где - функция преобразования входных данных в распределение вероятностей принадлежности к определенному классу объекту (в этой статье такой функцией является нейронная сеть), - функция изменения параметров (в этой статье такими параметрами являются весовые коэффициенты нейронной сети), - отсутствие изменения весовых коэффициентов, - размер файла весовых коэффициентов нейронной сети, - время обработки одного изображения нейронной сетью, - точность нейронной сети на тестовой выборке. Задача оптимизации (1) является безусловной и состоит в нахождении функции изменения весовых коэффициентов , при которой значение оптимизационной функции достигает минимума: (2) где - множество функций изменения весовых коэффициентов нейронной сети. Для выполнения преобразования весовых коэффициентов предлагается использовать квантование [3], которое применяется в работах [4-8] для сжатия нейронных сетей. 1. Описание ранее проведенных экспериментов. Учитывая результаты ранее проведенных экспериментов по выбору архитектуры нейронной сети, в работе предлагается использовать архитектуру MobileNet [9], которая относится к сетям глубокого обучения, так как она дает наибольшую точность среди других рассмотренных архитектур [10]. Результаты экспериментов по увеличению точности нейронной сети предполагают использование принципа аугментации данных [11]. Аугментация данных - это дополнение обучающей выборки изображениями с различными геометрическими и цветовыми изменениями [12-15] (например, поворот, отражение, изменение яркости, контрастности и т.д.) 2. Обучение нейронной сети. В текущих исследованиях обучающая выборка отличается от той, на которой была обучена нейронная сеть в наших предыдущих исследованиях (отличия заключаются в используемых камерах, освещении и количестве классов). Поэтому для данного исследования нейронная сеть была заново обучена. База фотографий содержит 1700 изображений бутылок и банок, сделанных в разрабатываемом аппарате по сортировке твердых коммунальных отходов. База изображений разделена по материалу предмета и категории, что в общей сложности составляет пять классов. Вся база фотографий поделена на обучающую и тестовую выборки в соотношении 80/20. Для обучения использовалось облачное вычисление Cloud TPU [16] и фреймворк TensorFlow [17]. Для оптимизации нейронной сети использовались оптимизатор Adam [18] и циклическое обучение [19]. Нейронная сеть на тестовой выборке достигла точности 97 %. 3. Квантование нейронной сети. После обучения нейронной сети выполнено ее квантование. Квантование - это уменьшение точности чисел весовых коэффициентов моделей, при котором достигается наименьшая потеря в точности модели. Из [3] квантование вещественного числа в целочисленное производится по следующей формуле: где - исходное вещественное число, - квантованные целочисленные значения, - весовые коэффициенты квантования, и - квантованные целочисленные значения, , и - смещение в нулевую точку для , и соответственно. Для квантования использовалась программа Tensor Flow Lite [20]. Проверка нейронных сетей производилась на CPU, и в качестве входных данных использовалась тестовая выборка, описанная ранее. Для визуализации архитектуры нейронной сети использовалась программа Netron [21]. Выполнена оптимизация сети по нескольким видам квантования: квантование динамического диапазона ( ), квантование с использование репрезентативного набора данных ( ), целочисленное квантование с использованием репрезентативного набора данных ( ) и квантование во float16 ( ), т.е. оптимизация целевой функции производится среди множества . Далее показаны те изменения, к которым приводит определенный тип квантования. На рис. 1 показаны типы данных для входа исходной нейронной сети до квантования. Как видно из рисунка, входным типом данных является float32, и все скрытые слои также используют его. Проведено квантование динамического диапазона. После этого тип данных, в котором хранятся свертки нейронной сети, поменялся с float32 на int8. Также в архитектуру добавляются блоки деквантования, которые меняют тип данных int8 на float32, который используется для вычислений внутри нейронной сети. На рис. 2 показана архитектура квантованной сети с динамическим диапазоном. Рис. 1. Вход исходной нейронной сети Рис. 2. Добавление блока деквантования для сверток после квантования динамического диапазона После применения квантования с использованием репрезентативного набора данных внутри нейронной сети тип данных - int8, а в начале архитектуры добавляется блок квантования. На рис. 3 показаны свойства свертки после применения этого типа квантования. После применения целочисленного квантования с использованием репрезентативного набора данных внутри нейронной сети тот же тип данных - int8, что и в предыдущем случае, но отличие заключается в используемом входном типе данных uint8 (только этот тип данных допустим в качестве входа в TPU и микроконтроллеров [22]). На рис. 4 показана характеристика для входного узла нейронной сети. Рис. 3. Изменение точности чисел сверток после квантования с репрезентативным набором данных Рис. 4. Изменение точности чисел входа нейронной сети после целочисленного квантования с репрезентативным набором данных При использовании квантования float16 в нейронную сеть добавляются блоки деквантования как для сверток, так и для смещений (bias), а сами весовые коэффициенты хранятся во float16. Использование float16 позволяет увеличить скорость нейронной сети на GPU, но на CPU скорость остается прежней, так как на CPU float16 преобразуется до float32 [23] (рис. 5). Рис. 5. Добавление блоков деквантования для весовых коэффициентов нейронной сети перед сверточными слоями после квантования во float16 Полученные после проведения квантования нейронные сети проверены на тестовой и обучающей выборках. Для этих сетей получены следующие характеристики: точность на тестовой выборке, точность на обучающей выборке, среднее время обработки одного изображения и размер файла модели, а также вычислены значения функции по формуле (1) относительно характеристик первоначальной нейронной сети до квантования. Использование квантования влияет на различные характеристики получаемой нейронной сети. В таблице показано сравнение исходной нейронной сети со всеми типами квантования, описанными выше. Как видно из таблицы, по сравнению с исходной моделью использование квантования динамического диапазона уменьшает точность на тестовой выборке примерно на 9 %, на обучающей выборке - на 7 %, увеличивает время обработки изображения примерно в два раза и уменьшает размер файла модели на 74 %. Использование репрезентативного набора данных оставляет точность без изменений, увеличивая время обработки на 2000 % и уменьшая размер файла модели на 69 %. Использование репрезентативного набора данных с целочисленным входом уменьшает точность на тестовой выборке на 0,1 % с сохранением примерно той же точности на обучающей выборке, увеличением времени обработки на 2000 % и уменьшением размера файла модели на 69 %. Использование float16 оставляет точность и время на обработку изображений без изменений. Размер файла модели меньше на 50 %. Характеристики нейронной сети после каждого типа квантования Данные Точность на тестовой выборке, % Точность на обучающей выборке, % Время/изображение, мс Размер файла, КБ L Исходная модель ( 99,18 99,92 23 3200 0,00 Динамический диапазон ( 90,26 92,12 47 834 0,21 Использование набора данных ( 99,18 99,92 483 999 19,31 Использование набора данных (целочисленный вход) ( 99,08 99,94 486 1000 19,44 Использование float16 ( 99,18 99,92 23 1612 -0,50 Таким образом, выбрано квантование во float16 ( , при котором достигается наименьшее значение (-0,50) оптимизируемой функции среди множества . Выводы. Проведены эксперименты по выбору метода квантования нейронной сети для уменьшения занимаемой памяти с минимальными потерями точности и скорости. Среди нескольких типов квантования (квантование динамического диапазона, квантование с репрезентативным набором данных, целочисленное квантование с репрезентативным набором данных, квантование во float16) выбран тип квантования float16, так, с его помощью файл весовых коэффициентов уменьшается на 50 %, а точность нейронной сети и скорость остаются прежними. Таким образом, практической значимостью результата является уменьшение файла модели нейронной сети на 50 % и, как следствие, уменьшение времени обновления нейронной при передаче этого файла через Интернет в аппарат по сортировке твердых коммунальных отходов, а также значимой является возможность применения выбранного метода квантования для других обученных нейронных сетей. В перспективе предполагаются следующие направления дальнейших исследований в рамках рассматриваемой тематики: 1. Применение другого метода квантования - квантование во время обучения. 2. Использование других методов оптимизации вычислений нейронной сети - кластеризация весовых коэффициентов и сокращение избыточных нейронов.Об авторах
К. Р Ахметзянов
Пермский национальный исследовательский политехнический университет
А. И Тур
Пермский национальный исследовательский политехнический университет
А. Н Кокоулин
Пермский национальный исследовательский политехнический университет
А. А Южаков
Пермский национальный исследовательский политехнический университет
Список литературы
- End to end learning for self-driving cars / M. Bojarski [et al.] // arXiv preprint arXiv:1604.07316. - 2016.
- Bekey G.A., Goldberg K.Y. (eds.). Neural networks in robotics // Springer Science & Business Media. - 2012. - Vol. 202.
- Quantization and training of neural networks for efficient integer-arithmetic-only inference / B. Jacob [et al.] // Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. - 2018. - P. 2704-2713.
- Han S., Mao H., Dally W.J. Deep compression: Compressing deep neural networks with pruning, trained quantization and huffman coding // arXiv preprint arXiv:1510.00149. - 2015.
- Low-bit quantization of neural networks for efficient inference / Y. Choukroun [et al.] // 2019 IEEE/CVF International Conference on Computer Vision Workshop (ICCVW). IEEE. - 2019. - P. 3009-3018.
- Haq: Hardware-aware automated quantization with mixed precision / K. Wang [et al.] // Proceedings of the IEEE conference on computer vision and pattern recognition. - 2019. - P. 8612-8620.
- Quantized convolutional neural networks for mobile devices / J. Wu [et al.] // Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. - 2016. - P. 4820-4828.
- Krishnamoorthi R. Quantizing deep convolutional networks for efficient inference: A whitepaper: arXiv preprint arXiv:1806.08342. - 2018.
- Mobilenets: Efficient convolutional neural networks for mobile vision applications / A.G. Howard [et al.] // arXiv preprint arXiv:1704.04861. - 2017.
- Ахметзянов К.Р., Южаков А.А. Сравнение сверточных нейронных сетей для задач сортировки мусорных отходов // Известия СПбГЭТУ ЛЭТИ. - 2018. - № 6. - С. 27-32.
- Ахметзянов К.Р., Южаков А.А. Увеличение точности сверточной нейронной сети за счет возрастания количества данных // Нейрокомпьютеры: разработка, применение. - 2018. - № 7. - С. 14-19.
- Perez L., Wang J. The effectiveness of data augmentation in image classification using deep learning // arXiv preprint arXiv:1712.04621. - 2017.
- Vasconcelos C.N., Vasconcelos B.N. Convolutional neural network committees for melanoma classification with classical and expert knowledge based image transforms data augmentation // arXiv preprint arXiv:1702.07025. - 2017.
- Random Erasing Data Augmentation / Z. Zhong [et al.] // AAAI. - 2020. - P. 13001-13008.
- Simonyan K., Zisserman A. Very deep convolutional networks for large-scale image recognition // arXiv preprint arXiv:1409.1556. - 2014.
- Cloud TPU [Электронный ресурс]. - URL: https://cloud. google.com/tpu (дата обращения: 05.09.2020).
- TensorFlow [Электронный ресурс]. - URL: https://www.tensorflow.org/ (дата обращения: 05.09.2020).
- Kingma D.P., Ba J. Adam: A method for stochastic optimization // arXiv preprint arXiv:1412.6980. - 2014.
- Smith L.N. Cyclical learning rates for training neural networks // IEEE Winter Conference on Applications of Computer Vision (WACV). - IEEE. - 2017. - P. 464-472.
- ML for Mobile and Edge Devices - TensorFlow Lite [Электронный ресурс]. - URL: https://www.tensorflow.org/lite (дата обращения: 05.09.2020).
- Netron [Электронный ресурс]. - URL: https://lutzroeder.github.io/ netron/ (дата обращения: 05.09.2020).
- Post-training integer quantization [Электронный ресурс]. - URL: https://www.tensorflow.org/lite/performance/post_training_integer_ quant (дата обращения: 05.09.2020).
- Post-training float16 quantization [Электронный ресурс]. - URL: https://www.tensorflow.org/lite/performance/post_training_float16_quant (дата обращения: 05.09.2020).
Статистика
Просмотры
Аннотация - 65
PDF (Russian) - 33
Ссылки
- Ссылки не определены.