В FriendliAI нашим главным приоритетом является предоставление системы обслуживания с максимальной производительностью. Мы рады представить новую функцию, которая повышает производительность обслуживания за счет использования целочисленного квантования, созданного поверх PeriFlow Serving Engine.

Что такое целочисленное квантование?

Большие языковые модели содержат огромное количество операций с более чем миллиардами параметров. Среди операций «матмуль» (умножение матриц) занимает большую часть, что приводит к значительным накладным расходам во времени вычислений. Чтобы решить эту проблему, современные графические процессоры NVIDIA оснащены тензорными ядрами для операций Matmul, которые могут обеспечить скорость обработки на порядок выше по сравнению с графическими процессорами без тензорных ядер [1].

Чтобы максимизировать производительность, последние архитектуры графических процессоров, такие как Turing, Ampere и Hopper, оснащены тензорными ядрами, способными умножать целочисленные матрицы, по крайней мере, в два раза быстрее, чем операции float16 matmul. Используя преимущество этого аппаратного усовершенствования, недавние исследования были сосредоточены на использовании небольших целочисленных типов для matmul, таких как int8, int4 или даже двоичных представлений. Этот метод, известный как целочисленное квантование, включает в себя представление тензоров веса и активации с более узкими целочисленными типами, чтобы использовать эффективные вычислительные возможности целочисленного matmul.

Среди различных схем квантования наша команда уделяет особое внимание квантованию int8, которое эффективно снижает задержку, необходимую для ядер CUDA, сохраняя при этом точность модели.

Производительность квантования int8

Чтобы оценить производительность, мы сравнили среднюю сквозную задержку модели OPT-13B [2] в режимах int8 и fp16 на графическом процессоре NVIDIA A100 80 ГБ. На приведенном выше графике показано, что квантование int8 обеспечивает в 2,46 раза большую задержку по сравнению с режимом fp16 при работе с тем же уровнем пропускной способности.

Этот эксперимент предлагает ценную информацию о повышении производительности нашего двигателя. В дополнение к нашему PeriFlow Serving Engine, производительность которого уже превосходит существующие системы обслуживания, мы можем использовать описанную схему квантования. Для сравнения с другими системами обслуживания на различных LLM, пожалуйста, обратитесь к следующим ссылкам: #1, #2, #3.

Устранение падения точности при квантовании

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

Одним из примечательных методов является SmoothQuant [3], который решает проблему квантования тензоров активации, перенося сложность на весовые матрицы. Этот подход эффективно «сглаживает» выбросы тензоров активации, позволяя безопасно включать их в диапазон квантования.

SmoothQuant демонстрирует свою эффективность в сохранении точности моделей OPT в диапазоне от 1,3 до 175 млрд при квантовании до int8. Это согласуется с нашими собственными оценками точности моделей OPT с квантованием int8 с использованием SmoothQuant на нашем механизме обслуживания PeriFlow.

Краткое содержание

Мы представляем новую функцию, целочисленное квантование, которая значительно повышает производительность и скорость обслуживания LLM. Мы используем SmoothQuant для сохранения точности квантованных моделей. Наша оценка показывает, что при том же уровне пропускной способности квантование int8 обеспечивает в 2,46 раза большую среднюю сквозную задержку по сравнению с режимом fp16.

Для получения дополнительной информации о FriendliAI перейдите по ссылке.
О PeriFlow перейдите по ссылке.

[1] Технический блог NVIDIA, https://developer.nvidia.com/blog/nvidia-ampere-architecture-in-depth/

[2] Чжан, Сьюзан и др. «Опция: открытые предварительно обученные языковые модели преобразователя». препринт arXiv arXiv:2205.01068 (2022 г.)

[3] Сяо, Гуансюань и др. «Smoothquant: точное и эффективное квантование после обучения для больших языковых моделей». Международная конференция по машинному обучению. ПМЛР, 2023 г.