[Модель рассуждений] Поговорите о том, почему квантование может ускорить рассуждения

глубокое обучение
[Модель рассуждений] Поговорите о том, почему квантование может ускорить рассуждения

欢迎关注我的公众号 [极智视界],获取我的更多笔记分享

O_o>_<  o_OO_o~_~o_O

  В этой статье в основном обсуждается, почему квантование может ускорить вывод модели.

  Несколько статей, связанных с количественным определением модели, были написаны ранее: "[Обоснование модели] Расскажите о нескольких количественных стратегиях: MinMax, KLD, ADMM, EQ.", "[Модельное рассуждение] Говоря о количественной организации моделей", "[Обоснование модели] Расскажите о методе квантования нелинейной функции активации.", вы можете обратиться к соответствующим знаниям, чтобы узнать об этом. Здесь мы в основном обсуждаем, почему квантование может ускорить вывод модели.

  Квантование часто включает в себя процесс квантования и деквантования.На самом деле, для неквантованных потоков квантование увеличит количество операторов, поэтому причина ускорения квантования может быть не такой простой, как предполагалось. Здесь слой Conv используется для иллюстрации разницы в скорости между квантованием и отсутствием квантования.

  Предполагая, что входной канал — C1, выходной — C2HW, а размер ядра свертки — K, следующие тактовые циклы различных типов рабочих инструкций:

  Если предположить, что неквантованный оператор Conv использует точность fp16 для вывода, потребление времени будет следующим:

Сначала игнорируйте слой Quantize и слой Dequantize и вычисляйте время, затрачиваемое после квантования на свертку int8 отдельно.Следует отметить, что для обеспечения того, чтобы операция не переполнялась, int8 не всегда может использоваться для операции свертки, а промежуточный результаты вычислений иногда необходимо использовать тип данных int16 или даже int32 для сохранения. Следующий n1 указывает, сколько раз нужно выполнить умножение и сложение int8 без переполнения типа int16, а n2 указывает, сколько раз умножение и сложение int16 не приводит к переполнению типа int32:

Видно, что когда 2 раза выполняется умножение и сложение int8, данные, хранящиеся в регистре int16 исходного промежуточного результата, должны накапливаться в регистре int32; для сложений n2 int16 данные, изначально хранившиеся в регистре int32 промежуточный результат необходимо накапливать в регистре int64. Следовательно, можно получить следующее квантованное время свертки:

  Вышеупомянутая свертка еще не добавила операцию переквантования, и время операции выглядит следующим образом:

  Операция свертки после окончательного квантования занимает следующее время:

  Вычислительная мощность операций с целыми числами часто в два раза выше, чем у операций с плавающей запятой.Что касается циклов команд, цикл операций с целыми числами составляет четверть цикла операций с плавающей запятой. С точки зрения упомянутого выше времени цикла свертки до и после квантования действительно имеет место улучшение скорости.

  Затем мы рассматриваем возможность добавления слоя Quantize и слоя Dequantize, что требует введения следующих тактовых циклов инструкций:

  Мы можем легко получить общую трудоемкость после добавления слоя Quantize и Dequantize следующим образом:

Из приведенной выше формулы видно, что после добавления квантования и обратного квантования необходимо задействовать такты многих других инструкций, поэтому нельзя напрямую судить, будет ли это быстрее неквантованной свертки. рассматривается в сочетании с различными средами развертывания логических выводов.

На самом деле, для развертывания количественных моделей причина, по которой большинство ситуаций может быть ускорена, заключается не только в укороченном цикле инструкций операций преобразования с плавающей запятой в целое число, но и во многих чипах, специально разработанных для развертывания нейронной сети. Блок. Кроме того, некоторое оборудование не имеет арифметического модуля с плавающей запятой, и в настоящее время для развертывания можно использовать количественную модель.

  Выше были проанализированы причины количественного ускорения с точки зрения сокращения цикла обучения.Количественное ускорение является систематическим проектом, и необходимо учитывать множество факторов.


【Передача по общему номеру】 "[Модель рассуждений] Поговорите о том, почему квантование может ускорить рассуждения