SageAttention2: Технический отчет
Хотя квантование для линейных слоев широко используется, его применение для ускорения процесса внимания остается ограниченным. SageAttention использует умножение матриц на 8 бит, умножение матриц на 16 бит с аккумулятором на 16 бит и методы повышения точности, реализуя точное и ускоренное на 2 раза ядро по сравнению с FlashAttention2. Для дальнейшего улучшения эффективности вычислений внимания при сохранении точности мы предлагаем SageAttention2, который использует значительно более быстрое умножение матриц на 4 бита (Matmul) вместе с дополнительными методами повышения точности. Во-первых, мы предлагаем квантование матриц (Q, K) до INT4 на уровне warp и квантование матриц (widetilde P, V) до FP8. Во-вторых, мы предлагаем метод для сглаживания Q и V, повышая точность внимания с INT4 QK и FP8 PV. В-третьих, мы анализируем точность квантования по временным шагам и слоям, затем предлагаем адаптивный метод квантования для обеспечения метрик от начала до конца по различным моделям. Операции в секунду (OPS) SageAttention2 превосходят FlashAttention2 и xformers примерно на 3 и 5 раз на RTX4090 соответственно. Всеобъемлющие эксперименты подтверждают, что наш подход приводит к незначительным потерям метрик от начала до конца на разнообразных моделях, включая те, что используются для обработки больших языковых моделей, генерации изображений и видео. Код доступен по адресу https://github.com/thu-ml/SageAttention.