Оптимизация использования памяти в больших языковых моделях с помощью постраничного внимания

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

5 min readТехнологии

Большие языковые модели (LLM) сталкиваются с серьезными ограничениями из-за ограничений памяти GPU, поскольку каждая запрос требует кэш ключ-значение (KV) для данных токенов. Традиционное выделение памяти резервирует большой блок на основе максимальной длины последовательности, что приводит к значительному количеству неиспользуемой памяти и ограничивает количество параллельных запросов. Постраничное внимание решает эту проблему, разбивая кэш KV на более мелкие, гибкие страницы, которые выделяются по мере необходимости, аналогично системам виртуальной памяти. Этот метод позволяет нескольким запросам с одинаковыми начальными подсказками делить память до тех пор, пока их выводы не начнут расходиться, что значительно улучшает эффективность использования памяти и пропускную способность с минимальными накладными расходами.

В нашем исследовании мы моделируем базовый распределитель кэша KV и реализуем постраничное внимание с использованием таблицы блоков и совместного использования префикса по копированию (CoW). Мы анализируем использование памяти при различных размерах пакетов, показывая, что традиционные методы могут значительно тратить ресурсы GPU. Например, наивный подход может зарезервировать 1024 МБ на запрос, но использовать только 250 МБ, что приводит к значительным неэффективностям. В отличие от этого, дизайн постраничного внимания позволяет динамическое выделение памяти, значительно улучшая общую производительность и использование ресурсов.

Технологии